100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > CEC:鱼鹰优化算法(Osprey optimization algorithm OOA)求解cec(提供MATLAB代码)

CEC:鱼鹰优化算法(Osprey optimization algorithm OOA)求解cec(提供MATLAB代码)

时间:2020-12-25 15:10:24

相关推荐

CEC:鱼鹰优化算法(Osprey optimization algorithm OOA)求解cec(提供MATLAB代码)

一、鱼鹰优化算法简介

鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovský于提出,其模拟鱼鹰的捕食行为。

鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米,体重1000-1750克。头部白色,头顶具有黑褐色的纵纹,枕部的羽毛稍微呈披针形延长,形成一个短的羽冠。头的侧面有一条宽阔的黑带,从前额的基部经过眼睛到后颈部,并与后颈的黑色融为一体。上体为暗褐色,略微具有紫色的光泽。下体为白色,胸部的暗色纵纹和飞羽,以及尾羽上相间排列的横斑均极为醒目。虹膜淡黄色或橙黄色,眼周裸露皮肤铅黄绿色,嘴黑色,蜡膜铅蓝色,脚和趾黄色,爪黑色。

鱼鹰栖息于湖泊、河流、海岸或开阔地,尤其喜欢在山地森林中的河谷或有树木的水域地带活动。常见在江河、湖沼及海滨一带飞翔,一见水中有饵,就直下水面,用脚掠之而去。趾具锐爪,趾底遍生细刺,外趾复能由前向后反转,这些都很适于捕鱼。在天气晴朗之日,盘旋于水面上空,定点后俯冲而下,再将捕获的鱼带至岩石、电杆、树上等地方享用。巢常营于海岸或岛屿的岩礁上。主要以鱼为食,有时也捕食蛙、蜥蜴、小型鸟类等其他小型陆栖动物。除了南极和北极,亚洲、北美洲等各大洲均有分布。

1.1鱼鹰优化算法原理

鱼鹰优化算法包含两个阶段:第一阶段为鱼鹰识别鱼的位置并捕鱼(全局勘探), 第二阶段为将鱼带到合适的位置( 局部开采),其详细设计如下:

1.1.1 种群初始化

采用下式随机初始化鱼鹰种群:

X=[X1⋮Xi⋮XN]N×m=[x1,1⋯x1,j⋯x1,m⋮⋱⋮⋱⋮xi,1⋯xi,j⋯xi,m⋮⋱⋮⋱⋮xN,1⋯xN,j⋯xN,m]N×m,xi,j=lbj+ri,j⋅(ubj−lbj),i=1,2,…,N,j=1,2,…,m,\begin{array}{c} X=\left[\begin{array}{c} X_{1} \\ \vdots \\ X_{i} \\ \vdots \\ X_{N} \end{array}\right]_{N \times m}=\left[\begin{array}{ccccc} x_{1,1} & \cdots & x_{1, j} & \cdots & x_{1, m} \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ x_{i, 1} & \cdots & x_{i, j} & \cdots & x_{i, m} \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ x_{N, 1} & \cdots & x_{N, j} & \cdots & x_{N, m} \end{array}\right]_{N \times m}, \\ x_{i, j}=l b_{j}+r_{i, j} \cdot\left(u b_{j}-l b_{j}\right), i=1,2, \ldots, N, j=1,2, \ldots, m, \end{array}X=​X1​⋮Xi​⋮XN​​​N×m​=​x1,1​⋮xi,1​⋮xN,1​​⋯⋱⋯⋱⋯​x1,j​⋮xi,j​⋮xN,j​​⋯⋱⋯⋱⋯​x1,m​⋮xi,m​⋮xN,m​​​N×m​,xi,j​=lbj​+ri,j​⋅(ubj​−lbj​),i=1,2,…,N,j=1,2,…,m,​

其中,N为鱼鹰的数量,m为问题的维度,初始化位置后依据优化问题计算适应度值:

