📄 genetictsp.m
字号:
%TSP问题基本遗传算法通用matlab程序
%D是距离矩阵,参数a是20城市的坐标,程序包中以带有,可更改
%n为种群个数
%C为停止代数,遗传到第 C代时程序停止
%p为交叉率,q为变异率
%n,C,p,q需设定
%R为最短路径,Rlength为路径长度
function [R,Rlength]=geneticTSP(D,n,C,p,q,a)
[N,NN]=size(D);
farm=initiate(n,N);%产生初始种群
%初始种群参数计算
len=zeros(n,1);%存储路径长度
fitness=zeros(n,1);%初始化适应度函数矩阵
minlen=zeros(1,C);
for i=1:n
len(i,1)=myLength(D,farm(i,:));%计算路径长度
end
minlen=min(len);
mindis=minlen;
rr=find(len==minlen);
R=farm(rr(1,1),:);
%种群迭代
for counter=1:C
for i=1:n
len(i,1)=myLength(D,farm(i,:));%计算路径长度
end
maxlen=max(len);
minlen=min(len);
fitness=fit(len,maxlen,minlen);%计算归一化适应值
if minlen<mindis
rr=find(len==minlen);
R=farm(rr(1,1),:);%更新最短路径
mindis=minlen;
end
subplot(1,2,1);
scatter(counter,mindis);
hold on
%选择操作
selection=zeros(n,N);
selection=select(farm,fitness,n);
%交叉操作
farm1=zeros(n,N);
farm1=intercross1(selection,n,N,p);
%变异操作
farm2=zeros(n,N);
farm2=mutation(farm1,n,q,N);
%更新种群
farm=farm2;
end
Rlength=myLength(D,R);
subplot(1,2,2);
plotaiwa(a,R);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -