案例18:基于鱼群算法的函数寻优算法
基于差分进化的鱼群算法及其函数优化应用

Vb 1 - 3 9
NO . 5
计
算
机
工
程
2 0 1 3年 5月
Ma y 2 01 3
Co mp u t e r En g i n e e r i n g
・
专栏 ・
文章编号: 1 0 0 0 —3 4 2 8 ( 2 0 1 3 ) 0 5 —0 0 1 8 —0 5 文献标识码l A
ZHANG Da . bi n。 ’ , YANG Ti an - r ou ’ , W EN Me i ’ , SUN Yi n g ’ “ HO U Qi a n “ , Z
( a . S c h o o l o f I n f o r ma t i o n Ma n a g e me n t ; b . F o r e c a s t i n g R e s e a r c h C e n t e r o f C h i n e s e A c a d e my o f S c i e n c e , C e n t r a l C h i n a N o r ma l U n i v e r s i t y , Wu h a n 4 3 0 0 7 9 , C h i n a )
中圈 分类号l T P 3 1 1
基 于差 分 进化 的鱼群 算 法及 其 函数优 化 应 用
张大斌 ,杨添柔 “ , 温 梅 ,孙 莹 ,周 茜
( 华中师范大学 a . 信息管理学院 ;b .中科预测科学研究 中心 ,武汉 4 3 0 0 7 9 ) 摘 要 :人工鱼群算法存在 收敛速 度慢 、精度差等不足 ,借鉴全局的鱼群 聚群 、追尾行为策 略,提 出一种基于差分策略的
一种模拟渔夫捕鱼的寻优算法

第 8期
王 勇 ,等 : 一种模拟渔夫捕鱼的寻优算法
・2 8 89・
是连续函数 。渔夫的目标就是在 D 中搜寻鱼的密度最大点处 和最优区域 (即寻找 f ( X ) 的最大值点和最优区域 ) 。 设初始时 , D 中随机地分布有 k 个渔夫 , 并设 i渔夫的初 始位置和初次撒下鱼网位置为 P0
(- ) j
≥0, l
( - ) j ( +) j
( +) j
≥0, x
- l
( - ) j
∈D j , x
+l
( +) j ( i) 0j
∈
=
( i) Ωm X ( i) ∈
f (X
) >f(P
( i) m +1
) , 则 i渔夫找到水中鱼的 , 并从当前位置 Pm 移动
( i)
D j。并且当 x bj 时 , 取 l
X 0 ≠P0 , t = 1, 2, …, k (即在点 X 0 处鱼的密度比点 P0 处鱼
的密度高 ) , 则 i渔夫从当前位置 P0 移到新位置 P1
( ( i) (
( i)
( i) (
= X0 ,
其中 : l′ j
( )
( i)
′i) ′+ { xm i) , xm i) } , j = 1, 2, …, n} j - lj j , xm j + lj
ing, SFOA ) 。
移到何处去撒网 ; c) 避免在同一地点重复撒网的现象发生 ,也 就是说 ,如果已有渔夫在此处撒网 , 别的渔夫就不会在相同的 地点下网 ; d )如果发现当前自己所处的位置鱼的密度比较大 , 则采用收缩撒网范围的办法 ,希望能“ 一网打尽 ” 。 本文正是基于渔夫这一捕鱼行为习惯而提出了一种模仿 渔夫捕鱼行为特征的搜索方法 。该方法首先在搜索空间 D (即 捕鱼作业区 ) 中随机先取若干个点 (即这若干个渔夫各自在作 业区中随机选取一点并撒下鱼网 ) 。其次 , 以每一个选中点为 中心各构造一个方体 (即各个渔夫又在自己当前位置的前后 左右再各撒下一次网 ) 。第三 , 各个方体依自己所处的环境条 件独立实施移动搜索或收缩搜索 (即各个渔夫依据自己所处 的环境条件独立选择移动搜索或收缩搜索 ) , 最终完成全局最 优解的搜寻过程 (即渔夫们最终找到鱼密度最大的位置 ) 。综 上所述 , 本文提出的搜索算法主要采用移动搜索和收缩搜索两 个基本策略 。 假设 D 中鱼的密度不因渔夫在 D 上打鱼而发生改变 。 所谓 n 维空间中的方体即为空间中的立方体 (二维时为 矩形 , 一维时为闭区间 ) 。所谓方体的移动即方体在空间中从 某一处移到另一处 。所谓方体的收缩即方体的边长收缩变短 。 设 D = D1 × D2 × …× D n 为有限闭区域 (即鱼夫打鱼作业 区 ) , X = ( x1 , x2 , …, xn ) ∈D 为状态 。其中 x j ∈D j = [ a j , bj ]; j =
基于鱼群算法优化LSSVM的有杆泵抽油井油液含水率软测量建模

