




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流人工鱼群算法matlab实现.精品文档.function lhl_AFclc;clear all; close all;format longVisual = 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
2、)+a1; %在-1010之间,随机生成50个数;X2 = 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); % 初始公告板记录,最大值位置;
3、maxY = w; % 初始化公告板记录,最大值;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(k<m) 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)<Visual) % norm函数求向量XXX-XX的范数,由于二维向量,2或者省略都可以 nf1 = nf1+1; Xc = Xc+XX_1; end end Xc=Xc-XX; %需要去除XX本身; nf1=nf1-1; Xc = Xc/nf1;
5、%此时Xc表示XX感知范围其他伙伴的中心位置; if(maxf(Xc)/nf1 > delta*maxf(XX) && (norm(Xc-XX)=0) XXR1=rand*Step*(Xc-XX)/norm(Xc-XX); XXnext1=XX+XXR1; if(XXnext1(1) > b1) XXnext1(1) = b1; end if(XXnext1(1) < a1) XXnext1(1) = a1; end if(XXnext1(2) > b2) XXnext1(2) = b2; end if(XXnext1(2) < a2) XXnex
6、t1(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_2-XX)<Visual) && (
7、maxf(XX_2)>temp_maxY) temp_maxX = XX_2; temp_maxY = maxf(XX_2); end end nf2=0; for j = 1:N XX_2 = X(j,1),X(j,2); if(norm(XX_2-temp_maxX)<Visual) nf2=nf2+1; end end nf2=nf2-1;%去掉他本身 if(temp_maxY/nf2)>delta*maxf(XX) && (norm(temp_maxX-XX)=0) %附近有Yj最大的伙伴,并且不太拥挤 XXR2=rand*Step*(temp_max
8、X-XX)/norm(temp_maxX-XX);%rand不是随机反向,是随机步长 XXnext2 = XX+XXR2; if(XXnext2(1) > b1) XXnext2(1) = b1; end if(XXnext2(1) < a1) XXnext2(1) = a1; end if(XXnext2(2) > b2) XXnext2(2) = b2; end if(XXnext2(2) < a2) XXnext2(2) = a2; end label_follow =1; temp_y_XXnext2=maxf(XXnext2); else label_foll
9、ow =0; temp_y_XXnext2=-inf; end %第三种行为:觅食行为:与前两个行为不同,觅食和随机行为都是找附近的状态,而不是找附近的同伴%觅食和随机行为可能出现超出约束,所以,XX_3和XX_4是不一样的%觅食行为和群聚行为、追尾行为是不一样的,觅食行为是一种根据状态来判断的行为,群聚和追尾是根据伙伴来判断的行为 label_prey =0; %判断觅食行为是否找到优于当前的状态 for j = 1:Try_number R1V=Visual*(-1+2*rand(2,1)'); XX_3 = XX+R1V; if(XX_3(1) > b1) % 下面这四个是
10、一套,如果超出约束条件,就选值为边界条件 XX_3(1) = b1; end if(XX_3(1) < a1) XX_3(1) = a1; end if(XX_3(2) > b2) XX_3(2) = b2; end if(XX_3(2) < a2) XX_3(2) = a2; end if(maxf(XX)<maxf(XX_3) XXR3=rand*Step*(XX_3-XX)/norm(XX_3-XX); XXnext3 = XX+XXR3; if(XXnext3(1) > b1) % 下面这四个是一套,如果超出约束条件,就选值为边界条件 XXnext3(1)
11、 = b1; end if(XXnext3(1) < a1) XXnext3(1) = a1; end if(XXnext3(2) > b2) XXnext3(2) = b2; end if(XXnext3(2) < a2) XXnext3(2) = a2; end label_prey =1; break; end end temp_y_XXnext3=max(XXnext3); if(label_prey =0) temp_y_XXnext3=-inf; end%行为选择 if(label_swarm=0) && (label_follow=0) &
12、;& (label_prey =0) %聚群和追尾鱼太多太拥挤,都不发生;觅食觅不到更好的,造成三种行为都不发生。 %如果前三种行为都没有发生出现,必然是发生随机行为 R2S=Step*(-1+2*rand(2,1)'); temp_XX = XX+R2S; if(XX(1) > b1) % 下面这四个是一套,如果超出约束条件,就选值为边界条件 XX(1) = b1; end if(XX(1) < a1) XX(1) = a1; end if(XX(2) > b2) XX(2) = b2; end if(XX(2) < a2) XX(2) = a2; e
13、nd else %三种行为找最优 if(temp_y_XXnext1 > temp_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)' plo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025海运运输合同范本
- 2025翻译服务的合同范本
- 2025标准资产管理合同范本
- 2025年国内贸易公司与外籍船员雇佣合同
- 2025年公司与个人借款合同范本标准版
- 5.2 做自强不惜的中国人 课件 2024-2025学年统编版道德与法治七年级下册
- 《课堂互动》课件
- 《当代临床输血技术》课件
- (63)-考点63 课外-名著阅读
- (10)-专题10 议论文阅读
- 美容师考试相关法律法规的知识要点试题及答案
- 《运动处方》课件-高血压人群运动处方案例
- 人工智能技术与知识产权保护
- 2025年中国数控转台行业市场规模及投资前景预测分析报告
- 建筑工程技术毕业实践报告3000字
- 中国加速康复外科临床实践指南2021
- 山东省大教育联盟学校2024-2025学年高三下学期开学检测化学试题(原卷版+解析版)
- 2025教科版六年级科学下册全册教案【含反思】
- DB43T-稻-再-油生产技术规程
- 中国慢性冠脉综合征患者诊断及管理指南2024版解读
- 课件:《科学社会主义概论(第二版)》第五章
评论
0/150
提交评论