[CVRP] 용량(최적화 목표: 운송비)으로 차량 경로 계획 문제를 해결하기 위한 matlab 유전자 알고리즘 기반 [Matlab 소스 코드 2776 포함]

⛄1.VRP 소개

1 VRP의 기본 원칙 VRP
(Vehicle Routing Problem)는 운영 연구에서 중요한 연구 문제 중 하나입니다. VRP는 공급자와 K 판매 지점의 경로 계획에 중점을 두며, 일련의 배송 지점과 수령 지점에 대해 특정 차량을 구성 및 호출하고 적절한 주행 경로를 지정하고 차량을 질서 있게 만듭니다. 우리는 특정 목표를 달성하기 위해 노력합니다.
VRP의 그림은 다음과 같습니다.
여기에 이미지 설명 삽입
2 문제 속성 및 일반적인 문제
차량 경로 문제의 특성은 비교적 복잡하며 일반적으로 속성의 네 가지 측면을 포함합니다.
(1) 주소 특성에는 주차장 수, 수요 유형 및 운영이 포함됩니다. 요구 사항.
(2) 차량 특성에는 차량 수량, 적재 용량 제약, 운송 가능한 다양성 제약, 운행 경로 제약 및 작업 시간 제약이 포함됩니다.
(3) 문제의 다른 특성.
(4) 목적 함수는 총 비용을 최소화하거나 최대 운영 비용을 최소화하거나 정시 운영을 최대화하는 것일 수 있습니다.

3 일반적인 문제는 다음 범주로 나뉩니다:
(1) 여행하는 세일즈맨 문제 (2)
CVRP(Vehicle Routing Problem with Capacity Constraints)
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
모델은 계속 개선되고 있습니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
(3) 시간대가 있는 차량 경로 문제
VRP 문제의 지속적인 발전으로 인해 수요 지점이 차량의 도착 시간에 대한 요구 사항을 갖는 것을 고려하여 차량 이동 문제에 시간대 제한을 추가하면 시간대가 있는 차량 경로가 됩니다. 문제(시간 윈도우가 있는 VRP, VRPTW). VRPTW(Vehicle Routing Problem with Time Window)는 VRP에 고객이 방문한 시간대 제약 조건을 추가하는 것입니다. VRPTW 문제에서 비용함수는 여행비용에 더해 특정고객에 대한 조기도착으로 인한 대기시간과 고객이 요구하는 서비스시간도 포함한다. VRPTW에서 VRP 문제의 제약 조건을 충족하는 것 외에도 차량은 수요 지점의 시간 창 제약 조건을 충족해야 하며 수요 지점의 시간 창 제약 조건은 두 가지 유형으로 나눌 수 있습니다. 하나는 하드 시간 창입니다. (Hard Time Window) , Hard Time Window 는 차량이 해당 시간 내에 도착해야 하고, 이른 도착은 기다려야 하며, 늦게 도착하는 것은 거부되는 것을 요구하며, 다른 하나는 Soft Time Window(Soft Time Window)로, 반드시 그럴 필요는 없습니다. 시간 창 안에 도착하지만 시간 창 밖에 도착하면 벌을 받아야 하며, 부드러운 시간 창과 어려운 시간 창의 가장 큰 차이점은 기다림과 거절을 처벌로 대체하는 것입니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
모델 2(2017 A generalized formula for vehicle route problem 참조):
이 모델은 2차원 의사결정 변수
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
(4) 수집 및 분배 문제
(5) 다중 차고 차량 경로 문제
참조(2005 임, 다중- 창고 차량 경로 문제_ Zou Tong, 1996 renaud)
여기에 이미지 설명 삽입
차량이 동질적이기 때문에 여기서 모델링은 변수에 차량의 치수를 포함하지 않습니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
(6) 우선순위 제약 차량 경로 문제
(7) 호환성 제약 차량 경로 문제
(8) 확률적 수요 차량 경로 문제

