Page 128 - 《软件学报》2021年第11期
P. 128

3454                               Journal of Software  软件学报 Vol.32, No.11, November 2021

                 1    相关工作

                 1.1   BAS优化算法
                    天牛须搜索算法(BAS)是一种高效的智能优化算法,其生物学原理为:当天牛觅食时,天牛并不知道食物在
                 哪里,而是利用其两条长须判断食物气味的强弱来觅食.如果左须收到的气味强度比右须大,那么天牛就往左
                 飞;否则就往右飞.依据这一原理,天牛就可以有效找到食物.将这一原理用数学模型去模拟,食物的气味就相当
                 于一个函数,天牛两个须可以采集自身附近两点的气味值,天牛的目的是找到全局气味值最大的点.仿照天牛的
                 行为,可以高效地进行函数寻优.类似于粒子群算法、遗传算法、蚱蜢算法等智能优化算法,天牛须搜索算法
                 (BAS)可以在不知道函数的具体形式和梯度信息的情况下,自动实现寻优过程.BAS 相对于其他算法而言,由于
                 单只个体的优势,算法设计复杂度较低,能够在更短的时间内解决优化问题.
                    算法根据天牛个体的初始位置 x 和随机创建的天牛朝向向量 dir 来计算天牛的左、右须坐标.对于天牛朝
                 向的随机向量 dir 与左、右须位置坐标 x l 和 x r ,计算公式如下:
                                                   dir =  rands (,1)n                                 (1)
                                                               ( ,1))
                                                       norm (rands n
                                                    ⎧ x =+    dir  /2
                                                        xd ×
                                                    ⎨  l    0                                         (2)
                                                        xd ×
                                                    ⎩ x =−  0  dir  /2
                                                      r
                 其中,d 0 为常数,表示天牛两须间的距离;n 表示搜索空间的维度;rands(n,1)表示 n 维随机向量;norm 为 2 范数.之
                 后,根据左、右须的适应度值,更新天牛的位置 x,更新公式如下:
                                                 x=x+step×dir×sign(T l −T r )                         (3)
                 其中,sign(⋅)为符号函数;T l 和 T r 分别表示左、右两须的适应度值:T l =S(x l ),T=S(x),S 为待寻优函数;step 表示迭代
                 步长,用来控制区域搜索能力.初始步长应该较大,以使得天牛初期拥有足够的全局搜索能力.步长的迭代采用
                 如下策略:
                                                      step=step×eta                                   (4)
                 其中,eta 通常取为 0.95.记 v=step×dir×sign(S l −S r ),称为速度项,则更新公式(3)可写成:
                                                         x=x+v                                        (5)
                    BAS 利用天牛朝向的随机性,得到天牛左、右须的坐标,并计算左、右须的适应度值,以此来更新天牛的下
                 一步位置.算法为保留最优解和收敛性,通过计算天牛位置的适应度值,选择历史最优值,并将相对应的天牛位
                 置作为最佳位置.假设天牛历史最优位置为 xbest 和其历史最优值 Sbest,如果历史最优值 Sbest 小于当前适应度
                 值,则将当前位置和适应度值作为 xbest.Sbest,公式如下(以求待寻优函数 S(x)的最大值为例):
                                                 (xbest,Sbest)=(x,T),Sbest<T                          (6)
                 其中,T=S(x).
                    对于一个 n 维空间的优化问题,算法 1 给出了 BAS 算法的实现过程.
                    算法 1.  天牛须算法(BAS).
                    1.   随机生成天牛初始位置向量 x,并初始化各参数:步长 step 和步长迭代因子 eta,最大迭代次数 Max_iter.
                    2.   计算天牛初始适应度值 T 0 =S(x),取天牛最优位置 xbest=x,历史最优值 Sbest=T 0 .
                    3.   根据公式(1)创建天牛须朝向的随机向量 dir.
                    4.   根据公式(2)创建个体左须 x l 和右须 x r 空间坐标,并计算左、右两须的适应度值 T l 和 T r .
                    5.   根据公式(3)更新 x.
                    6.   计算当前天牛的适应度值 T=S(x).
                    7.   按照择优操作公式(6)完成历史最优位置 xbest 和历史最优值 Sbest 更新.
                    8.   按照公式(4)进行步长的更新.
                    9.   重复步骤 3~步骤 8,进行迭代更新,直到达到设置的最大迭代次数 Max_iter 为止.
   123   124   125   126   127   128   129   130   131   132   133