⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 遗传算法tsp问题程序.txt

📁 自己根据其他例子改编的MATLAB的GA工具箱实现TSP的程序
💻 TXT
字号:
%TSP问题的解法。包含4部分。本部分为主程序;另外roadlength.m为路径长度函数;roadlength.m为最优路径的函数;还有d.mat为距离矩阵。
NIND=400;                     %个体数目
MAXGEN=100;                   %最大遗传代数
N=16;                         %变量的维数(中间节点的个数)  
PRECI=10;                    %变量的二进制位数
GGAP=0.9;                    %代沟
trace=zeros(MAXGEN,2);       %寻优结果的初始值
FieldD=[rep([PRECI],[1,N]);rep([-10;10],[1,N]);rep([1;0;1;1],[1,N])];    %区域描述器
Chrom=crtbp(NIND,N*PRECI);     %初始种群
gen=0;                         %代计数器
variable=bs2rv(Chrom,FieldD);  %计算初始种群的十进制转换
ObjV=roadlength(variable,N,NIND,d);   %计算目标函数值
while gen<MAXGEN,
FitnV=ranking(ObjV);          %分配适应度值
SelCh=select('sus',Chrom,FitnV,GGAP);%选择
SelCh=recombin('xovsp',SelCh,0.7);         %重组
SelCh=mut(SelCh);                          %变异
variable=bs2rv(SelCh,FieldD);              %子代个体的十进制转换
ObjVSel=roadlength(variable,N,size(SelCh,1),d); %计算子代的目标函数值
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代的新种群
gen=gen+1;    %代计数器增加
%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群序号
[Y,I]=min(ObjV),hold on;
trace(1,gen)=min(ObjV);                          %遗传算法性能跟踪
trace(2,gen)=sum(ObjV)/length(ObjV);
end
variable=bs2rv(Chrom,FieldD);                    %最优个体的十进制转换
[s,var,D]=roadlength1(variable(I,:),N,d);
var
D
s
plot(trace(1,:)');
hold on;
plot(trace(2,:)','-.');grid;
legend('解的变化','种群均值的变化')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -