人工鱼群算法1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法介绍 伪代码 float Artificial_ fish::AF_ swarm() {nf=|N(Xi,Visual)|;//Xi为中心,visual距离领域内的伙伴总数 Xc=Center(N(Xi,Visul));//Xi附近所有nf个伙伴的中心位置 if(Yc/ nf > δYi && Yi<Yc) Xc - X i ; inext = Xi + Random ( step ) X Xc - X i else AF_prey(); retum AF_foodeonsistenee(Xinext ); }
float Artificial_ fish::AF_ follow() {Ymax=MAX(f(Xmax)),Xmax∈N(Xi,Visual); nf=|N(Xmax,Visual)|; if(Ymax/ nf > δYi&& Yi<Ymax) Xma Xi Xinext = Xi + Random ( step ) x ; - Xi Xma x else AF_prey(); retum AF_foodeonsistenee(Xinext ); }
算法介绍
• (5)公告板:是记录最优人工鱼个体状态 的地方。每条人工鱼在执行完一次迭代后将 自身当前状态与公告板中记录的状态进行比 较,如果优于公告板中的状态则用自身状态 更新公告板中的状态,否则公告板的状态不 变。当整个算法的迭代结束后,输出公告板 的值,就是我们所求的最优值。
算法介绍
• 2.4 算法描述 鉴于以上描述的人工鱼群行为,每条人工鱼探索它 当前所处的环境状况和伙伴的状况,从而选择一种 行为来实际执行,最终人工鱼集结在几个局部极值 周围。一般情况下,在讨论求极大问题时,拥有较 大的适应值的人工鱼一般处于值较大的极值域周围, 这有助于获取全局极值域,而值较大的极值区域周 围一般能集结较多的人工鱼,这有助于判断并获取 全局极值。具体的人工鱼群算法步骤如下:
算法介绍
算法的优点 1)只需比较目标函数值,对目标函数的性 质要求不高。 2)对初值的要求不高,随机产生或设为固 定值均可。 3)对参数设定的要求不高,容许范围大。 4)具备并行处理能力,寻优速度较快。 5)具备全局寻优能力,能快速跳出局部极 值点。
算法介绍
基本概念 假设在一个n维的目标搜索空间中,有N条 组成一个群体的人工鱼,每天人工鱼个体的 状态可表示为向量X=(x1,x2,……xn),其中xi (i=1,……n)为欲寻优的变量:人工鱼当前 所在位置的食物浓度表示为Y=f(X),其中Y为 目标函数;人工鱼个体间距离表示为 d=||Xi-Xj ||; visual表示人工鱼的感知范围, step为人工鱼移动步长,δ为拥挤度因子; trynumber表示人工鱼每次觅食最大试探次 数。
算法介绍
• 人工鱼群算法描述 在一片水域中,鱼存在的数目最多的地方就 是本水域中富含营养物质最多的地方,依据 这一特点来模仿鱼群的觅食,聚群,追尾等 行为,从而实现全局最优,这就是鱼群算法 的基本思想。鱼类的活动中,觅食行为,聚 群行为,追尾行为和随机行为与寻优命题的 解决有较密切的关系,如何利用简单有效的 方式来构造实现这些行为将是算法实现的主 要问题。
人工鱼群算法实例
பைடு நூலகம்
• 如果聚群失败就进行觅食活动,“鱼”随机从自身 取出visual个位(visual为可视域),对其进行随机 变换产生一个新状态,若新状态优于原状态则向新 状态移动,否则再次进行觅食活动,重复m次后如 果还是没有找到更优的状态则进行随机移动(m视 搜索空间大小而定)。算法中设有公告板,每次搜 索完成后用公告板同鱼群中最优的个体进行比较, 若此个体优于公告板则更新公告板。算法在以下三 种情况下结束,1 公告板达到教师的要求;2 搜索 次数达到规定的最大搜索次数;3 搜索时间达到规 定的最大搜索时间。
• 人工鱼群算法能够较好地解决此类问题.它 具有如下特点:1)具有较快的收敛速度,可 以用于解决有实时性要求的问题; • 2)对于一些精度要求不高的场合,可以用它 快速的得到一个可行解; • 3)不需要问题的严格机理模型,甚至不需要 问题的精确描述,这使得它的应用范围得以 延伸. • 综上所述,该算法是一种基于集群智能的新 型的高效寻优方法.
算法介绍
• (3)聚群行为(AF-swarm):鱼在游动过 程中为了保证自身的生存和躲避危害会自然 地聚集成群 。鱼聚群时所遵守的规则有三条: 分隔规则:尽量避免与临近伙伴过于拥挤;对 准规则:尽量与临近伙伴的平均方向一致;内 聚规则:尽量朝临近伙伴的中心移动。 人工 鱼Xi搜索其视野内的伙伴数目nf及中心位置 Xc,若 Yc/ nf > δYi,表明伙伴中心位置 状态较优且不太拥挤,则Xi朝伙伴的中心位 置移动一步,否则执行觅食行为:
人工鱼群算法实例
• 然后先进行追尾活动,每条鱼Xi都查看在自己可视域范围内 (即距离小于visual,visual根据搜索空间的大小而定)的 其它鱼,从中找到适应函数值最小的一个Xj ,其适应度函 数值记为Yj,Xj周围可视域内的其它个体数量记为nf,若 Yj*nf<δ*Yi (δ为拥挤度因子,此处取1),则表明Xj周围 “食物”较多且不太拥挤,这时Xi对每一个自己和Xj的不同 的位重新随机取值(例如Xi为1001,而Xj为1100,那么就 对Xi的第2,4位重新随机取值),从而向Xj靠近。追尾活动 若不成功,则进行聚群行为,每条鱼都先找出自己周围可 视域内的其它鱼,形成一个小鱼群,然后找出这群鱼的中 心点,这里中心点的确定方法是,若鱼群中半数以上的鱼 在第i位上取1,则中心点的第i位也为1,否则为0,接 着采用和前面相同方法查看中心点的“食物”是否较多, 是否拥挤,据此决定是否向中心点靠近。
算法介绍
• Step1:确定种群规模N,在变量可行域内随机生成 N个个体,设定人工鱼的可视域Visual,步长step, 拥挤度因子δ,尝试次数trynumber Step2:计算初始鱼群各个体适应值,取最优人工鱼 状态及其值赋给公告板 Step3:个体通过觅食,聚群,追尾行为更新自己, 生成新鱼群。 Step4:评价所有个体。若某个体优于公告板,则将 公告板更新为该个体。 Step5:当公告板上最优解达到满意误差界内,算法 结束,否则转step3。
算法介绍
• (4)追尾行为(AF-follow)指鱼向其可视区域 内的最优方向移动的一种行为。人工鱼Xi搜 索其视野内所有伙伴中的函数最优伙伴Xj, 如果 Yj/ nf > δYi,表明最优伙伴的周围不太 拥挤,则Xi朝此伙伴移动一步,否则执行觅 食行为。
算法介绍 伪代码
• • • • • • • • •
算法介绍 代码
function [XXnext] = gmjprey(XX,Try_number,Visual,Step) pp=0; for j=1:Try_number XXj=XX+rand*Step*Visual; if(maxf(XX)<maxf(XXj)) XXnext=XX+rand*Step*(XXj-XX)/norm(XXj-XX); pp=1; break end end if(~pp) XXnext=XX+rand*Step; end
源代码中的赋值
• • • • •
format long Visual=2.5; Step=0.3; N=50; Try_number=50;
算法介绍
行为描述 (1)随机行为(AF-Random):指人工鱼在视野内 随机移动,当发现食物时,会向食物逐渐增多的方 向快速的移动。 (2)觅食行为(AF-prey):指鱼循着食物多的方向 游动的一种行为,人工鱼Xi在其视野内随机选择一 个状态Xj,分别计算它们的目标函数值进行比较, 如果发现Yj比Yi优,则Xi向Xj的方向移动一步;否 则,Xi继续在其视野内选择状态Xj,判断是否满足 前进条件,反复尝试trynumber次后,仍没有满足 前进条件,则随机移动一步使Xi到达一个新的状态。 表达式如下:
相关文档
最新文档