XXnext=XX+rand*Step*(XXj-XX)/norm(XXj-XX);
PP=1;
break
end
endif(~pp)
XXnext=XX+rand*Step;
end
•(3)聚群行为(AF-swarm):
鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群。
鱼聚群时所遵守的规则有三条:
分隔规则:
尽量避免与临近伙伴过于拥挤;对准规则:
尽量与临近伙伴的平均方向一致;内聚规则:
尽量朝临近伙伴的中心移动。
人工鱼Xi搜索其视野内的伙伴数目山及中心位置Xc,若Yc/nf>GYj,表明伙伴中心位置状态较优且不太拥挤,则Xi朝伙伴的中心位置移动一步,否则执行觅食行为:
二艾①UXOJ①U9S-SU0①POOJJVluno」
OA①」d—dv
①so(d33luopubH+一xH1X3.SX(oava0303>QA」uC5>)七
M鬥34ge^士uw^H^x=((_ns>><)N)」9UQoyx報疾赴*頁盘官原«眩匹5>・点4<>二(_|§2>_><之||巨
(E」eMS—dv“Ws4—_eo毛<齐0匸
•糾追尾行为(AF・follow)指鱼向其可视区域
内的最优方向移动的一种行为。
人工鱼Xi搜
索其视野内所有伙伴中的函数最优伙伴Xj,
如果Yj/nf>6Yi,表明最优伙伴的周围不太拥挤,则Xi朝此伙伴移动一步,否则执行觅「食行为。
咚「0/:
■/「
伪代码
floatArtificial_fish:
:
AF_follow(){Ymax=MAX(f(Xmax)),XmaxeN(Xi,Visual);nf=|N(Xmax,Visual)|;
if(Ymax/nf>0Yi&&Y^Ymax)_/Xtna~Xi
Xinext—Xi+Ranaom(step)
else
AF_prey();
returnAF_foodeonsistenee(Xinext);
•(5)公告板:
是记录最优人工鱼个体状态的地方。
每条人工鱼在执彳丁完一次迭代后将自身当前状态与公告板中记录的状态进行比较,如果优于公告板中的状态则用自身状态更新公告板中的状态,否则公告板的状态不变。
当整个算法的迭代结束后,输岀公告板的值,就是我们所求的最优值。
・2.4算法描述
鉴于以上描述的人工鱼群行为,每条人工鱼探索它当前所处的环境状况和伙伴的状况,从而选择一种行为来实际执行,最终人工鱼集结在几个局部极值周围。
一般情况下,在讨论求极大问题时,拥有较大的适应值的人工鱼一般处于值较大的极值域周围,这有助于获取全局极值域,而值较大的极值区域周围一般能集结较多的人工鱼,这有助于判断并获取全局极值。
具体的人工鱼群算法步骤如下:
・Stepl:
确定种群规模N,在变量可行域内随机生成N个个体,设定人工鱼的可视域Visual,步丧step,拥抄度因子0,尝试次数trynumber
Step2:
计算初始鱼群各个体适应值,取最优人工鱼状态及给公告板
Step3:
个体通过觅食,聚群,追尾行为更新自己,生成新鱼群。
Step4:
评价所有个体。
若某个体优于公告板,则将公告板黄薪头J该个祐。
Step5:
当公告板上最优解达到满意误差界内,算法结束,否则转step3o
•然后先进行追尾活动,每条鱼Xi都查看在自己可视域范围内
(即竝离小于visual,visual根据搜索空间的大小而定)的
其它鱼,从中找到适应函数值最小的一个Xj,其适应度函数值记为Yj,Xj周围可视域内的其它个体数量记为nf,若Yj*nf<6*Yi(&为拥挤度因子,此处取1),则表明Xj周围
“食物”较多且不太拥挤,这时Xi对每一个自己和Xj的不同的位重新随机取值(例如Xi为1001,而Xj为1100,那么就对Xi的第2,4位重新随机取值),从而向Xj靠近。
追尾活动若不成功,则进行聚群行为,每条鱼都先找出自己周围可视域内的其它鱼,形成一个小鱼群,然后找出这群鱼的中心点,这里中心点的确定方法是,若鱼群中半数以上的鱼在第i位上取1,则中心点的第i位也为1,否则为0,接
着采用和前面相同方法查看中心点的“食物”是否较多,
是否拥挤,据此决定是否向中心点靠近。
•如果聚群失败就进行觅食活动,“鱼”随机从自身取出visual个位(visual为可视域),对其进行随机变换产生一个新状态,若新状态优于原状态则向新状态移动,否则再次进行觅食活动,重复m次后如果还是没有找到更优的状态则进行随机移动(m视搜索空间大小而定)。
算法中设有公告板,每次搜索完成后用公告板同鱼群中最优的个体进行比较,若此个体优于公告板则更新公告板。
算法在以下三种情况下结束,1公告板达到教师的要求;2搜索次数达到规定的最大搜索次数;3搜索时间达到规定的最大搜索时间。
•人工鱼群算法能够较好地解决此类问题.它具有如下特点:
1)具有较快的收敛速度,可以用于解决有实时性要求的问题;
•2)对于一些精度要求不高的场合,可以用它侯建0勺得到一个司行解;
•3)不需要问题的严格机理模型,甚至不需要问题的精确描述,这使得它的应用范围得以延伸.
•综上所述,该算法是一种基于集群智能的新型的高效寻优方法.
■
■