nf i=1
(7)
1 LSSVM 算法
{(x1, y1),(x 2 , y 2),⋯,(x i , y i)} , 给定的含有 N 个样本的训练集, i= 1,2, ,N。 x i 和 y i 分别为输入和输出变量。LS-SVM 采用如下 函数: f (x) = ωT Φ(x) + b (1) 其中, Φ为高维特征空间, w 为高维空间的向量, bɪR。根据 结构风险最小化原则, 有如下优化问题: γ l min J (ω, b, e) = 1 ωT∙ω + ðe i2 (2) 2 2 i=1 其中,γ 为正则化参数, e 为松弛因子。建立拉格朗日等 式, 上述约束优化问题转化为:
参考文献:
(5)
[1]Joseph B, Brosilow C. Inferentail control of processes(I): steady state analysis and design[J]. AIChE Journal, 1978, 24(3): 485-492. [2]Suykens J A K, Vandewalle J. Least squares support vector machine classifiers[J]. Neural Processing Letters, 1999, 9(3): 293300. [3]李翔宇, 高宪文, 李琨, 等.鱼群算法优化组合核函数 GPR 的油井动液面预测 [J]. 东北大学学报: 自然科学版, 2017, 38(1): 11-15.
其中, rand1 和 rand2 为[0,1]内的随机数, S 为移动步长。 (2) 聚群行为 假 设 人 工 鱼 当 前 状 态 为 x i, 同 伴 数 目 nf, 其中间位置定 义为: 如果有 Y c /n f > δY i , 则向中间位置前进一步, 步长为 S; 否则 返回觅食行为。 (3) 追尾行为 假设人工鱼当前状态为 xi, 考查邻域内人工鱼同伴的 Yj, 设 xmax 是最大的人工鱼同伴以及最大的 Ymax, 如果有 Y max /n f > δY i , 则向中间位置前进一步, 步长为 S; 否则返回觅食行为。 (4) 公告板 记录最优人工鱼的个体状态, 如果当前状态为最佳, 则更 新公告板种状态; 否则, 状态不变。寻优结束后, 公告板状态即 为最优解。
人工鱼群算法及其应用模板

广西民族大学硕士学位论文人工鱼群算法及其应用姓名:聂黎明申请学位级别:硕士专业:计算机应用技术指导教师:周永权200904012人工鱼群算法及改进方法2.1引言人工鱼群算法(ArtificialFishSwarmAlgorithm,AFSA)‘22。
251是李晓磊等人于2002年在对动物群体智能行为研究的基础上提出的一种新型仿生优化算法,该算法根据“水域中鱼生存数目最多的地方一般就是本水域中富含营养物质最多的地方"这一特点来模仿鱼群的觅食行为而实现寻优。
人工鱼群算法主要利用鱼的三大基本行为:觅食、聚群和追尾行为,采用自上而下的寻优模式从构造个体的底层行为开始,通过鱼群中各个体的局部寻优,达到全局最优值在群体中突现出来的目的。
2.2人工鱼群算法2.2.1算法起源经过漫长的自然界的优胜劣汰,动物在进化过程中,形成了形形色色的觅食和生存方式,这些方式为人类解决问题带来了不少鼓舞和启发。
动物个体的智能一般不具备人类所具有的综合判断能力和复杂逻辑推理能力,是通过个体或群体的简单行为而突现出来的。
动物行为具有以下几个特点嘶1:(1)盲目性:不像传统的基于知识的智能系统,有着明确的目标,人工鱼群算法中单个个体的行为是独立的,与总目标之间往往没有直接的关系;(2)自治性:动物有其特有的某些行为,在不同的时刻和不同的环境中能够自主的选取某种行为,而无需外界的控制或指导;(3)突现性:总目标的完成是在个体行为的运动过程中突现出来的;(4)并行性:各个体的行为是实时的、并行进行的;(5)适应性:动物通过感觉器官来感知外界环境,并应激性的做出各种反应,从而影响环境,表现出与环境交互的能力。
2.2.2算法原理人工鱼群算法就是一种基于动物行为的自治体寻优模式,它是基于鱼类的活动特点构建起来的新型智能仿生算法。
通常人们可以观察到如下的鱼类行为:a)觅食行为:这是鱼趋向食物的一种活动,一般认为它是通过视觉或味觉来感知水中的食物量或食物浓度来选择行动方向的。
鱼群算法的介绍

谢谢! Thanks!
鱼群算法的局限性: 算法一般在优化初期具有较快的收敛性,后期却往往收敛较慢。不同的参数设置对算 法的收敛速度和结果精度有很大的影响。基本人工鱼群算法仅仅获取的是系统的满意 解所在邻域,不能得到精确最优解。 为解决人工鱼群算法精确度低的缺点,对算法进行了改进。改进的目的是降低参数设 置对算法的收敛速度和结果精度的影响。 先提一下鱼群算法里面的各种参数: 1、visual 表示人工鱼的感知距离(即视野范围)。 2、step 表示人工鱼移动的最大步长。 3、 δ 表示拥挤因子 4、try—number是人工鱼在觅食行为中的移动次数。 5、friend—number表示人工鱼数量。 这里着重讨论降低拥挤因子δ 的影响,也就是提高δ 的调节范围。拥挤因子 δ 主要为了 限制鱼群集中在某个区域的数量,防止鱼群过于集中在次级大值而搜索不到全局极大 值。 拥挤因子对算法的影响是很明显的,只有一个定义适当的拥挤因子才能达到预期的最 优解。
公告板用来记录状态最优的人工鱼。
在构建人工鱼模型 之前,先介绍一下相关的一些定义: 向量X表示人工鱼个体的状态,Xv表示感知的下一个状态。L为食物量,visual 表示人工鱼的感知距 离;Y=f(x)表示实物浓度;step 表示人工鱼移动的最大步长。 表示拥挤度因子 。其中L为目标函 数值;Dv1v2= || Xv1-Xv2 || 表示人工鱼个体之间的距离 。 2.1 觅食行为 觅食行为:设人工鱼的当前状态为Xv1,在其感知范围内随机选择一个状态Xv2,如果Yv2>Yv1 ,则向 Xv2方向前进一步;反之,再重新随机选择状态Xv2,判断是否满足前进条件;反复几次后,如果仍 不满足前进条件,则随机移动一步。(这是传统的觅食行为,只是在感知范围内随机选择一次,即 审视一次周围的环境。我是针对这一点进行改进的。) 2.2 聚群行为 聚群行为:人工鱼的当前状态为Xv1,探索当前邻域内(Dv1v2<visual)的伙伴数目n f及中心位置 Yc, 如果 且 ,表明伙伴中心有较多的食物并且不太拥挤,则朝伙伴的中心位置方向前进一步;否 则执行觅食行为。如果 也执行觅食行为。 2.3 追尾行为 追尾行为:人工鱼的当前状态为Xv1,探索当前邻域内 (即Dv1v2<visual )中适应度值最大的伙伴Xv2, 如果 且Yv1<Yv2,表明伙伴Xv2的状态具有较高的食物浓度并且其周围不太拥挤,朝伙伴Xv2的方向 前进一步;否则执行觅食行为。如果 也执行觅食行为。 2.4 随机行为 随机行为:随机行为的实现比较简单,就是在视野中随机选择一个状态,然后向该方向移动,其实 它是觅食行为的一个缺省行为。根据所要解决的问题性质, 对人工鱼当前所处的环境进行评价,从 而选一种行为。较常用的评估方法是:选择各行为中使得向最优方向前进最大的方向,也就是各行 为中使得人工鱼的下一个状态最优的行为,如果没有能使下一个状态优于当前状态的行为,则采用 随机行为。
利用人工鱼群算法求解一类函数的极值

收稿日期:2009-10-16基金项目:四川省教育厅青年项目(07ZB043)作者简介:陈宣(1968-),女,四川泸县人,内江师范学院数学与信息科学学院馆员,主要从事人工鱼群算法的研究.韶关学院学报·自然科学Journal of Shaoguan University ·Natural Science 2009年12月第30卷第12期Dec.2009Vol.30No.12利用人工鱼群算法求解一类函数的极值陈宣,杨礼,杨智杰,陈姝,刘高峰(内江师范学院数学与信息科学学院,四川内江641112)摘要:人工鱼群算法是一种基于动物行为的群体智能寻优算法,具有并行性、全局性、简单性、快速性、跟踪性等优点,可以处理一些非凸、非线性等方面的问题.针对一类不可用经典方法求解极值的函数,提出了一种基于人工鱼群算法求解这一类函数极值的方法,并通过仿真实验的研究,验证了该算法求解函数极值是有效可行的.关键词:人工鱼群算法;函数极值;集群智能中图分类号:TP18文献标识码:A 文章编号:1007-5348(2009)12-0007-04人工鱼群算法是李晓磊等[1,2]人于2002年提出的一类基于动物行为的群体智能优化算法.该算法是通过模拟鱼类的觅食、聚群、追尾等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用.人工鱼群算法具有以下特点:具有克服局部极值、取得全局极值的较优秀的能力[3];算法中仅使用目标问题的函数值,对搜索空间有一定自适应能力[4];具有对初值与参数选择不敏感、鲁棒性强、简单易实现、收敛速度快和使用灵活等特点[5].对于带有绝对值且不可导二元函数,采用经典方法是不能求解极值的.针对这一类不能用经典方法求解极值的函数,结合人工鱼群算法上述优点,将其引入到求解函数极值问题中,提出了基于人工鱼群算法求解的极值方法.1人工鱼群算法描述1.1相关定义人工鱼个体的状态可表示为x =(x 1,x 2,…,x n ).其中x i (i =1,2,…,n )为欲寻优的变量;人工鱼当前所在位置的食物浓度可表示为Y=f (x ),其中Y 为目标函数值;人工鱼个体之间的距离表示为d ij =‖x i -x j ‖,visual 表示人工鱼的感知距离;step 表示人工鱼移动的步长;δ表示拥挤度因子[6].1.2行为描述(1)觅食行为.设人工鱼当前状态为x i ,在其视野范围内随机选择一个状态x j ,如果y i ≤y j ,则向该方向前进一步;反之,再重新随机选择状态x j ,判断是否满足前进条件;试探number 次后,如果仍不满足前进条件,则执行其他行为(如随机移动行为).(2)聚群行为.人工鱼当前状态为x i ,设其可见区域内的同伴的个数n f ,形成集合K :K ={x j |x j -x i 燮visual}.如果K 不是空集的话,表明在视野范围内有同伴存在,即n f 叟1,那么按探索中心位子X c :X c =n fj Σx j /n f (其中:X c 表示中心位子的状态).如果n f /n <δ,(0<δ<1),则表明伙伴中心较多食物并且不太拥挤,如果此时y i <y c ,则人工鱼向中心位置x c 前进一步;否则执行其他行为(如觅食行为)[7].(3)追尾行为.追尾行状态为:探索其领域内状态最优的邻居x max ,如果y i <y max ,并且x max 的领域内伙伴的数目n f /n <δ,(0<δ<1),表明x max 的附近有较多的食物并且不太拥挤,则向x max 的位置前进一步;否则执行觅食行为[8].韶关学院学报·自然科学2009年(4)公告板.算法中设立一个公告板,记录最优人工鱼个体状态及该人工鱼位置的食物浓度值.每条人工鱼在行动一次后就将自身当前状态与公告板进行比较,若优于公告板则利用自身状态取代公告板状态.2人工鱼群算法求解函数极值的步骤Step1在定义域范围内随机地产生N条人工鱼群,并且对visual、step、number赋予初值;Step2分别计算各人工鱼状态的食物浓度,选择最大食物浓度的人工鱼个体状态记录到公告板;Step3各个人工鱼个体模拟执行觅食、聚群、追尾行为,然后选择行动后食物浓度值较大的动作来执行,缺省行为方式为觅食行为;Step4判断是否满足终止条件,若满足,则输出公告板记录,算法终止;若不满足,则执行Step2.3算例求非线性函数:f(x,y)=|arctan(arctan(tan(x)+tan(y)))|+|arctan(arctan(tan(x)-tan(y)))|,在定义域E={(x,y)|-4燮x燮4,-4燮y燮4}上的极值如图1所示.在定义域E内有9个极小值点.采用人工鱼群算法求解函数f(x,y)在定义域E的极值,首先在E内随机产生100条人工鱼,如图2所示.取感知范围visual=1,每次移动步长step=visual/2,最大试探次数number=30.让人工鱼执行人工鱼群算法求解函数极值的步骤.人工鱼群分别迭代50,100,150,200,250次的鱼群分布分别见图3~7的状态图.图1函数的三维图图2初始状态的鱼群分布图3迭代50次的鱼群分布第12期图4迭代100次的鱼群分布图5迭代150次的鱼群分布图6迭代200次的鱼群分布图7迭代250次的鱼群分布计算出定义域内的9个极小值,见表1.表1人工鱼群算法计算出的9个极小值由图1可知,函数在E 内有9个极值点,这与人工鱼群算法计算结果是一致的.本例中只需要迭代250次就得到了极值点,迭代次数较少,并且所求的极小值点比较小,所以它的计算精度高.将参数visual 取值变小,迭代次数增加,计算的极值将更加接近于真实值.综上,人工鱼群算法可以很好地用于处理连续函数的问题.4结束语人工鱼群算法算法作为一种新型基于集群智能的随机搜索优化算法.它通过并行运算寻优,可以用解决一些非凸、非线性及离散的优化问题.针对求解函数极值本质上是一个优化问题,将人工鱼群优化算法引入到求解函数极值中.算例仿真试验结果表明人工鱼群算法鲁棒性强、搜索效率较高、全局收敛性好,用于求解函数极值是有效可行的.陈宣等:利用人工鱼群算法求解一类函数的极值·9··10·韶关学院学报·自然科学2009年参考文献:[1]李晓磊,邵之江.一种基于动物自治体的寻优模式:鱼群算法[J].系统工程理论与实践,2002,22(2):32-38.[2]李晓磊,钱积新.基于分解协调的人工鱼群优化算法研究[J].电路与系统学报,2003,8(1):1-6.[3]王联国,洪毅,赵付青,等.基于邻域正交交叉算子的人工鱼群算法[J].农业机械学报,2008,39(8):140-141.[4]王联国,洪毅,赵付青.一种改进的人工鱼群算法[J].计算机工程,2008,34(19):192-194.[5]马建伟,张国立,谢宏,等.利用人工鱼群算法优化前向神经网络[J].计算机应用,2004,24(10):22-23.[6]曲良东,何登旭.基于单纯形法的双群人工鱼群算法[J].计算机应用,2008,28(8):2103-2104.[7]Jeffrey Dean.Animates and what they can tell us[J].Trends in Cognitive Sciences,1998:260-67.[8]王锡淮,郑晓鸣,肖健梅.求解约束优化问题的人工鱼群算法[J].计算机工程与应用,2007,43(3):41-45.An artificial fish swarm algorithm solving extrema of a kind of functions CHEN Xuan,YANG Li,YANG Zhi-jie,CHEN Shu,LIU Gao-feng (College of Mathematic and Information,Neijiang Normal College,Neijiang641112,Sichuan,China)Abstract:The artificial fish swarm algorithm is a swarm intelligence optimization algorithm based on the animal behavior.The algorithm has some advantages in terms of parallelism.global ehavior,simplicity,speediness,trace-ability and so on.And it is able to solve some nonconvex and nonlinear problems.In order to solve extrema of a kind of functions that can not be solved with the classical method.an artificial fish swarm algorithm is made to solve this problem.And the emulated numerical experiment confirmed it is feasible and efficient.Key words:artificial fish swarm algorithm;extrema of function;swarm intelligence(E D.:X,J)。
群体智能优化算法-鱼群优化算法

