您现在的位置:首页 >> 智能优化 >> 内容

基于GA遗传优化的CDVRP,CVRP,DVRP,TSP以及VRPTW常见路径优化问题求解matla

时间:2023/3/8 23:29:23 点击:

  核心提示:A460,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJaVlpZw

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

       遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。

4.部分源码

%% TSP

addpath 'TSP\';

%初始化

CityNum=size(City,1)-1;    %需求点个数

 

NIND=60;       %种群大小

MAXGEN=100;     %最大遗传代数

GGAP=0.9;       %代沟概率

Pc=0.9;         %交叉概率

Pm=0.05;        %变异概率

mindis = zeros(1,MAXGEN);

bestind = zeros(1,CityNum+2);

 

%初始化种群

Chrom=InitPop(NIND,CityNum);

 

%迭代

gen=1;

while gen <= MAXGEN

 

    [ttlDistance,FitnV]=Fitness(Distance,Chrom);  

    [mindisbygen,bestindex] = min(ttlDistance);

    

    mindis(gen) = mindisbygen; 

bestind = Chrom(bestindex,:); 

    

    %选择

    SelCh=Select(Chrom,FitnV,GGAP);

    %交叉操作

    SelCh=Crossover(SelCh,Pc);

    %变异

    SelCh=Mutate(SelCh,Pm);

    SelCh=Reverse(SelCh,Distance);

    Chrom=Reins(Chrom,SelCh,FitnV);

    gen=gen+1;

end

 

%历史最短距离

mindisever = mindis(MAXGEN);  

bestroute = bestind; 

disp('TSP最优路径')

disp('TSP最优路径')

disp('TSP最优路径')

 

TextOutput(bestroute,mindisever) 

 

figure

subplot(121)

plot(mindis,'LineWidth',2) 

xlim([1 gen-1])

set(gca, 'LineWidth',1)

xlabel('Num of Iterations')

ylabel('Min Distance(km)')

title('TSP')

 

subplot(122)

DrawPath(bestroute,City)

 

 

Err1=mindis;

 

 

%% DVRP

addpath 'DVRP\';

%初始化

CityNum=size(City,1)-1;    

NIND=60;       %种群大小

MAXGEN=100;     %最大遗传代数

GGAP=0.9;       %代沟概率

Pc=0.9;         %交叉概率

Pm=0.05;        %变异概率

mindis = zeros(1,MAXGEN);

bestind = zeros(1,CityNum*2+1);

%初始化

Chrom=InitPop(NIND,CityNum,Distance,Travelcon);

...........................................................

 

 

%% CVRP

addpath 'CVRP\';

 

%初始化

CityNum=size(City,1)-1;    %需求点个数

NIND=60;       %种群大小

MAXGEN=100;     %最大遗传代数

GGAP=0.9;       %代沟概率

Pc=0.9;         %交叉概率

Pm=0.05;        %变异概率

mindis = zeros(1,MAXGEN);

bestind = zeros(1,CityNum*2+1);

%初始化

Chrom=InitPop(NIND,CityNum,Demand,Capacity);

.....................................................................

 

 

figure

subplot(121)

plot(mindis,'LineWidth',2) %展示目标函数值历史变化

xlim([1 gen-1]) %设置 x 坐标轴范围

set(gca, 'LineWidth',1)

xlabel('Iterations')

ylabel('Min Distance(km)')

title('CVRP')

 

subplot(122)

DrawPath(bestroute,City)

 

 

Err3=mindis;

 

 

 

%% CDVRP

addpath 'CDVRP\';

%初始化问题参数

CityNum=size(City,1)-1;  

 

%遗传参数

NIND=60;       %种群大小

MAXGEN=100;     %最大遗传代数

GGAP=0.9;       %代沟概率

Pc=0.9;         %交叉概率

Pm=0.05;        %变异概率

 

mindis = zeros(1,MAXGEN);

bestind = zeros(1,CityNum*2+1);

 

%初始化种群

Chrom=InitPop(NIND,CityNum,Distance,Demand,Travelcon,Capacity);

.............................................

 

 

figure

subplot(121)

plot(mindis,'LineWidth',2)

xlim([1 gen-1]) 

xlabel('Iterations')

ylabel('Min Distance(km)')

title('CDVRP')

subplot(122)

DrawPath(bestroute,City)

 

 

Err4=mindis;

 

 

 

%% VRPTW

addpath 'VRPTW\';

%初始化问题参数

CityNum=size(City,1)-1;    

%遗传参数

NIND=60;        %种群大小

MAXGEN=100;     %最大遗传代数

GGAP=0.9;       %代沟概率

Pc=0.9;         %交叉概率

Pm=0.05;        %变异概率

............................................................

figure

subplot(121)

plot(mindis,'LineWidth',2) %展示目标函数值历史变化

xlim([1 gen-1]) %设置 x 坐标轴范围

set(gca, 'LineWidth',1)

xlabel('Iterations')

ylabel('Min Distance(km)')

title('VRPTW')

subplot(122)

DrawPath(bestroute,City)

disp('VRPTW最优路径')

disp('VRPTW最优路径')

disp('VRPTW最优路径')

fprintf('总路程 = %s km \n',num2str(mindisever))

TextOutput(bestroute,Distance,TravelTime,Demand,TimeWindow,Capacity)  %显示最优路径

 

 

Err5=mindis;

 

figure

plot(Err1,'LineWidth',2) 

hold on

plot(Err2,'LineWidth',2) 

hold on

plot(Err3,'LineWidth',2) 

hold on

plot(Err4,'LineWidth',2) 

hold on

plot(Err5,'LineWidth',2) 

hold on

xlim([1 gen-1]) 

xlabel('Iterations')

ylabel('Min Distance(km)')

legend('TSP','DVRP','CVRP','CDVRP','VRPTW')

A460

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168