%D是距离矩阵,n为种群个数
%C为停止代数,遗传到第 C代时程序停止,C的具体取值视问题的规模和耗费的时间而定
%m为适值淘汰加速指数,最好取为1,2,3,4,不宜太大
%交叉概率Pc,变异概率Pm
%R为最短路径,Rlength为路径长度
function [R,Rlength]=geneticVRP(D,n,C,m,Pc,Pm)
[N,NN]=size(D);%(31*31)
farm=zeros(n,N);%用于存储种群
for i=1:n
farm(i,:)=randperm(N);
end
R=farm(1,:);%一个随机解(个体)
len=zeros(n,1);%存储路径长度
fitness=zeros(n,1);%存储适配值
counter=0;
while counter<C
for i=1:n
len(i,1)=myLength(D,farm(i,:));%计算路径长度
end
%maxlen=max(len);
minlen=min(len);
rr=find(len==minlen);%返回的是在len中路径最短的路径坐标(i,1)
R=farm(rr(1,1),:);%更新最短路径
FARM=farm;%优胜劣汰,nn记录了复制的个数
%=================================================================
% 选择
K=30;
[aa,bb]=size(FARM);
FARM2=FARM;
len2=len;
[len]=sort(len);
for i=1:aa
tt= find(len2==len(i,1));
FARM(i,:)=FARM2(tt(1,1),:);
end
for i=1:K
j=aa+1-i;
FARM(j,:)=FARM(i,:);
end
%=================================================================
% 交叉操作
[aa,bb]=size(FARM);
FARM2=FARM;
for i=1:2:aa
if Pc>rand&&i<aa %交叉概率Pc
A=FARM(i,:);
B=FARM(i+1,:);
[A,B]=intercross(A,B);
FARM(i,:)=A;
FARM(i+1,:)=B;
end
end
%交叉检验 (可省去)
for i=1:aa
if myLength(D,FARM(i,:))>myLength(D,FARM2(i,:))
FARM(i,:)=FARM2(i,:);
end
end
clear FARM2
%=================================================================
% 变异
[aa,bb]=size(FARM); %aa=nn2
FARM2=FARM;
for i=1:aa
if Pm>=rand
FARM(i,:)=mutate(FARM(i,:));
end
end
%变异检验(可省略)
for i=1:aa
if myLength(D,FARM(i,:))>myLength(D,FARM2(i,:))
FARM(i,:)=FARM2(i,:);
end
end
clear FARM2
%=================================================================
%群体的更新
FARM=[R;FARM];%将随机产生的n-aa个体加入从后面种群,将上次迭代的最优解从前面加入种群
[aa,bb]=size(FARM);
%保持种群规模为n
if aa>n
FARM=FARM(1:n,:);
end
%更新farm
farm=FARM;
clear FARM
%更新迭代次数
counter=counter+1 ;
end
%结果输出
R
Rlength=myLength(D,R)%结果输出
MATLAB-遗传算法-TSP旅行商问题程序代码
5星 · 超过95%的资源 需积分: 1 173 浏览量
2015-12-27
22:58:52
上传
评论 3
收藏 6KB ZIP 举报
-hantao-
- 粉丝: 69
- 资源: 8
最新资源
- Linux知识体系复习
- 东华深度学习课后习题全部
- 基于STM32+ESP8266+OneNET平台的环境监测报警系统设计.rar
- 基于Django+Django -Rest-Framework实现的在线考试系统
- mt7628 breed 固件
- 基于STM32F103+ESP8266+机智云的室内室外各种环境监测系统设计
- 基于STM32+MPU9250的小型四轴飞行器设计-毕设开题报告&PPT&部分回答问题.rar
- 基于STM32+NB-IOT的风机环境监控系统设计
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的节能断电保护电路设计
- 基于python+django+vue开发的外卖点餐系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