蛇优化算法
前言
蛇优化(Snake Optimizer, SO)[1]是Hashim, F. A.和 Hussien, A. G两位教授于2022年提出的优化算法,其算法灵感来蛇的觅食和繁殖行为和模式。
蛇优化算法
原理
雄性蛇和雌性蛇之间交配的发生受到某些因素的影响。蛇在春末和初夏交配,那时温度低。但交配过程不仅取决于温度,还取决于食物的充足性。如果温度低,食物充足;雄性蛇会互相争斗,以吸引雌性的注意力。雌性有权决定是否交配。如果发生交配,雌性开始在巢穴或洞穴中产卵,一旦卵出现,它就会离开。
理论
与所有元启发式算法一样,SO 首先生成均匀分布的随机种群,以便能够开始优化算法过程。初始化公式如下:
$$X_{i}=X_{\min }+r \times\left(X_{\max }-X_{\min }\right)$$
其中,$X_{i}$ 为第i个位置的解,$r \in[0,1]$,$X_{max}$和$X_{min}$分别为待解决问题的上下界。此后,将初始化的种群分为雄性和雌性两个部分,原文中雄雌比例为1:1。
SO的探索和开发阶段主要受温度 $Temp$ 和食物量 $Q$ 的影响:
$$T e m p=\exp (-t / T)$$
$$Q=c_{1} * \exp (t-T / T)$$
其中 $t$ 代表当前迭代, $T$ 代表最大迭代次数,$c_{1} = 0.5$
探索阶段
当 $Q<0.25$ (0.25为原文规定的阈值)SO通过择任何随机位置来搜索食物并更新它们相对于它的位置,即探索阶段,随机搜索公式为:
$$
雄性:X_ {i}^ {m} = X_ {rand}^ {m} (t) \pm c_ {2} \times A_ {m} \times (( X_ {\max } - X_ {\min } ) \times rand+ X_ {\min } )
$$
$$
雌性: X_{i}^{f}=X_{rand}^{f}(t)\pm c_{2}\times A_{f}\times ((X_{\max}-X_{\min})\times rand+X_{\min})
$$
其中$X_ {i}^ {m}$和$X_ {i}^ {f}$是雄性和雌性SO位置,$X_{rand}^{m}(t)$和$X_{rand}^{f}(t)$是随机SO位置,$c_{2} = 0.05$, $r \in [0,1]$, $A_{m}$ 和 $A_{f}$ 为雄性和雌性SO寻找食物的能力,公式如下:
$$
雄性:A_{m}=exp(-f_{rand}^{m}/f_{i}^{m})
$$
$$
雌性:A_{f}=exp(-f_{rand}^{f}/f_{i}^{f})
$$
其中$f_{rand}^{m}$是$X_{rand}^{m}$的适应度,$f_{i}^{m}$是$X_{i}^{m}$的适应度,雌性同理。
开发阶段
SO的开发阶段相对复杂,分为3种模式——靠近猎物(食物)模式、战斗模式、交配模式,3种模式同时受温度 $Temp$ 和食物量 $Q$ 的影响,这是与探索模式的不同之处。
靠近猎物(食物)模式
当 $Q>0.25$ 且 $Temp>0.6$,SO移动到食物上,其公式为:
$$
X_{i,j}(t+1)=X_{food}\pm c_{3}\times temp\times rand\times(X_{food}-X_{i,j}(t))
$$
其中,$X_{i,j}$是整个SO的种群(雌雄),$X_{food}$为全局最优位置,$c_{3}=2$
战斗/交配模式
当 $Temp\leq0.6$ 时,蛇将处于战斗模式或交配模式。
战斗模式
$$
X_{i}^{m}(t+1)=X_{i}^{m}(t)\pm c_{3}\times FM\times rand\times(X_{best}^{f}-X_{i}^{m}(t))
$$
$$
X_{i}^{f}(t+1)=X_{i}^{f}(t)\pm c_{3}\times FF\times rand\times(X_{best}^{m}-X_{i}^{f}(t))
$$
其中 $X_{i}^{m}和X_{i}^{f}$ 为雄雌性SO位置,$FM和FF$ 为雄雌性战斗值, $X_{best}^{f}和X_{best}^{m}$ 为雌雄性SO最优位置。$FM和FF$分别表示为:
$$
FM=exp(-f_{best}^{f}/f_{i})
$$
$$
FF=exp(-f_{best}^{m}/f_{i})
$$
其中$-f_{best}^{f}和-f_{best}^{m}$分别为最佳雌性和雄性SO适应度值,$f_{i}$为SO的代理位置。交配模式
$$
X_{i}^{m}(t+1)=X_{i}^{m}(t)\pm c_{3}\times M_{m}\times rand\times(Q\times X_{i}^{f}(t)-X_{i}^{m}(t))
$$
$$
X_{i}^{f}(t+1)=X_{i}^{f}(t)\pm c_{3}\times M_{f}\times rand\times(Q\times X_{i}^{m}(t)-X_{i}^{f}(t))
$$
其中 $X_{i}^{m}$ 和 $X_{i}^{f}$ 分别代表雌性和雄性的SO位置, $M_{m}$ 和 $M_{f}$ 分别代表雄性和雌性SO交配能力,表示如下:
$$
M_{m}=exp(-f_{i}^{f}/f_{i}^{m})
$$
$$
M_{f}=exp(-f_{i}^{m}/f_{i}^{f})
$$
其中 $-f_{i}^{f}$ 和 $-f_{i}^{m}$ 分别表示SO的雌性和雄性搜索代理。如果有蛇蛋孵化的话(把最差的初始化,重开),则选择最差的雄性和雌性SO进行替换。
源代码
原文matlab链接:Snake Optimizer
参考
https://zhuanlan.zhihu.com/p/468777899
Hashim, F. A., & Hussien, A. G. (2022). Snake Optimizer: A novel meta-heuristic optimization algorithm.Knowledge-Based Systems, 108320.论文跳转