Go教程

【智能优化算法之GOA优化】

本文主要是介绍【智能优化算法之GOA优化】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

蚱蜢优化算法(GOA)

 蚱蜢优化算法的概念

蚱蜢是昆虫。由于它们对农作物生产和农业造成损害,因此被认为是有害生物。尽管蚱蜢在自然界中通常是单独出现的,但它们是所有生物中最大的群体之一。蜂群的规模可能是可控的,对农民来说是一场噩梦。蚱蜢群的独特之处在于,无论是在若虫期还是成年期,都可以发现蝗虫的群集行为。数以百万计的若虫蚱蜢像滚动的圆柱体一样跳跃和移动。在他们的道路上,他们几乎吃掉了所有的植被。在这种行为之后,当它们成年后,它们会在空中形成一个蜂群。这就是蝗虫长距离迁徙的方式。

幼虫期蝗虫群的主要特征是行动缓慢,步幅小。相比之下,长距离和突然的移动是成年期蜂群的基本特征。寻找食物来源是蝗虫群集的另一个重要特征。正如简介中所讨论的,受自然启发的算法在逻辑上将搜索过程分为两种趋势:探索和利用。在爆炸中,搜索代理被鼓励突然移动,而在攻击过程中,他们倾向于在本地移动。这两个功能以及目标搜索都是由蚱蜢自然完成的。因此,如果我们找到一种方法对这种行为进行数学建模,可以设计一种新的自然启发算法。该算法通过数学建模和模拟自然界中蝗虫群的行为来解决优化问题。

 算法数学模型

用于模拟蝗虫群集行为的数学模型如下

                                                                 {X_i} = {S_i} + {G_i} + {A_i}                                             

其中,Xi表示第i只蚱蜢的位置,Si表示社会相互作用,Gi表示第i只蚱蜢上的重力,Ai表示风平流。Si由如下方程求解:

                                                                  {S_i} = \mathop \sum \limits_{\begin{array}{*{20}{c}} {j = 1}\\ {j \ne i} \end{array}}^N s\left( {​{d_{ij}}} \right){\hat d_{ij}}                                             

式中,dij是第i个和第j个蚱蜢之间的距离。

                                                                    {d_{ij}} = \left| {​{x_j} - {x_i}} \right|                                               

                                                                    {\hat d_{ij}} = \frac{​{​{x_j} - {x_i}}}{​{​{d_{ij}}}}                                 

定义s函数计算如下:

                                               s\left( r \right) = f{e^{\frac{​{ - r}}{T}}} - {e^{ - r}}                                                               

G分量计算如下:

                                             {G_i} = - g{\hat e_g}                                                                          

A分量计算如下:

                                                 {A_i} = u{\hat e_w}                                                                        

通过将各分量代入公式可得:

                                    {X_i} = \mathop \sum \limits_{\begin{array}{*{20}{c}} {j = 1}\\ {j \ne i} \end{array}}^N s\left( {\left| {​{x_j} - {x_i}} \right|} \right)\frac{​{​{x_j} - {x_i}}}{​{​{d_{ij}}}} - g{\hat e_g} + u{\hat e_w}                             

然而,这个数学模型不能直接用于解决优化问题,主要是因为蝗虫很快到达舒适区,而蝗虫群不会收敛到指定的点。为了解决优化问题,该方程的修改版本:

                                                                                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                 X_i^d = c\left( {\mathop \sum \limits_{\begin{array}{*{20}{c}} {j = 1}\\ {j \ne i} \end{array}}^N c\frac{​{u{b_d} - l{b_d}}}{2}s\left( {\left| {x_j^d - x_i^d} \right|} \right)\frac{​{​{x_j} - {x_i}}}{​{​{d_{ij}}}}} \right) + {\hat T_d}\       

式中ubdd维的上界,lbdd维的下界。

                                                              s(r) = f{e^{\frac{​{ - r}}{T}}} - {e^{ - r}}\                                               

{\hat T_d}:目标中第D维度的值;c: 缩小舒适区、排斥区和吸引区的递减系数。

式表明,蚱蜢的下一个位置是根据其当前位置、目标位置和所有其他蚱蜢的位置来确定的。请注意,该方程式的第一部分考虑了当前蝗虫相对于其他蝗虫的位置。事实上,我们已经考虑了所有蚱蜢的状态来定义目标周围搜索代理的位置。这与PSO不同,PSO是文献中最受欢迎的群体智能技术。在粒子群优化算法中,每个粒子有两个向量:位置向量和位置向量。然而,GOA中每个搜索代理只有一个位置向量。GOA根据搜索代理的当前位置、全球最佳位置和所有其他搜索代理的位置更新搜索代理的位置。这意味着在粒子群优化算法中,没有任何其他粒子有助于更新粒子的位置,而GOA要求所有搜索代理参与定义每个搜索代理的下一个位置。

 GOA算法性能测试

                                                                        图1. S函数

 

 

                                                图2. S函数随l和f变化的行为

 

3. F1函数的寻优

参考文献::Saremi Shahrzad, Mirjalili Seyedali, Lewis Andrew. Grasshopper Optimisation Algorithm: Theory and application[J]. Advances in Engineering Software, 2017, 105: 30-47. Doi: https://doi.org/10.1016/j.advengsoft.2017.01.004.

GOA算法matlab版本下载地址:智能优化算法-GOA.zip-其它文档类资源-CSDN下载智能优化算法之GOA算法matlab代码更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_46263379/75848308

这篇关于【智能优化算法之GOA优化】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!