AF_Follow的伪代码如下:
functionAF_Follow()
{
fmax=-∞;
for (j=0;j<friend_num;j++)
{
if (di,j<Visual andf(Xj)>fmax)
{
fmax=f(Xj);Xmax=Xj;
}
}
nf=0;
for (j=0;j<friend_num;j++)
对Xi(t)执行觅食行为,计算Xi,prey。
ifmin(f(Xi,swarm),f(Xi,follow),f(Xi,prey))<f(Xi)then
Xi(t+1)=argmin(f(Xi,swarm),f(Xi,follow),f(Xi,prey));
end if
endfor
End
参考文献
1.Yazdani, D., A. Nadjaran Toosi, and M.R. Meybodi.Fuzzy Adaptive Artificial Fish Swarm Algorithm. inAI 2010: Advances in Artificial Intelligence. 2011. Berlin, Heidelberg: Springer Berlin Heidelberg.
(4)
AF_Swarm的伪代码如下:
function AF_Swarm()
{
nf=0;Xc=0;
for (j=0;j<fried_num;j++)
{
if (di,j<Visual)
{
nf++;Xc+=Xj;
数学建模案例——最佳捕鱼方案

最佳捕鱼方案摘要:本文解决的是一个最佳捕鱼方案设计的单目标线性规划问题,目的是制定每天的捕鱼策略,使得总收益最大。
根据题设条件,结合实际情况,我们设计了成本与损失率随天数的增加成反比变化的函数曲线(见图三所示),并导出总收益的表达式: 212121111i i i i i i i i W w p s q m =====⨯-⨯∑∑∑。
由于价格是关于供应量的分段函数(见图一所示),我们引入“0-1”变量法编写程序(程序见附录一),并用数学软件LINGO 求解,得到最大收益(W)为441291.4元,分21天捕捞完毕。
其中第1~16天,日捕捞量在1030~1070公斤之间,第17~21天的日捕捞量为1610~1670公斤之间(具体数值见正文)。
由结果分析,我们对模型提出了优化方向,例如人工放水来降低成本。
关键词:“0-1”整数规划,单目标线性规划,离散型分布。
一. 问题重述一个水库,由个人承包,为了提高经济效益,保证优质鱼类有良好的生活环境,必须对水库里的杂鱼做一次彻底清理,因此放水清库。
水库现有水位平均为15米,自然放水每天水位降低0.5米,经与当地协商水库水位最低降至5米,这样预计需要二十天时间,水位可达到目标。
据估计水库内尚有草鱼二万五千余公斤,鲜活草鱼在当地市场上,若日供应量在500公斤以下,其价格为30元/公斤;日供应量在500—1000公斤,其价格降至25元/公斤,日供应量超过1000公斤时,价格降至20元/公斤以下,日供应量到1500公斤处于饱和。
捕捞草鱼的成本水位于15米时,每公斤6元;当水位降至5米时,为3元/公斤。
同时随着水位的下降草鱼死亡和捕捞造成损失增加,至最低水位5米时损失率为10%。
承包人提出了这样一个问题:如何捕捞鲜活草鱼投放市场,效益最佳?二. 模型假设1.池塘中草鱼的生长处于稳定状态,不考虑种群繁殖以及其体重增减,即在捕捞过程中草鱼总量保持在25,000公斤不变。
2.第一天捕捞时水位为15m ,每天都在当天的初始水位捕捞草鱼,水库水位每天按自然放水0.5m 逐渐降低,20天后刚好达到最低要求水位5m 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【注】原帖网址:/thread-9222-1-1.html My Email:hehaiwanghui@案例18:基于鱼群算法的函数寻优算法***********************************************************************************论坛申明:1 案例为原创案例,论坛拥有帖子的版权,转载请注明出处(MATLABSKY论坛,《MATLAB智能算法30个案例分析》2 案例内容为书籍原创内容,内容为案例的提纲和主要内容。
3 作者长期驻扎在板块,对读者和会员问题有问必答。
4 案例配套有教学视频和完整的MATLAB程序,MATLAB程序在购买书籍后可以自由下载,教学视频需要另外购买。
MATLAB书籍预定方法和优惠服务:/thread-9258-1-1.html点击这里,预览该案例程序:/znsf/view/s18/example1.html/znsf/view/s18/example2.html已经预定的朋友点此下载程序源代码:/thread-9395-1-1.html***********************************************************************************1、人工鱼群算法原理人工鱼群算法是李晓磊等人于2002年提出的一类基于动物行为的群体智能优化算法.该算法是通过模拟鱼类的觅食、聚群、追尾、随机等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用.生物的视觉是极其复杂的,它能快速感知大量的空间事物,这对于任何仪器和程序都是难以与之相比的,为了实施的简便和有效,在鱼群模式中应用了如下的方法来实现虚拟人工鱼的视觉:如图5.1所示,一虚拟人工鱼实体的当前位置为,它的视野范围为,位置为其在某时刻的视点所在的位置,如果该位置的食物浓度高于当前位置,则考虑向该位置方向前进一步,即到达位置;如果位置不比当前位置食物浓度更高,则继续巡视视野内的其他位置。
巡视的次数越多,则对视野内的状态了解更全面,从而对周围的环境有一个全方面立体的认知,这有助于做出相应的判断和决策,当然,对于状态多或无限状态的环境也不必全部遍历,允许一定的不确定性对于摆脱局部最优,从而寻找全局最优是有帮助的。
【注:帖子中的公式字符没显示】图5.1 人工鱼的视野和移动步长其中,位置,位置,则该过程可以表示如下:式中,函数为产生范围(-1,1)之间的随机数, 为移动步长。
由于环境中同伴的数目是有限的,因此在视野中感知同伴的位置,并相应的调整自身位置的方法与上式类似。
2、案例目录:第五章人工鱼群算法 1—ARTIFICIAL FISH SCHOOL ALGORITHM(AFSA) 15.1 案例背景 15.1.1人工鱼群算法原理 15.1.2人工鱼群算法的主要行为 25.1.3 问题的解决 25.1.4 案例分析 25.2 模型建立 45.2.1 变量及函数定义 45.2.2 算法流程 55.2.3 人工鱼群算法实现 75.2.3.1 鱼群初始化 75.2.3.2 觅食行为 75.2.3.4 聚群行为 75.2.3.5 追**为 85.2.3.6 随机行为 95.3 编程实现 95.3.1 鱼群初始化函数 95.3.2 觅食行为 105.3.3 聚群行为 115.3.4 追**为 125.3.5 食物浓度函数 135.3.6 案例1 135.3.7 案例2 165.4 总结 195.4.1 人工鱼群算法优点 195.4.2算法改进的几个方向 195.5 参考文献 203、案例实例及结果:案例1:一元函数的优化实例:,该函数的图形如图5.2所示:图 5.2 一元函数图像结果:鱼群算法的运行结果如下:图5.8 50次鱼群算法迭代结果图5.9 最优解的变化Command Window上的运行结果:最优解X:1.85060最优解Y:3.85027Elapsed time is 1.640857 seconds.案例2二元函数的优化实例:该函数的图形如图5.3所示:图 5.3 二元函数图像结果:鱼群算法的运行结果如下:图5.10 50次鱼群算法迭代结果图5.11 最优解的变化Command Window上的运行结果:最优解X:-0.002690.00018最优解Y:1.00000Elapsed time is 3.094503 seconds.4、主程序案例1:1.clc2.clear all3.close all4.tic5.figure(1);hold on6.ezplot('x*sin(10*pi*x)+2',[-1,2]);7.%% 参数设置8.fishnum=50; %生成50只人工鱼9.MAXGEN=50; %最多迭代次数10.try_number=100;%最多试探次数11.visual=1; %感知距离12.delta=0.618; %拥挤度因子13.step=0.1; %步长14.%% 初始化鱼群15.lb_ub=[-1,2,1];16.X=AF_init(fishnum,lb_ub);17.LBUB=[];18.for i=1:size(lb_ub,1)19.LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];20.end21.gen=1;22.BestY=-1*ones(1,MAXGEN); %每步中最优的函数值23.BestX=-1*ones(1,MAXGEN); %每步中最优的自变量24.besty=-100; %最优函数值25.Y=AF_foodconsistence(X);26.while gen<=MAXGEN27.fprintf(1,'%d\n',gen)28.for i=1:fishnum29.[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y); %聚群行为30.[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y); %追**为31.if Yi1>Yi232.X(:,i)=Xi1;33.Y(1,i)=Yi1;34.else35.X(:,i)=Xi2;36.Y(1,i)=Yi2;37.end38.end39.[Ymax,index]=max(Y);40.figure(1);41.plot(X(1,index),Ymax,'.','color',[gen/MAXGEN,0,0])42.if Ymax>besty43.besty=Ymax;44.bestx=X(:,index);45.BestY(gen)=Ymax;46.[BestX(:,gen)]=X(:,index);47.else48.BestY(gen)=BestY(gen-1);49.[BestX(:,gen)]=BestX(:,gen-1);50.end51.gen=gen+1;52.end53.plot(bestx(1),besty,'ro','MarkerSize',100)54.xlabel('x')55.ylabel('y')56.title('鱼群算法迭代过程中最优坐标移动')57.figure58.plot(1:MAXGEN,BestY)59.xlabel('迭代次数')60.ylabel('优化值')61.title('鱼群算法迭代过程')62.disp(['最优解X:',num2str(bestx,'%1.5f')])63.disp(['最优解Y:',num2str(besty,'%1.5f')])64.toc复制代码案例2:1.clc2.clear all3.close all4.tic5.figure(1);hold on6.%% 参数设置7.fishnum=100; %生成50只人工鱼8.MAXGEN=50; %最多迭代次数9.try_number=100;%最多试探次数10.visual=1; %感知距离11.delta=0.618; %拥挤度因子12.step=0.1; %步长13.%% 初始化鱼群14.lb_ub=[-10,10,2;];15.X=AF_init(fishnum,lb_ub);16.LBUB=[];17.for i=1:size(lb_ub,1)18.LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];19.end20.gen=1;21.BestY=-1*ones(1,MAXGEN); %每步中最优的函数值22.BestX=-1*ones(2,MAXGEN); %每步中最优的自变量23.besty=-100; %最优函数值24.Y=AF_foodconsistence(X);25.while gen<=MAXGEN26.fprintf(1,'%d\n',gen)27.for i=1:fishnum28.[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y); %聚群行为29.[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y); %追**为30.if Yi1>Yi231.X(:,i)=Xi1;32.Y(1,i)=Yi1;33.else34.X(:,i)=Xi2;35.Y(1,i)=Yi2;36.end37.end38.[Ymax,index]=max(Y);39.figure(1);40.plot(X(1,index),X(2,index),'.','color',[gen/MAXGEN,0,0])41.if Ymax>besty42.besty=Ymax;43.bestx=X(:,index);44.BestY(gen)=Ymax;45.[BestX(:,gen)]=X(:,index);46.else47.BestY(gen)=BestY(gen-1);48.[BestX(:,gen)]=BestX(:,gen-1);49.end50.gen=gen+1;51.end52.plot(bestx(1),bestx(2),'ro','MarkerSize',100)53.xlabel('x')54.ylabel('y')55.title('鱼群算法迭代过程中最优坐标移动')56.figure57.plot(1:MAXGEN,BestY)58.xlabel('迭代次数')59.ylabel('优化值')60.title('鱼群算法迭代过程')61.disp(['最优解X:',num2str(bestx','%1.5f')])62.disp(['最优解Y:',num2str(besty,'%1.5f')])63.toc。