📄 遗传算法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 + -