蚁群算法求函数最大值的程序_第1页
蚁群算法求函数最大值的程序_第2页
蚁群算法求函数最大值的程序_第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; %for i=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);endstep=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);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 lamda=1/t; tau_best(t),bestindex=max(tau); for i=1:ant p(t,i)=(tau(bestindex)-tau(i)/tau(bestindex); % 计算状态转移概率 end for i=1:ant if p(t,i)p0 %局部搜索 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 % 越界处理 if temp1upper_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); % 更新信息量 endend figure(2);mesh(x,y,z);hold 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);function

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论