网站大量收购独家精品文档,联系QQ:2885784924

蚁群算法求函数最大值程序.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

蚁群算法求函数最大值程序

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)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

%%%%%%%%%%%%%%%%%%%%%%越界处理

iftemp1lower_1

temp1=lower_1;

end

iftemp1upper_1

temp1=upper_1;

end

iftemp2lower_2

temp2=lower_2;

end

iftemp2upper_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);

文档评论(0)

159****1944 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档