F=[F1⋮Fi⋮FN]N×1=[F(X1)⋮F(Xi)⋮F(XN)]N×1F=\left[\begin{array}{c} F_{1} \\ \vdots \\ F_{i} \\ \vdots \\ F_{N} \end{array}\right]_{N \times 1}=\left[\begin{array}{c} F\left(X_{1}\right) \\ \vdots \\ F\left(X_{i}\right) \\ \vdots \\ F\left(X_{N}\right) \end{array}\right]_{N \times 1}F=​F1​⋮Fi​⋮FN​​​N×1​=​F(X1​)⋮F(Xi​)⋮F(XN​)​​N×1​

1.1.2 全局勘探(第一阶段:位置识别和捕鱼)

鱼鹰是强大的猎人,由于其强大的视力,能够探测到水下鱼类的位置。在确定鱼的位置后,他们攻击它并通过潜入水下捕猎鱼。OOA中种群更新的第一阶段是基于对鱼鹰这种自然行为的模拟而建模的。对鱼鹰攻击鱼类进行建模会导致鱼鹰在搜索空间中的位置发生显著变化,这增加了OOA在识别最优区域和逃离局部最优方面的探索能力。在OOA设计中,对于每只鱼鹰,搜索空间中具有较好目标函数值的其他鱼鹰的位置被视为水下鱼类。每只鱼鹰的位置使用下式指定。

FPi={Xk∣k∈{1,2,…,N}∧Fk<Fi}∪{Xbest}\boldsymbol{F P _ { i }}=\left\{X_{k} \mid \boldsymbol{k} \in\{1,2, \ldots, N\} \wedge \boldsymbol{F}_{k}<\boldsymbol{F}_{i}\right\} \cup\left\{\boldsymbol{X}_{\text {best }}\right\}FPi​={Xk​∣k∈{1,2,…,N}∧Fk​<Fi​}∪{Xbest​}

其中,FPiF P _ { i }FPi​为第i只鱼鹰的位置集合,Xbest{X}_{\text {best }}Xbest​为最佳鱼鹰的位置。

鱼鹰随机检测其中一条鱼的位置并攻击它。基于鱼鹰向鱼的运动模拟,使用下式计算相应鱼鹰的新位置。这个新位置,如果它的目标函数的值更好,则替换鱼鹰的先前位置。

xi,jP1=xi,j+ri,j⋅(SFi,j−Ii,j⋅xi,j),xi,jP1={xi,jP1,lbj≤xi,jP1≤ubj;lbj,xi,jP1<lbj;ubj,xi,jP1>ubj.Xi={XiP1,FiP1<Fi;Xi,else,\begin{array}{l} x_{i, j}^{P 1}=x_{i, j}+r_{i, j} \cdot\left(S F_{i, j}-I_{i, j} \cdot x_{i, j}\right), \\ x_{i, j}^{P 1}=\left\{\begin{array}{ll} x_{i, j}^{P 1}, & l b_{j} \leq x_{i, j}^{P 1} \leq u b_{j} ; \\ l b_{j}, & x_{i, j}^{P 1}<l b_{j} ; \\ u b_{j}, & x_{i, j}^{P 1}>u b_{j} . \end{array}\right. \\ X_{i}=\left\{\begin{array}{l} X_{i}^{P 1}, F_{i}^{P 1}<F_{i} ; \\ X_{i}, \text { else }, \end{array}\right. \\ \end{array}xi,jP1​=xi,j​+ri,j​⋅(SFi,j​−Ii,j​⋅xi,j​),xi,jP1​=⎩⎨⎧​xi,jP1​,lbj​,ubj​,​lbj​≤xi,jP1​≤ubj​;xi,jP1​<lbj​;xi,jP1​>ubj​.​Xi​={XiP1​,FiP1​<Fi​;Xi​,else,​​

其中,xi,jP1x_{i, j}^{P 1}xi,jP1​为第i只鱼鹰在第一阶段时,其第j维的新位置,Fi,jP1F_{i, j}^{P 1}Fi,jP1​是其对应的适应度值。SFi,jS F_{i, j}SFi,j​为[0,1]之间的随机数,Ii,jI_{i, j}Ii,j​为集合{1,2}中的随机数。

1.1.3 局部开采(第二阶段:将鱼带到合适的位置)

捕食鱼后,鱼鹰将其带到合适(对他来说安全)的位置,并在那里吃。OOA中更新种群的第二阶段是基于鱼鹰这种自然行为的模拟建模的。将鱼带到合适位置的建模导致鱼鹰在搜索空间中的位置发生微小变化,从而导致 OOA 在本地搜索中的开发能力增加,并在发现的解决方案附近收敛到更好的解决方案。在OOA的设计中,为了模拟鱼鹰的这种自然行为,首先,针对种群的每个成员,使用下式计算一个新的随机位置作为“适合吃鱼的位置”。然后,如果目标函数的值在这个新位置得到改善,则替换相应鱼鹰的先前位置。

xi,jP2=xi,j+lbj+r⋅(ubj−lbj)t,i=1,2,…,N,j=1,2,…,m,t=1,2,…,T,xi,jP2={xi,jP2,lbj≤xi,jP2≤ubj;lbj,xi,jP2<lbjubj,xi,jP2>ubj,Xi={XiP2,FiP2<Fi;Xi,else,\begin{array}{c} x_{i, j}^{P 2}=x_{i, j}+\frac{l b_{j}+r \cdot\left(u b_{j}-l b_{j}\right)}{t}, i=1,2, \ldots, N, j=1,2, \ldots, m, t=1,2, \ldots, T, \\ x_{i, j}^{P 2}=\left\{\begin{array}{l} x_{i, j}^{P 2}, l b_{j} \leq x_{i, j}^{P 2} \leq u b_{j} ; \\ l b_{j}, x_{i, j}^{P 2}<l b_{j} \\ u b_{j}, x_{i, j}^{P 2}>u b_{j}, \end{array}\right. \\ X_{i}=\left\{\begin{array}{l} X_{i}^{P 2}, F_{i}^{P 2}<F_{i} ; \\ X_{i}, \text { else }, \end{array}\right. \end{array}xi,jP2​=xi,j​+tlbj​+r⋅(ubj​−lbj​)​,i=1,2,…,N,j=1,2,…,m,t=1,2,…,T,xi,jP2​=⎩⎨⎧​xi,jP2​,lbj​≤xi,jP2​≤ubj​;lbj​,xi,jP2​<lbj​ubj​,xi,jP2​>ubj​,​Xi​={XiP2​,FiP2​<Fi​;Xi​,else,​​

其中,xi,jP2x_{i, j}^{P 2}xi,jP2​为第i只鱼鹰在第二阶段时,其第j维的新位置,Fi,jP2F_{i, j}^{P 2}Fi,jP2​是其对应的适应度值。rrr为[0,1]之间的随机数,ttt和TTT分别为当前迭代次数和最大迭代次数。

1.2算法描述

1.3算法流程

1.4参考文献

Dehghani Mohammad, Trojovský Pavel.Osprey optimization algorithm: A new bio-inspired metaheuristic algorithm for solving engineering optimization problems[J].Frontiers in Mechanical Engineering,,8.

二、CEC简介

CEC共有30个无约束测试函数分别是:单峰函数(F1-F3)、简单多峰函数(F4-F10)、混合函数(F11-F20)和组合函数(F21-F30)。测试维度包含:10D、30D、50D、100D。CEC无约束测试问题随着维度的增加求解极其困难。

三、求解结果

完整代码添加博客下方博主微信:djpcNLP123

将鱼鹰优化算法OO运用于求解CEC中30个无约束函数,其中每个测试函数可以选择的维度分别有:10D、30D、50D、100D。增大迭代次数,OOA的求解效果更佳。本例测试函数维度均为为10D(可根据自己需求调整),最大迭代次数为5000次。

close allclear clcFunction_name=1; %测试函数1-30lb=-100;%变量下界ub=100;%变量上界dim=10;%维度 10/30/50/100SearchAgents_no=100; % Number of search agentsMax_iteration=100;%最大迭代次数[Best_score,Best_pos,Curve]=OOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);figure% Best convergence curvesemilogy(Curve,'LineWidth',2,'Color','r');title(strcat('CEC-F',num2str(Function_name)))xlabel('迭代次数');ylabel('适应度值');axis tightbox onlegend('OOA')display(['The best solution is : ', num2str(Best_pos)]);display(['The best optimal value of the objective funciton is : ', num2str(Best_score)]);

F1:

F2:

F3:

F4:

四、参考代码

完整代码添加博客下方博主微信:djpcNLP123

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。