BAS: 天牛须搜索智能优化算法
基本情况
天牛须搜索(Beetle Antennae Search-BAS),也叫甲壳虫
须搜索,是2017年提出的一种高效的智能优化算法。
类似于遗传算法、粒子群算法、模拟退火等智能优
化算法,天牛须搜索不需要知道函数的具体形式,
不需要梯度信息,就可以实现高效寻优。
相比于粒子群算法,天牛须搜索只需要一个个体,
即一只天牛,运算量大大降低。
仿生原理
天牛须搜索是受到天牛觅食原理启发而开发的算法。
天牛须搜索的生物原理:
当天牛觅食时,天牛并不知道实物在哪里,而是根据
食物气味的强弱来觅食。天牛有两只长触角,如果
左边触角收到的气味强度比右边大,那下一步天牛
就往左飞,否则就往右飞。依据这一简单原理天牛
就可以有效找到食物。
天牛须搜索对我们的启发:
食物的气味就相当于一个函数,这个函数在三维空间
每个点值都不同,天牛两个须可以采集自身附近两点
的气味值,天牛的目的是找到全局气味值最大的点。
仿照天牛的行为,我们就可以高效的进行函数寻优。
仿生原理
天牛寻找食物图解
右须信号强,右运动
右须信号强,右运动
右须信号强,右运动
出发吧,沿着
香味的方向,
去寻找披萨
左须信号强,左运动
左须信号强,左运动
算法
天牛在三维空间运动,而天牛须搜索需要对任意维
函数都有效才可以。因而, 天牛须搜索是对天牛生
物行为在任意维空间的推广。
我们采用如下的简化模型假设描述天牛:
1. 天牛左右两须位于质心两边。
2. 天牛步长step与两须之间距离d0的比是个固定常数即
step=c*d0其中c是常数。即,大天牛(两须距离长)走大步,
小天牛走小步。
天牛质心
3. 天牛飞到下一步后,头的朝向是随机的。
天牛左须
简化模型
天牛右须
两须之间的距离d0
建模(n维空间函数f最小化)
第一步:对于一个n维空间的优化问题,我们用xl表
示左须坐标,xr表示右须坐标,x表示质心坐标,用
d0表示两须之间距离。根据假设3, 天牛头朝向任意,
因而从天牛右须指向左须的向量的朝向也是任意的,
所以可以产生一个随机向量dir=rands(n,1)来表示它。
对此归一化:dir=dir/norm(dir); 我们这样可以得到
xl-xr=d0*dir;显然, xl,xr还可以表示成质心的表
达式:xl=x+d0*dir/2;xr=x-d0*dir/2.
天牛质心
天牛左须
天牛右须
简化模型
两须之间的距离d0
建模
第二步:对于待优化函数f,求取左右两须的值:
fleft=f(xl); fright=f(xr); 判断两个值大小,
如果fleftfright,为了探寻f的最小值,则天牛向着右须
方向行进距离step,即x=x-step*normal (xl-xr);
如上两种情况可以采用符号函数sign统一写成:
x=x-step*normal (xl-xr) *sign(fleft-fright)=x-step*dir
*sign(fleft-fright).
(注:其中normal是归一化函数)
建模
基本步骤就这两步。总结下:
dir=rands(n,1); dir=dir/norm(dir); %须的方向
xl=x+d0*dir/2; xr=x-d0*dir/2. %须的坐标
fleft=f(xl); fright=f(xr); %须的气味强度
x=x-step*dir*sign(fleft-fright). %下一步位置
循
环
迭
代
几点说明:
1.
2. 实用中可以设置可变步长,由于假设2中我们认为step=c*d0其中c是常数,变
核心代码如上,只有4行。
步长意味着d0=step/c为变化的。