(源碼)羣體智能優化算法之正餘弦優化算法(Sine Cosine Algorithm,SCA)

在這裏插入圖片描述
獲取更多資訊,趕快關注上面的公衆號吧!

正餘弦優化算法(Sine Cosine Algorithm,SCA)

該算法是由澳大利亞的Mirjalili於2016年提出的一種基於種羣的新型隨機優化算法,SCA創建多個初始隨機候選解,然後利用基於正弦和餘弦函數的數學模型,使得這些解朝最優解方向或反向波動。算法源代碼可以關注公衆號後回覆"正餘弦"獲取。

SCA

SCA本質上爲基於種羣的優化算法,而基於種羣的優化算法的共同點是都包含兩個階段:探索和利用。探索階段,算法以較大的概率隨機搜索以充分探索搜索空間,而在利用階段,隨機概率逐漸下降。

SCA使用以下兩個等式進行位置更新:
Xit+1=Xit+r1×sin(r2)×r3PitXit(1)X_{i}^{t+1}=X_{i}^{t}+r_{1} \times \sin \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|\tag{1}

Xit+1=Xit+r1×cos(r2)×r3PitXit(2)X_{i}^{t+1}=X_{i}^{t}+r_{1} \times \cos \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|\tag{2}

其中XitX_{i}^{t}爲第tt次迭代中當前解在第ii個維度上的位置,r1r_1/r2r_2/r3r_3爲隨機數,PiP_{i}爲第ii維終點的位置。

這兩個等式通常按照如下的組合方式使用:
Xit+1={Xit+r1×sin(r2)×r3PitXit,r4<0.5Xit+r1×cos(r2)×r3PitXit,r40.5(3)X_{i}^{t+1}=\left\{\begin{array}{ll} X_{i}^{t}+r_{1} \times \sin \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|, & r_{4}<0.5 \\ X_{i}^{t}+r_{1} \times \cos \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|, & r_{4} \geq 0.5 \end{array}\right. \tag{3}

其中r4r_4爲[0,1]之間的隨機數。

可以看出,在SCA中主要涉及四個參數:r1r_1,r2r_2,r3r_3r4r_4。參數r1r_1爲下一位置的所在區域(或移動方向),該區域既可以位於解和終點之間的空間內,也可以不在。參數r2r_2定義了朝向或背離終點的距離遠近。參數r3[0,2]r_3\in[0,2]爲終點引入了隨機權重,以隨機強調(r3>1r_3>1)或弱化(r3<1r_3<1)終點在距離計算時的作用。參數r4r_4用於以相等的概率在正弦和餘弦之間進行切換。

圖1 等式(1)和(2)中正弦和餘弦對下一位置的影響

等式(1)和(2)中正弦和餘弦對下一位置的影響如圖1所示,正弦和餘弦的週期模式可以允許一個解在另一個解周圍重新定位,從而保證利用兩個解之間定義的空間,同時爲了探索搜索空間,解應該能夠搜索其對應終點之間之外的空間,而這可以通過改變正弦和餘弦函數的取值範圍來實現,如圖2所示。

圖2 取值在[-2,2]的正餘弦

圖3展示了改變正餘弦的取值範圍可以更新解的位置,該隨機位置到底是在空間內還是空間外,是通過等式(3)中定義的r2[0,2π]r_2\in[0, 2\pi]來實現的。

圖3 取值在[-2,2]的正餘弦允許解圍繞(位於兩者的空間內)或遠離(不在兩者的空間內)終點

爲了平衡探索和利用,正弦和餘弦的取值範圍應該自適應地調整:
r1=ataT(4)r_{1}=a-t \frac{a}{T}\tag{4}

其中tt爲當前迭代,TT爲最大迭代次數,aa是一個常數。圖4展示了當a=2a=2時取值範圍遞減的過程。

圖4 取值範圍遞減過程

所以通過圖3和圖4可知,當取值範圍在(1,2]和[-2,-1)範圍內時,SCA算法在空間內進行探索,而當取值範圍在[-1,1]之間時,SCA在空間內進行利用。

SCA算法的僞代碼如下:

初始化初始解(XX)

Do

評估每個代理的目標函數

更新當前最優解(P=XP=X^*)

更新r1r_1,r2r_2,r3r_3r4r_4

更新代理的位置(式3)

While(tt<最大迭代次數)

Return全局最優解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章