蚁群算法代码(求函数最值)

上传人:小** 文档编号:55437467 上传时间:2018-09-29 格式:DOC 页数:4 大小:17.38KB
返回 下载 相关 举报
蚁群算法代码(求函数最值)_第1页
第1页 / 共4页
蚁群算法代码(求函数最值)_第2页
第2页 / 共4页
蚁群算法代码(求函数最值)_第3页
第3页 / 共4页
蚁群算法代码(求函数最值)_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《蚁群算法代码(求函数最值)》由会员分享,可在线阅读,更多相关《蚁群算法代码(求函数最值)(4页珍藏版)》请在金锄头文库上搜索。

1、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); Endfunction 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; % for i=1 : ant X(i,1)=(lower_1

2、+(upper_1-lower_1)*rand); %随机设置蚂蚁的初值位置 X(i,2)=(lower_2+(upper_2-lower_2)*rand); tau(i)=F(X(i,1),X(i,2); %第 i 只蚂蚁的信息量 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); %eval 函数,将字符串内的内容执行再赋给对象 fig

3、ure(1); mesh(x,y,z); %网格图 hold on; plot3(X(:,1),X(:,2),tau,k*) %蚂蚁初始位置 hold on; text(0.1,0.8,-0.1,蚂蚁的初始分部位置) xlabel(x);ylabel(y);zlabel(f(x,y); for t=1:times % 第 t 次移动lamda=1/t; %步长系数,随移动次数增大而减少tau_best(t),bestindex=max(tau); %第 t 次移动的最优值及其位置for i=1:ant %第 i 只蚂蚁p(t,i)=(tau(bestindex)-tau(i)/tau(best

4、index); %最优值与第 i 只蚂蚁的值 的差比% 计算状态转移概率 end for i=1:ant if p(t,i)upper_1 temp1=upper_1; end if temp2upper_2 temp2=upper_2; end % if F(temp1,temp2)F(X(i,1),X(i,2) % 判断蚂蚁是否移动 X(i,1)=temp1; X(i,2)=temp2; end end for i=1:ant tau(i)=(1-rou)*tau(i)+F(X(i,1),X(i,2); % 更新信息量 end end figure(2); mesh(x,y,z); hol

5、d on; x=X(:,1);y=X(:,2); plot3(x,y,eval(f),k*) hold on; 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); endfunction F1=F1(x) %目标函数 F1=x.2-2*x+1; End%蚁群算法求解一元函数 F1=x2-2*x+

6、1 close clear clc ant=10; times=40; rou=0.8; p0=0.2; lb=-2; ub=2; step=0.05; x=lb:0.05:ub;for i=1:antX(i)=lb+(ub-lb)*rand;tau(i)=F1(X(i);endfigure(1);plot(x,F1(x);hold onplot(X,tau,r*);for kk=1:10for t=1:timeslamda=1/t;%转移次数的倒数tau_best(t),bestindex=min(tau);for i=1:antp(t,i)=(tau(bestindex)-tau(i)/tau(bestindex);%转移概率(最优-蚂蚁 i)/最优%此种概率选择易陷入局部最优解endfor i=1:antif p(t,i)ubtemp=ub;endif F1(temp)F1(X(i)X(i)=temp;endendfor i=1:anttau(i)=(1-rou)*tau(i)+F1(X(i);endendendfigure(2);plot(x,F1(x);hold onx=X(i);y=tau(i);plot(x,y,g*);x1=X(length(X)y1=tau(length(tau)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号