?? 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 + -