智能優(yōu)化算法:縱橫交叉算法

智能優(yōu)化算法:縱橫交叉算法-附代碼

@[toc]
摘要:縱橫交叉算法(Crisscross optimization algorithm,CSO) 是一種全新的基于種群的隨機(jī)搜索算法。有兩種不同的交叉方式,能較好地解決一般智能算法存在的局部最優(yōu)問題。

1.算法原理

縱橫交叉算法在迭代過程中每一代都會進(jìn)行橫向交叉和縱向交叉兩種交叉方式,從而使得種群中某些陷入維局部最優(yōu)的維有機(jī)會跳出迭代??v橫交叉算法每次交叉后得出的解稱為中庸解 ( MS_{hc}, MS_{vc} ) ,通過引入競爭算子,使得這兩種交叉方式有機(jī)的結(jié)合起來:每次交叉操作之后都會進(jìn)入競爭算子,與父代進(jìn)行競爭,只有比父代更優(yōu)秀的粒子會被保留下來進(jìn)入下次迭代,得出的解稱為占優(yōu)解 ( DS_{hc} , DS_{vc}) 。

1.1 橫向交叉操作

橫向交叉類似于 GA 的交叉操作,是在種群中兩個不同個體粒子相同維之間進(jìn)行的一種算數(shù)交叉。假設(shè)父代個體粒子 X ( i )X ( j ) 的第 d 維進(jìn)行橫向交叉,則它們產(chǎn)生子代的公式如下:
MS_{hc}(i,d) =r_1*X(i,d) + (1 -r_1)*X(j,d)+c_1*(X(i,d)-X(j,d))\tag{1}

MS_{hc}(j,d) =r_1*X(j,d) + (1 -r_1)*X(i,d)+c_1*(X(j,d)-X(i,d))\tag{2}

式中: r_1 , r_2 是 [0, 1] 之間的隨機(jī)數(shù); c_1 , c_2 是 [ - 1, 1] 之間的隨機(jī)數(shù); X ( i , d ), X ( j , d )分別是父代種群中個體粒子 X ( i )X ( j ) 的第 d維; MS_{hc} ( i , d )MS_{hc} ( j , d ) 分別是X ( i , d )X ( j , d ) 通過橫向交叉產(chǎn)生的第 d 維子代。

不同個體粒子的相同維度的上下限范圍是相同的,從社會學(xué)的角度來看,式 (1) 中的 r_1 * X ( i , d )是粒子 X ( i ) 的記憶項,是粒子本身的當(dāng)前最優(yōu)值。(1 - r_1 )*X ( j , d ) 是粒子 X ( i )X ( j ) 的群體認(rèn)知項,表示了不同粒子間的相互影響。這兩項通過慣性權(quán)重因子r_1 較好的結(jié)合在一起。 c_1 是學(xué)習(xí)因子,第三項c_1 *( X ( i , d ) - X ( j , d )) 可以增大搜索區(qū)間,在邊緣尋優(yōu)。橫向交叉操作完成后,得到的中庸解 MS_{hc} ( i , d ),MS_{hc} ( j , d ) 必須分別與父代粒子 X ( i ), X ( j ) 的適應(yīng)度比較,只有適應(yīng)度更好的中庸解才可以保留下來,成為占優(yōu)解 DS_{hc} ,參與下一次迭代。

1.2 縱向交叉操作

縱向交叉是種群中一個粒子的兩個不同的維之間進(jìn)行的一種算數(shù)交叉。由于不同維元素的取值范圍不同,因而交叉前須將兩維進(jìn)行歸一化處理,并且為了使已陷入維局部最優(yōu)而停滯的那一維跳出局部最優(yōu)而又不破壞另外一維的信息,每次縱向交叉操作只產(chǎn)生一個子代粒子,只對其中一維進(jìn)行更新。

假定粒子 X ( i ) 的第 d_1 維和第 d_2 維是參與縱向交叉,根據(jù)公式 (3) 產(chǎn)生中庸解 MS vc ( i , d_1 )
MS_{vc}(i,d_1)=r*X(i,d_1)+(1 - r)*X(i,d_2),i\in N(1,M),d_1,d_2\in N(1,D) \tag{3}
式中: r \in [0,1] ; MS_{vc} ( i , d_1 ) 是個體粒子 X ( i ) 的第 d_1 維和第 d_2 維通過縱向交叉產(chǎn)生的第 d_1 維后代。

式 (3) 中的第一項是粒子 X ( i ) 的第 d_1 維的記憶項,第二項是粒子 X ( i ) 的第 d_1 維和第 d_2 維相互影響,通過慣性權(quán)重因子 r 結(jié)合在一起。這樣得到的中庸解MS_{vc} ( i , d_1 )不但包含父代粒子 X ( i ) 的第 d_1 維的信息,還依一定概率含有 X ( i ) 的第 d_2 維信息,并不會破壞 X ( i )的第 d_2 維信息。中庸解 MS_vc ( i , d_1 ) 與父代粒子X ( i ) 比較適應(yīng)度,較好的保留下來作為占優(yōu)解 DS_{vc} ,進(jìn)行下一次迭代。

CSO 的操作流程可總結(jié)如下:
1)根據(jù)具體的問題初始化種群
2)執(zhí)行橫向交叉,然后執(zhí)行競爭算子,得到 DSh 作為縱向交叉的父代
3)執(zhí)行縱向交叉,然后執(zhí)行競爭算子,得到 DSv 作為下一次橫向交叉的父代
4)判斷是否達(dá)到最大迭代次數(shù)或者指定的結(jié)束條件,如果是,則終止算法,否,
則轉(zhuǎn)到步驟 2)。

2.算法結(jié)果

算法結(jié)果

3.參考文獻(xiàn)

[1] 孟安波, 胡函武, 劉向東. 基于縱橫交叉算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的負(fù)荷預(yù)測模型[J]. 電力系統(tǒng)保護(hù)與控制, 2016, 44(07):102-106.

4.Matlab代碼

https://mianbaoduo.com/o/bread/aZuXlp4=

5.Python代碼

https://mianbaoduo.com/o/bread/aZuXlp8=

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容