人工鱼群算法matlab实现_第1页
人工鱼群算法matlab实现_第2页
人工鱼群算法matlab实现_第3页
人工鱼群算法matlab实现_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、function lhl_AF clc;clear all; close all; format long Visual = 2、5;%人工鱼的感知距离 Step = 0、3;%人工鱼的移动最大步长 N = 10;%人工鱼的数量 Try_number = 50;%迭代的最大次数 delta=0 、618;%拥挤度因子 a1 = -10; b1 = 10; a2 = -10; b2 = 10; d = ;% 存储 50 个状态下的目标函数值 ; k = 0; m = 50;% 迭代次数 X1 = rand(N,1)*(b1-a1)+a1; %在-1010 之间,随机生成 50 个数; X2 =

2、rand(N,1)*(b2-a2)+a2; X = X1 X2; %X = ones(N,2); %for i = 1:N %X(i,1)=-10; %X(i,2)=10; %end % 人工鱼数量 ,两个状态变量 X1 与 X2; %计算 50 个初始状态下的 ; for i = 1:N www = X(i,1),X(i,2); d(i) = maxf(www); end %公告牌用于记录人工鱼个体的历史最好状态 w,i = max(d); % 求出初始状态下的最大值 w 与最大值的位置 i; maxX = X(i,1),X(i,2); % 初始公告板记录 ,最大值位置 ; maxY = w

3、; % 初始化公告板记录 ,最大值 ; figurex = ; figurey = ; figurez = ; figurex(numel(figurex)+1) = maxX(1); % 将 maxX(1)放入 figurex 中, figurey(numel(figurey)+1) = maxX(2); % numel 返 回数 组或 者向量 中所含 元素 的总 数,matlab数组下标默认就是从1开始的 figurez(numel(figurez)+1) = maxY; while(km) for i = 1:N XX = X(i,1),X(i,2); %拿出其中一条鱼来瞧她的四种行为判

4、断 %第一种行为 :聚群行为 :伙伴多且不挤 ,就向伙伴中心位置移动 %群聚行为就是伙伴的中心点 ,凸规划下 ,中心点一定还在约束内 %群聚行为不就是一种maxf(Xc)的比较,就就是瞧伙伴位置 nf1=0; Xc=0; label_swarm =0;%群聚行为发生标志 for j = 1:N XX_1 = X(j,1), X(j,2); if (norm(XX_1-XX) delta*maxf(XX) XXnext1=XX+XXR1; if(XXnext1(1) b1) XXnext1(1) = b1; end if(XXnext1(1) b2) XXnext1(2) = b2; end i

5、f(XXnext1(2) a2) XXnext1(2) = a2; end label_swarm =1; temp_y_XXnext1=maxf(XXnext1); else label_swarm =0; temp_y_XXnext1=-inf; end % %第二种行为 :追尾行为 :周围伙伴有最大值且附近不挤,向其伙伴方向移动 %追尾行为追寻伙伴行为 ,还就是在约束内 temp_maxY = -inf; %按照理论来说这块应该初始化为-无穷小, label_follow =0;% 追尾行为发生标记 for j = 1:N XX_2 = X(j,1),X(j,2); if(norm(XX

6、_2-XX)temp_maxY) temp_maxX = XX_2; temp_maxY = maxf(XX_2); end nf2=0; for j = 1:N XX_2 = X(j,1),X(j,2); if(norm(XX_2-temp_maxX)delta*maxf(XX) %rand 不就是随机反向 就是随机步长 XXnext2 = XX+XXR2; if(XXnext2(1) b1) XXnext2(1) = b1; end if(XXnext2(1) b2) XXnext2(2) = b2; end if(XXnext2(2) b1) % 下面这四个就是一套 ,如果超出约束条件

7、,就选值为边界条件 XX_3(1) = b1; if(XX_3(1) b2) XX_3(2) = b2; end if(XX_3(2) a2) XX_3(2) = a2; end if(maxf(XX) b1) % 下面这四个就是一套 ,如果超出约束条件 ,就选值为边 界条件 XXnext3(1) = b1; end if(XXnext3(1) b2) XXnext3(2) = b2; end if(XXnext3(2) b1) % 下面这四个就是一套 ,如果超出约束条件 ,就选值为边界条件 XX(1) = b1; if(XX(1) b2) XX(2) = b2; end if(XX(2) t

8、emp_y_XXnext2) if(temp_y_XXnext1 temp_y_XXnext3) temp_XX = XXnext1; else temp_XX = XXnext3; end else if(temp_y_XXnext2 temp_y_XXnext3) temp_XX = XXnext2; else temp_XX = XXnext3; end end end XX=temp_XX; X(i,1) = XX(1); X(i,2) = XX(2); % end %至此 ,所有人工鱼 ,完成一次行为判断与移动 %这块就是更新公告牌信息 for i = 1:N XXX = X(i,1),X(i,2); if (maxf(XXX)maxY) maxY = maxf(XXX); maxX = XXX; figurex(numel(figurex)+1) = maxX(1); figurey(numel(figurey)+1) = maxX(2); figurez(numel(figurez)+1) = maxY; end end x=X(:,1); y=X(:,2); plot(x,y,*r); axis(-10 10 -10 10); k = k+1 end maxX maxY plot3(figurex,fig

温馨提示

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

评论

0/150

提交评论