蚁群算法搜索个体适应度值
clc
clear
load data z information?
%起點坐標
starty=5;
starth=3;
%終點坐標
endy=8;
endh=5;
n=10;
m=21;
Best=[];
[path,information]=searchpath(n,m,information,z,starty,starth,endy,endh); ?%路徑尋找
fitness=CacuFit(path); ? ?%適應度計算
[bestfitness,bestindex]=min(fitness); ? ? ? ? ? %最佳適應度
bestpath=path(bestindex,:);
Best=[Best;bestfitness];
% %更新信息素
rou=0.2;
cfit=100/bestfitness;
k=2;
for i=2:m-1
? ? information(k,bestpath(i*2-1),bestpath(i*2))=(1-rou)*information(k,bestpath(i*2-1),bestpath(i*2))+rou*cfit;
end
? ??
? ??
for kk=1:1:100
? ? kk
? ? [path,information]=searchpath(n,m,information,z,starty,starth,endy,endh); ?%路徑尋找
? ? fitness=CacuFit(path); ? ?%適應度計算
? ? [newbestfitness,newbestindex]=min(fitness); ? ? ? ? ? %最佳適應度
? ? if newbestfitness<bestfitness
? ? ? ? bestfitness=newbestfitness;
? ? ? ? bestpath=path(newbestindex,:);
? ? end
? ??
? ? Best=[Best;bestfitness];
? ??
? ? % %更新信息素
? ? rou=0.2;
? ? cfit=100/bestfitness;
? ? k=2;
? ? for i=2:m-1
? ? ? ? information(k,bestpath(i*2-1),bestpath(i*2))=(1-rou)*information(k,bestpath(i*2-1),bestpath(i*2))+rou*cfit;
? ? end
? ??
? ??
end
for i=1:21
? ? a(i,1)=bestpath(i*2-1);
? ? a(i,2)=bestpath(i*2);
end
k=1:21
figure(1)
x=1:21;
y=1:21;
[x1,y1]=meshgrid(x,y);
mesh(x1,y1,z)
load data z information?
axis([1,21,1,21,0,2000])
hold on
plot3(k',a(:,1)',a(:,2)'*200,'--o')
figure(2)
plot(Best)
title('最佳個體適應度變化趨勢')
xlabel('迭代次數')
ylabel('適應度值')
?
D127
?
總結
以上是生活随笔為你收集整理的蚁群算法搜索个体适应度值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Markov的仿真
- 下一篇: Flocking for Multi-A