蚁群算法求函数最大值的程序.doc
- 文档编号:339808
- 上传时间:2022-10-09
- 格式:DOC
- 页数:3
- 大小:19KB
蚁群算法求函数最大值的程序.doc
《蚁群算法求函数最大值的程序.doc》由会员分享,可在线阅读,更多相关《蚁群算法求函数最大值的程序.doc(3页珍藏版)》请在冰豆网上搜索。
function[maxx,maxy,maxvalue]=antcolony
%蚁群算法求函数最大值的程序
%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化
ant=200;%蚂蚁数量
times=50;%蚂蚁移动次数
rou=0.8;%信息素挥发系数
p0=0.2;%转移概率常数
lower_1=-1;%设置搜索范围
upper_1=1;%
lower_2=-1;%
upper_2=1;%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fori=1:
ant
X(i,1)=(lower_1+(upper_1-lower_1)*rand);
%随机设置蚂蚁的初值位置
X(i,2)=(lower_2+(upper_2-lower_2)*rand);
tau(i)=F(X(i,1),X(i,2));
end
step=0.05;
f='-(x.^2+2*y.^2-0.3*cos(3*pi*x)-0.4*cos(4*pi*y)+0.7)';
[x,y]=meshgrid(lower_1:
step:
upper_1,lower_2:
step:
upper_2);
z=eval(f);
figure
(1);
mesh(x,y,z);
holdon;
plot3(X(:
1),X(:
2),tau,'k*')
holdon;
text(0.1,0.8,-0.1,'蚂蚁的初始分部位置')
xlabel('x');ylabel('y');zlabel('f(x,y)');
fort=1:
times
lamda=1/t;
[tau_best(t),bestindex]=max(tau);
fori=1:
ant
p(t,i)=(tau(bestindex)-tau(i))/tau(bestindex);
%计算状态转移概率
end
fori=1:
ant
ifp(t,i) temp1=X(i,1)+(2*rand-1)*lamda; temp2=X(i,2)+(2*rand-1)*lamda; else%全局搜索 temp1=X(i,1)+(upper_1-lower_1)*(rand-0.5); temp2=X(i,2)+(upper_2-lower_2)*(rand-0.5); end %%%%%%%%%%%%%%%%%%%%%%越界处理 iftemp1 temp1=lower_1; end iftemp1>upper_1 temp1=upper_1; end iftemp2 temp2=lower_2; end iftemp2>upper_2 temp2=upper_2; end %%%%%%%%%%%%%%%%%%%%%%% ifF(temp1,temp2)>F(X(i,1),X(i,2)) %判断蚂蚁是否移动 X(i,1)=temp1; X(i,2)=temp2; end end fori=1: ant tau(i)=(1-rou)*tau(i)+F(X(i,1),X(i,2)); %更新信息量 end end figure (2); mesh(x,y,z); holdon; x=X(: 1);y=X(: 2); plot3(x,y,eval(f),'k*') holdon; text(0.1,0.8,-0.1,'蚂蚁的最终分布位置') xlabel('x');ylabel('y'),zlabel('f(x,y)'); [max_value,max_index]=max(tau); maxx=X(max_index,1); maxy=X(max_index,2); maxvalue=F(X(max_index,1),X(max_index,2)); function[F]=F(x1,x2)%目标函数 F=-(x1.^2+2*x2.^2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*x2)+0.7);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 函数 最大值 程序