獲取更多資訊,趕快關注上面的公衆號吧!
正餘弦優化算法(Sine Cosine Algorithm,SCA)
該算法是由澳大利亞的Mirjalili於2016年提出的一種基於種羣的新型隨機優化算法,SCA創建多個初始隨機候選解,然後利用基於正弦和餘弦函數的數學模型,使得這些解朝最優解方向或反向波動。算法源代碼可以關注公衆號後回覆"正餘弦"獲取。
SCA
SCA本質上爲基於種羣的優化算法,而基於種羣的優化算法的共同點是都包含兩個階段:探索和利用。探索階段,算法以較大的概率隨機搜索以充分探索搜索空間,而在利用階段,隨機概率逐漸下降。
SCA使用以下兩個等式進行位置更新:
Xit+1=Xit+r1×sin(r2)×∣∣r3Pit−Xit∣∣(1)
Xit+1=Xit+r1×cos(r2)×∣∣r3Pit−Xit∣∣(2)
其中Xit爲第t次迭代中當前解在第i個維度上的位置,r1/r2/r3爲隨機數,Pi爲第i維終點的位置。
這兩個等式通常按照如下的組合方式使用:
Xit+1={Xit+r1×sin(r2)×∣r3Pit−Xit∣,Xit+r1×cos(r2)×∣r3Pit−Xit∣,r4<0.5r4≥0.5(3)
其中r4爲[0,1]之間的隨機數。
可以看出,在SCA中主要涉及四個參數:r1,r2,r3和r4。參數r1爲下一位置的所在區域(或移動方向),該區域既可以位於解和終點之間的空間內,也可以不在。參數r2定義了朝向或背離終點的距離遠近。參數r3∈[0,2]爲終點引入了隨機權重,以隨機強調(r3>1)或弱化(r3<1)終點在距離計算時的作用。參數r4用於以相等的概率在正弦和餘弦之間進行切換。
等式(1)和(2)中正弦和餘弦對下一位置的影響如圖1所示,正弦和餘弦的週期模式可以允許一個解在另一個解周圍重新定位,從而保證利用兩個解之間定義的空間,同時爲了探索搜索空間,解應該能夠搜索其對應終點之間之外的空間,而這可以通過改變正弦和餘弦函數的取值範圍來實現,如圖2所示。
圖3展示了改變正餘弦的取值範圍可以更新解的位置,該隨機位置到底是在空間內還是空間外,是通過等式(3)中定義的r2∈[0,2π]來實現的。
爲了平衡探索和利用,正弦和餘弦的取值範圍應該自適應地調整:
r1=a−tTa(4)
其中t爲當前迭代,T爲最大迭代次數,a是一個常數。圖4展示了當a=2時取值範圍遞減的過程。
所以通過圖3和圖4可知,當取值範圍在(1,2]和[-2,-1)範圍內時,SCA算法在空間內進行探索,而當取值範圍在[-1,1]之間時,SCA在空間內進行利用。
SCA算法的僞代碼如下:
初始化初始解(X)
Do
評估每個代理的目標函數
更新當前最優解(P=X∗)
更新r1,r2,r3和r4
更新代理的位置(式3)
While(t<最大迭代次數)
Return全局最優解