4 솔루션
(1) 수학적 분석 방법
(2) 인간-컴퓨터 상호 작용 방법 (
3) 그룹화 후 라우팅 방법
(4) 먼저 라우팅 후 그룹화 방법
(5) 저장 또는 삽입 방법
(6) 개선 또는 교환 방법
(7) ) 수학적 프로그래밍 근사화
(8) 휴리스틱 알고리즘

5 VRP와 VRPTW의 비교
여기에 이미지 설명 삽입

⛄ 2. 유전자 알고리즘 소개

1 서론
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
2 유전 알고리즘 이론
2.1 유전 알고리즘의 생물학적 기초
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
2.2 유전 알고리즘의 이론적 기초
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
2.3 유전 알고리즘의 기본 개념 2.4
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
표준 유전 알고리즘
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
2.5 유전 알고리즘의 특징
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
2.6 유전 알고리즘의 개선 방향
여기에 이미지 설명 삽입
3 유전 알고리즘 과정
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
4 주요 매개변수 설명
여기에 이미지 설명 삽입

⛄3. 소스 코드의 일부

% 유전 알고리즘 VRP 문제 Matlab 구현

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%
clear;clc;close all; load location.mat % 데이터베이스에 데이터 배열을 로드합니다. 나중에 데이터를 통해 cost=zeros()를
호출할 수 있습니다 . Sup_Parent=[3 6 7 17 18 5 8 16 19 15 26 25 4 27 29 2 9 14 20 28 30 31 13 22 21 24 11 12 23 10 32 1], G=100, % 인구 크기 부모=rand(G,32), % 무작위 부모 i=1:G %에 대해 30-100 균등 분배 [실제로 부모 G×30 행렬의 각 행은 1 · 30 난수로 채워지고 각 행은 1 · 30] [mn]=sort(Parent(i ,: )); %부모의 i번째 행을 오름차순으로 정렬한 후 그 결과를 m에 저장하고, m에 있는 원소의 원래 첨자를 n번째 부모에 저장 %initialized data Parent(i,:)=n; % 잘못된 첨자를 행에 저장 부모 끝까지 Pc =0.99;% 교차 비율 Pm=0.0001;% 변동 비율 종=[Sup_Parent;Parent];% 모집단 자식=[];% 자손 % fitness_value(4070,1) =0;% 체력 값













%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%

g=input('반복 횟수');
for generation=1:g
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
부모=종;% 자식이 부모가 됨
자식=[];% 자식
% 선택 교차 부모
[ nm]=size(Parent);
% select=rand(1,n)<Pc;
% select=find(select==1);
% cross
for i=1:n
for j=i:n
if i~=j & rand<Pc
jiaocha
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% %%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%
for i=1:n
if rand<Pm
parent=Parent(i,:);% 돌연변이 개체
X=floor(rand 32)+1;
Y=floor(rand
32)+1;
Z=부모(X); % 현재 개별의 X와 Y 요소를 교환합니다. Parent(i,:)
parent(X)=parent(Y);
parent(Y)=Z; %mutation
children= [ children;parent];% 인구에 추가된
돌연변이
개체
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% i=1:m에 대한 자손
적합도 값 계산
[mn]=size(children) ; 1; for L2=1:n if sum(data(children(i,L1:L2),3))>100 %adaptation function; row children(i,L1:L2) of data, element in column 3 and >25 fitness_c L1=L2, L2==n L2=L2+1 인 경우 종료 , fitness_c 종료 종료 종료













⛄4.실적

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

⛄5. Matlab 버전 및 참조

1 매트랩 버전
2014a

2 참고 문헌
[1] Huang Gewen, Cai Yanguang, Qi Yuanhang, Chen Houren, Wang Shihao. 용량 제한이 있는 차량 경로 문제에 대한 적응형 유전 회색 늑대 최적화 알고리즘 [J]. 전자 저널. 2019,47(12)

3 비고
서론 이 부분은 인터넷에서 발췌한 것으로 참고용으로만 사용하시고, 위반 사항이 있는 경우 연락하여 삭제하시기 바랍니다.

추천

출처blog.csdn.net/TIQCmatlab/article/details/131503707