智能優(yōu)化算法:縱橫交叉算法-附代碼
@[toc]
摘要:縱橫交叉算法(Crisscross optimization algorithm,CSO) 是一種全新的基于種群的隨機(jī)搜索算法。有兩種不同的交叉方式,能較好地解決一般智能算法存在的局部最優(yōu)問題。
1.算法原理
縱橫交叉算法在迭代過程中每一代都會進(jìn)行橫向交叉和縱向交叉兩種交叉方式,從而使得種群中某些陷入維局部最優(yōu)的維有機(jī)會跳出迭代??v橫交叉算法每次交叉后得出的解稱為中庸解 ( ) ,通過引入競爭算子,使得這兩種交叉方式有機(jī)的結(jié)合起來:每次交叉操作之后都會進(jìn)入競爭算子,與父代進(jìn)行競爭,只有比父代更優(yōu)秀的粒子會被保留下來進(jìn)入下次迭代,得出的解稱為占優(yōu)解 (
) 。
1.1 橫向交叉操作
橫向交叉類似于 GA 的交叉操作,是在種群中兩個不同個體粒子相同維之間進(jìn)行的一種算數(shù)交叉。假設(shè)父代個體粒子 和
的第
維進(jìn)行橫向交叉,則它們產(chǎn)生子代的公式如下:
式中: 是 [0, 1] 之間的隨機(jī)數(shù);
是 [ - 1, 1] 之間的隨機(jī)數(shù);
分別是父代種群中個體粒子
和
的第
維;
和
分別是
和
通過橫向交叉產(chǎn)生的第
維子代。
不同個體粒子的相同維度的上下限范圍是相同的,從社會學(xué)的角度來看,式 (1) 中的 是粒子
的記憶項,是粒子本身的當(dāng)前最優(yōu)值。
是粒子
和
的群體認(rèn)知項,表示了不同粒子間的相互影響。這兩項通過慣性權(quán)重因子
較好的結(jié)合在一起。
是學(xué)習(xí)因子,第三項
可以增大搜索區(qū)間,在邊緣尋優(yōu)。橫向交叉操作完成后,得到的中庸解
必須分別與父代粒子
的適應(yīng)度比較,只有適應(yīng)度更好的中庸解才可以保留下來,成為占優(yōu)解
,參與下一次迭代。
1.2 縱向交叉操作
縱向交叉是種群中一個粒子的兩個不同的維之間進(jìn)行的一種算數(shù)交叉。由于不同維元素的取值范圍不同,因而交叉前須將兩維進(jìn)行歸一化處理,并且為了使已陷入維局部最優(yōu)而停滯的那一維跳出局部最優(yōu)而又不破壞另外一維的信息,每次縱向交叉操作只產(chǎn)生一個子代粒子,只對其中一維進(jìn)行更新。
假定粒子 的第
維和第
維是參與縱向交叉,根據(jù)公式 (3) 產(chǎn)生中庸解
。
式中: ;
是個體粒子
的第
維和第
維通過縱向交叉產(chǎn)生的第
維后代。
式 (3) 中的第一項是粒子 的第
維的記憶項,第二項是粒子
的第
維和第
維相互影響,通過慣性權(quán)重因子
結(jié)合在一起。這樣得到的中庸解
不但包含父代粒子
的第
維的信息,還依一定概率含有
的第
維信息,并不會破壞
的第
維信息。中庸解
與父代粒子
比較適應(yīng)度,較好的保留下來作為占優(yōu)解
,進(jìn)行下一次迭代。
CSO 的操作流程可總結(jié)如下:
1)根據(jù)具體的問題初始化種群
2)執(zhí)行橫向交叉,然后執(zhí)行競爭算子,得到 DSh 作為縱向交叉的父代
3)執(zhí)行縱向交叉,然后執(zhí)行競爭算子,得到 DSv 作為下一次橫向交叉的父代
4)判斷是否達(dá)到最大迭代次數(shù)或者指定的結(jié)束條件,如果是,則終止算法,否,
則轉(zhuǎn)到步驟 2)。
2.算法結(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=