正余弦優(yōu)化算法(Sine cosine algorithm,SCA)是由Mirjalili [1]在2016年提出,目前WOS上引用量2K+,谷歌學(xué)術(shù)上4K+。
不得不說Seyedali Mirjalili真是位大神級(jí)的人物(下圖是Mirjalili開發(fā)的部分算法)
SCA的核心思想是利用正、余弦函數(shù)波動(dòng)的周期性,在全局范圍內(nèi)探索最優(yōu)解,使算法逐步收斂。其具有結(jié)構(gòu)簡(jiǎn)單、參數(shù)少、易于實(shí)現(xiàn)的特點(diǎn)。其優(yōu)化性能優(yōu)于GA、PSO、花授粉等,已被廣泛用于數(shù)據(jù)分類、光譜特征峰定位和電力系統(tǒng)調(diào)度等不同領(lǐng)域。
另一方面,算法的混合來看,混合元啟發(fā)式算法的主要目標(biāo)是利用每種算法的優(yōu)點(diǎn),以最大限度地減少每種算法的缺點(diǎn)。正是由于SCA模型的簡(jiǎn)單及其優(yōu)秀的搜索性能,其更易于算法的混合。
本文主要內(nèi)容包括:SCA算法原理,SCA算法的改進(jìn)與利用思路,以及SCA算法的MATLAB和Python代碼實(shí)現(xiàn)。
00 目錄
1 正余弦算法SCA原理
2 改進(jìn)&利用
3 代碼目錄
4 算法性能
5 源碼獲取
01 正余弦算法SCA原理
SCA的獨(dú)特之處在于使用正弦和余弦波來控制探索和開發(fā)搜索空間。下面的數(shù)學(xué)方程可以描述這個(gè)過程:
Pt ij指示迭代t中的最佳個(gè)體位置。此外,有四個(gè)隨機(jī)參數(shù)r1,r2,r3和r4。r1控制搜索代理的下一個(gè)位置,如果r1小于1,則傾向于開發(fā),如果r1大于1,則傾向于勘探。為了平衡勘探與開發(fā),r1的定義式是線性遞減的,其中a一般取2。r2表示向外或向內(nèi)的移動(dòng)步長(zhǎng),r2參數(shù)的范圍是[0,2 π]。r3在0和2之間的范圍內(nèi),如果r3大于1,則更注重全局最優(yōu)位置,否則不強(qiáng)調(diào)。r4是在0和1之間的隨機(jī)參數(shù),用以轉(zhuǎn)換正弦和余弦。
其尋優(yōu)示意圖如下:
圖:陳亮, 湯顯峰. 改進(jìn)正余弦算法優(yōu)化特征選擇及數(shù)據(jù)分類[J]. 計(jì)算機(jī)應(yīng)用, 2022, 42(6): 1852-1861.
以上就是SCA的全部理論,很簡(jiǎn)單吧~
02 改進(jìn)&利用
根據(jù)沒有免費(fèi)的午餐(NFL)定理[2],沒有一個(gè)算法可以處理所有的優(yōu)化問題,即每個(gè)算法都有其優(yōu)勢(shì)和局限性,這也激勵(lì)著學(xué)者提出各種改進(jìn)的算法來解決不同類型的優(yōu)化問題,同時(shí)也為算法間的混合利用提供了參考。
2.1 改進(jìn)
SCA在面對(duì)復(fù)雜問題時(shí)仍然存在優(yōu)化精度低、容易陷入局部極值、收斂速度慢等問題,這里給出一種思路。SCA中,r1用于平衡全局搜索和局部開發(fā)能力,但線性遞減的策略使得前期遞減的過快,全局搜索不充分,后期遞減的過慢,無法快速收斂,因此可以設(shè)計(jì)一種非線性的參數(shù)r1以提高其搜索能力。同時(shí),針對(duì)其易陷入局部最優(yōu)的問題,也可以引入如Levy等變異策略。
2.2 利用
SCA模型的正余弦震蕩變化特性使其在解空間具有良好的搜索能力,可以直接引入該式替換算法某部分的尋優(yōu),或是將其融入算法的更新方程中,如下是一篇文獻(xiàn)[A collaboration-based hybrid GWO-SCA optimizer for engineering optimization problems]的思路(將SCA融入GWO中):
原GWO算法
融入SCA的GWO算法
03 代碼目錄
代碼包含MATLAB和Python,考慮到很多同學(xué)獲取代碼后,MATLAB代碼部分有亂碼(MATLAB版本問題),可以將MATLAB版本改為2020及以上,或使用亂碼解決文件夾中的txt文件即可。
代碼都經(jīng)過作者重新注釋,代碼更清爽,可讀性強(qiáng)。
部分代碼:(MATLAB與Python)
04算法性能
采用標(biāo)準(zhǔn)測(cè)試函數(shù)初步檢驗(yàn)其尋優(yōu)性能
在Matlab中,進(jìn)行CEC2005函數(shù)的測(cè)試,執(zhí)行程序結(jié)果如下:
在Python中,進(jìn)行CEC2005函數(shù)的測(cè)試,執(zhí)行程序結(jié)果如下:
05 源碼獲取
在GZH(KAU的云實(shí)驗(yàn)臺(tái))后臺(tái)回復(fù) SCA 即可
參考文獻(xiàn)
[1] MIRJALILI S.SCA:A sine cosine algorithm for solving optimization problems[J].Knowledge-Based Systems,2016,96:120-133.
[2] Wolpert DH, Macready WG. No free lunch theorems for optimization. IEEE transactions on evolutionary computation 67–82, 1997.
另:如果有伙伴有待解決的優(yōu)化問題(各種領(lǐng)域都可),可以發(fā)我,我會(huì)選擇性的更新利用優(yōu)化算法解決這些問題的文章。文章來源:http://www.zghlxwxcb.cn/news/detail-814608.html
如果這篇文章對(duì)你有幫助或啟發(fā),可以點(diǎn)擊右下角的贊/在看(? ??_??)?(不點(diǎn)也行),你們的鼓勵(lì)就是我堅(jiān)持的動(dòng)力!文章來源地址http://www.zghlxwxcb.cn/news/detail-814608.html
到了這里,關(guān)于SCA|可作為有效改進(jìn)策略的算法——正余弦優(yōu)化算法(Matlab/Python)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!