雍龍泉,黎延海 ,賈 偉
1.陜西理工大學 數學與計算機科學學院,陜西 漢中 723000
2.陜西省工業自動化重點實驗室,陜西 漢中 723001
優化問題來源于人類對某種最優結果的追求,傳統優化方法主要包括解析法、迭代法等。自從法國數學家柯西提出最速下降法之后,最優化的理論與算法逐漸形成。隨著復雜、不可微、大規模優化問題的出現,優化問題的求解算法也從牛頓法、共軛梯度法、Powell法等發展到智能優化算法。文獻[1]中給出了百余種智能優化算法,并對這些算法進行了歸類。大體分為如下幾類。
(1)仿植物生長算法,包括人工植物優化算法、人工藻類算法、樹根優化算法、森林優化算法、入侵雜草優化算法、種子優化算法、花朵授粉優化算法等。
(2)群體智能優化算法,包括蟻群算法、粒子群算法、人工蜂群算法、蛙跳算法、人工魚群算法、鯨魚優化算法、細菌覓食算法、細菌趨藥性算法、狼群算法、猴群算法、貓群優化算法、灰狼優化算法、布谷鳥優化算法、螢火蟲算法、生物地理學優化算法等。
(3)進化算法,包括遺傳算法、進化規劃、進化策略、分布估計算法、差分進化算法、DNA計算、Memetic算法、文化算法等。
(4)仿自然優化算法,包括模擬退火算法、混沌優化算法、隨機分形搜索算法、量子搜索算法、智能水滴優化算法、水波優化算法、人工雨滴算法、云搜索算法、氣象模型優化算法、風驅動優化算法、宇宙大爆炸算法、引力搜索算法、極值動力學優化算法、閃電搜索算法、光線優化算法、化學反應優化算法等。
(5)仿人智能優化算法,包括神經網絡算法、免疫算法、內分泌算法、人工代謝算法、禁忌搜索算法、和聲搜索算法、思維進化算法、社會進化算法、人口遷移算法、頭腦風暴優化算法、教與學優化算法等。
近十年涌現了眾多優秀的智能優化算法,然而一個算法在某些優化問題上的優異表現并不能保證其在其他問題上的有效性,即不存在一個算法能有效解決所有的優化問題,這便是著名的“無免費午餐”定理(No Free Lunch,NFL)。于是學者們不斷嘗試開發新的算法。正弦余弦算法(Sine Cosine Algorithm,SCA)是一種新型的群智能優化算法(屬于仿自然優化算法),由澳大利亞學者Mirjalili于2016年提出,該算法利用正弦余弦函數的性質,使解震蕩性的趨于全局最優,算法中自適應參數和隨機性參數較好地平衡了算法的探索和開發能力,并解決了機翼設計問題[2]。正弦余弦算法具有參數少、結構簡單、易實現、收斂速度快等優點,在實際應用中具有較優的性能,因此,近三年以來引起了國內外學者的廣泛關注。
本文首先給出了正弦余弦算法,接著分析了正弦余弦算法的搜索原理和影響算法性能的主要參數,并對正余弦算法的改進及應用進行了綜述,最后展望了正余弦算法的發展前景。
下面給出正弦余弦算法的主要步驟。
初始化算法參數:種群規模N,空間維數D,控制參數a,最大迭代次數Tmax;在可行域空間中隨機初始化N個個體組成初始種群;t=1;計算當前每個個體的適應值,并記錄最優個體位置P(t);while(t<Tmax)
fori=1toN do //對每一個個體進行更新
forj=1toD do //對每一維上進行更新
根據式r1=a-at/Tmax計算r1的值;
隨機產生r2∈U[0,2π],r3∈U[0,2],r4∈

end for
end for
越界處理;
計算每個個體的適應值并更新種群的最優個體位置 P(t);t=t+1;
end while
正弦余弦算法結構簡單,容易實現,其最顯著的特點是基于正弦函數式(1)和余弦函數式(2)值的變化來達到尋優目的。在正弦余弦算法中,主要有r1,r2,r3,r4四個參數。其中,最關鍵的是自適應參數r1,控制算法從全局搜索到局部開發的轉換。當r1的值較大時,算法傾向于全局搜索;當r1的值較小時,算法偏向于局部開發。該算法利用正弦余弦函數的周期實現全局搜索和局部開發。
圖1給出了a=2,Tmax=300與a=2,Tmax=1 000時r1sin(r2)與r1cos(r2)的圖像。
當r1>1時,函數r1sin(r2)與r1cos(r2)值才有可能大于1或者小于-1;當r1≤1時,函數r1sin(r2)與r1cos(r2)值必在-1和1之間。根據SCA算法設計原理,算法先進行全局搜索再進行局部開發。當 | r1sin(r2)|>1或者|r1cos(r2)|>1時,算法進行全局搜索;當 | r1sin(r2)|≤1或者|r1cos(r2)|≤1時,算法進行局部開發;如圖2所示。

圖1 r1sin(r2)與r1cos(r2)的圖像

圖2 r1=2,r3=1時r1sin(r2)和r1cos(r2)的波動性及算法搜索策略
圖3 ~6給出了函數圖像及收斂性曲線。
本節給出采用SCA算法求解幾個優化問題,包括單峰函數與多峰函數,程序用MatlabR2009a編寫,參數設置N=30,a=2,Tmax=1 000。表1給出了測試函數,
SCA中每個個體更新通過下面的迭代實現:

表1 測試函數

圖3 函數 f1的圖像及SCA算法收斂性曲線

圖4 函數 f2的圖像及SCA算法收斂性曲線

圖5 函數 f3的圖像及SCA算法收斂性曲線

圖6 函數 f4的圖像及SCA算法收斂性曲線

迭代式(3)與(4)各以0.5的概率選取,由于正弦函數平移后便可以得到余弦函數,所以正弦函數和余弦函數的函數值分布是相同的。因此,雖然r2∈U[0,2π]是隨機數,但是從概率角度而言,r1sin(r2)與r1cos(r2)的函數值分布幾乎相同。
取a=2,Tmax=10 000,r1=a-at/Tmax,r2∈U[0,2π],圖7給出了r1sin(r2)與r1cos(r2)函數值的頻數分布直方圖。
從圖3可知,r1sin(r2)與r1cos(r2)頻數直方圖幾乎是等效的。結合圖1與r1=a-at/Tmax可以得出,當迭代次數之后,r1<1,于是算法不再進行全局探索。
表2對基本粒子群算法(PSO)、差分進化算法(DE)、和聲搜索算法(HS)、正余弦算法(SCA)進行了橫向對比,主要列舉了算法中影響全局搜索或局部開發的主要參數及更新模式。

圖7 函數r1sin(r2)與r1cos(r2)的頻數直方圖

表2 PSO,DE,HS,SCA四種算法的搜索機制對比
SCA算法主要由4個參數r1,r2,r3,r4決定,算法后期主要進行局部開發,因此與其他智能算法一樣,也存在早熟現象;與其他算法不同的是,SCA算法跳出了一般智能優化算法的思路,僅僅利用正弦余弦函數的震蕩性趨于最優。
(1)對參數r1的改進
鑒于參數r1控制著算法的搜索過程,因此大部分的學者對參數r1的改進做了許多的研究。諸如采用非線性遞減的拋物線函數r1=a(1-t/Tmax)2和指數函數r1=aexp(-t/Tmax)。若采用拋物線函數,則當t>(1-1/a)Tmax時r1<1;若采用指數函數,則當t>Tmaxlna時r1<1。王遠在文獻[3]中給出了更多的參數r1表達式;石磊在文獻[4]中構造了一個平衡全局搜索和局部開發、尾部收斂適中的參數r1;劉勇等人對其參數r1展開研究,提出轉換參數r1非線性遞減的正弦余弦算法[5-9]。表3中給出了6種參數r1的表達式,圖8、9給出了參數r1的圖像。

圖8 參數=1,i=1,2,…,6的圖像(橫向看)

圖9 參數=1,i=1,2,…,6的圖像(縱向看)
對轉換參數r1的改進,要么采用凸函數、要么采用凹函數;從圖9可以看出,同等條件下,當進化代數達到一半時,計算可得r(2)1 (2)對參數r2的改進 石磊在文獻[4]中提出了正弦大擾動分布和余弦小擾動分布,對參數r2做了改進;曲良東等人研究了r1sin(r2)和r1cos(r2)函數值的等效性,用式(3)替換式(4),提出了一個簡化的正弦余弦算法,稱之為正弦算法[5];同樣,若用式(4)替換式(3),便可以得到余弦算法。 (3)對參數r3的改進 石遠在文獻[3]中對參數r3的改進,結合反向學習策略,給出了一種改進的正弦余弦算法,并應用于焊接梁的設計。 (4)增加慣性權重 表3 更多參數r1的表達式 借鑒對基本粒子群算法增加慣性權重得到標準粒子群算法的思路,文獻[6]給出了帶有正弦余弦權重的粒子群算法;文獻[4]給出了帶有權重的正弦余弦算法。 為了提升SCA算法的性能,擴展SCA算法的應用領域,研究者們開發了多種SCA算法的變體。 針對高維優化問題,文獻[7]提出了SCA的改進版本(ISCA)。提出了一種引入慣性權重的修正位置更新方程,以加快收斂速度,避免陷入局部最優狀態。另外,為了平衡對SCA的探索和開發,使用了一種基于高斯函數的新型非線性轉換參數策略。 文獻[8]提出了一種新穎的正弦余弦算法改進版本,提高了解的利用能力,并減少了經典SCA搜索方程中存在的多樣性溢出問題。算法主要將交叉開發技術與個體最優狀態相融合,并引入了自學習和全局搜索機制。 文獻[10]提出了一種基于鄰域搜索和貪婪Levy變異的改進正弦余弦算法。算法采用指數遞減轉換參數和線性遞減慣性權重的方法來平衡算法的全局搜索能力和局部開發能力。并利用最優個體附近的隨機個體代替原算法中的最優個體,使算法容易跳出局部最優,有效地增加了搜索范圍。 文獻[11]提出了基于Riesz分數階導數變異策略的改進正弦余弦算法(RFSCA)。新算法采用擬反向學習對種群進行初始化,提高了種群的多樣性。采用具有二階精度的分數階導數的近似公式,構造了一種新的變異方法來更新最優個體,提高了算法的計算精度。 文獻[12]提出了一種增強型腦風暴正弦余弦算法(EBS-SCA)算法。算法采用EBS策略來改善種群多樣性,提出了2個新的個體更新策略:個體更新策略與開發策略,實現全局搜索與局部開發之間的有效平衡。 文獻[13]將粒子群算法與正弦余弦算法中的位置更新方程和levy飛行方法相結合,提出了基于正弦余弦算法和Levy-flight的混合粒子群優化算法。 為增強正弦余弦算法的全局尋優能力,避免算法陷入局部最優,文獻[14]將正弦余弦算法作為一種局部算法嵌入到花授粉中,對花粉個體分別進行正弦和余弦優化,提出一種融合正弦余弦算法的花授粉算法;文獻[15]在算法迭代后期,引入正弦余弦操作來更新當前蝙蝠個體的位置,提出了一種融合正弦余弦的蝙蝠算法。 文獻[16]在保持SCA算法框架不變的情況下,使用云模型來自適應地調整控制參數,提出了一種基于云模型的正弦余弦算法(CSCA),通過13個具有不同維度的基準測試函數對CSCA進行評估,實驗結果表明,CSCA算法在魯棒性和可擴展性方面優于其他SCA變體。 文獻[17]提出了改進的正弦余弦算法,根據擾動率的相反數生成反向種群,并在SCA的搜索方程中增加了自適應機制,從而有助于跳出局部最優。 文獻[18]提出了一種多目標正弦余弦算法(MO-SCA)。MO-SCA采用精英非支配排序和擁擠距離方法來獲得不同的非支配級別,并分別保留最優解集之間的多樣性。更多的改進算法見文獻[19-26]。 目前SCA算法已成功應用到0-1背包問題、城市土地利用空間的優化配置、環境保護、NoC測試中,并獲得了較好的結果[27-30]。文獻[31]提出了一種正弦余弦算法與穩態遺傳算法的混合算法來解決工程設計問題,該算法綜合了穩態遺傳算法(SSGA)的開發能力和正余弦算法(SCA)的搜索能力,通過SSGA的交叉和變異操作以及SCA的機制生成新一代個體,并將算法應用于兩個復雜的工程設計問題。下面結合國內外研究現狀,對正弦余弦算法的應用進行分類歸納。 在水熱動力系統調度問題(HTS)中,文獻[32]提出了一種新的正弦余弦算法,算法合理地利用了SCA的不同控制參數來平衡探索和開發階段,從而找到接近全局的最優解,并被應用于解決不同的情況(經濟負荷調度、經濟排放調度、組合經濟排放調度)和水熱風調度(HTWS)問題。 文獻[33]將正弦余弦算法應用于非光滑經濟/生態排放負荷調度(EELD)問題,通過同時優化EELD問題中兩個相互矛盾的目標——經濟和排放,在搜索空間中創建了搜索代理的隨機初始種群,獲得了帕累托最優解。 短期熱液調度的目的是在特定的時間間隔內優化不同熱液單元的每小時發電量,以最大程度地降低發電總成本。在兼顧閥點負載效應和傳輸損耗的情況下,文獻[34]將正弦余弦算法用于解決短期熱液調度問題,并使用六個具有不同成本函數的不同測試系統,與通過其他最新開發的技術獲得的結果進行比較,所提方法在生成成本和仿真時間方面優于現有結果。文獻[35]將正弦余弦算法用于解決電力系統經濟調度問題。 文獻[36]利用正弦余弦算法優化分數階串級控制器,研究了可再生能源和實際裝置對熱系統的影響。提出了一種新的分數階串級控制器的新組合,使用隨機正余弦算法對所有二級控制器的增益和所需參數進行優化,并與傳統控制器進行了性能對比,結果表明其性能優于其他控制器。 文獻[37]將改進的正弦余弦算法(MSCA)應用于常規PID和模糊PID控制器的設計中,以積分時間絕對誤差為目標函數,將過沖、欠沖和穩定時間作為暫態參數,分析了無控制電力系統的動態特性。分析結果表明,基于MSCA的FPID控制器具有較好的瞬態響應特性,其欠沖、超沖和穩定時間均較短。通過改變電力系統的一些重要參數進行魯棒性分析,表明所提出的FPID控制器對參數變化的敏感性較低。 文獻[38]使用正余弦算法來設計自動電壓調節器(AVR)系統最優比例積分微分(PID)控制器的參數,采用時域性能指標對所提出的SCA-PID控制器進行了驗證。與差分進化(DE)、人工蜂群(ABC)和基于生物地理學的優化(BBO)相比,結果表明方法在改善AVR系統暫態響應方面具有高效性和魯棒性。 文獻[39]提出了一種通過改進的正弦余弦算法(ISCA)優化的自適應模糊邏輯PID控制器(AFPID),并應用于自主發電系統的負載頻率控制。 文獻[40]對正弦余弦算法中影響算法全局探索和局部開發能力的重要參數進行了調整,使搜索結果更精確,將改進后的算法用于模糊控制器量化因子和比例因子的優化。 針對電力系統穩定器的優化設計,文獻[41]提出由特征值和基于時域的目標函數組成多目標函數,利用SCA技術實現了該目標函數的最小化和穩定器參數的優化,并測試了用SCA設計的穩定器對不同擾動下電力系統低頻振蕩的魯棒性和有效性。通過線性模型穩定性分析和非線性時域仿真,將所提出的基于SCA的PSS(SCAPSS)與基于BAT算法的PSS(BAPSS)和基于共生有機體搜索算法的PSS(SOSPSS)進行結果比較,分析結果表明,該方法能使同步電機轉子的低頻振蕩具有更快的阻尼和最小的超調,在最終解的精度、收斂速度、計算時間、阻尼比、轉子角度的確定時間等方面,SCA都優于其他兩種算法。 文獻[42]根據總成本、總功率損耗、總電壓偏差和電壓穩定指標,采用正余弦算法對應急電力加載穩定性進行了優化。 文獻[43]在標準的正余弦算法的基礎上增加了Levy飛行策略,提出了一種基于正余弦技術的最優潮流算法,并應用于不同目標函數下的最優潮流問題。基于系統的運行和經濟性能指標,以IEEE30和IEEE118節點系統為例,并與其他優化方法對比,驗證了所提算法的有效性和潛力。 為了優化最大功率點跟蹤(MPPT),文獻[44]給出了一個改進的正弦余弦優化的算法。實驗分析表明,在穩態、動態條件下,算法收斂速度快,易于實現,計算量少。 文獻[45]使用正余弦算法(SCA)來優化自適應神經模糊推理系統(ANFIS)模型中的參數,并用于預測石油消費量。文獻[46]給出了一種基于多目標正弦余弦算法(MOSCA)混合預測系統,來同時提高預測精度和穩定性。并以兩個風電場采集的8個風速數據為例,對所開發的預測系統進行了性能分析。結果表明,所開發的預測系統在精度和穩定性方面均優于比較模型,是一種有效的風速預測方法。 文獻[47]利用正弦余弦算法來優化支持向量回歸SVR中的懲罰參數和核參數,提出了一種新的SCA-SVR模型,提高了對未知數據的泛化性能。并在常用基準數據集上,與其他一些元啟發式優化算法進行比較,實驗結果表明,該模型能夠找到SVR參數的最優值。 文獻[48]使用改進的自適應正弦余弦算法(ASCA)和快速學習網(FLN)建立了汽輪機熱耗率綜合預測模型,并應用某600 MW超臨界汽輪機組現場運行數據建立汽輪機熱耗率預測模型,并將ASCA算法優化的結果與其他方法的結果進行比較,檢驗了所提方法的有效性。 文獻[49]提出了基于最優變分模分解(OVMD)和帶有混沌的正弦余弦算法的最小二乘支持向量機(LSSVM);文獻[50-53]使用正弦余弦算法來優化支持向量機(SVM)的最佳學習參數,并成功應用于模擬電路故障診斷、年徑流豐枯識別、氣象預測、故障預報等問題。 文獻[54-55]應用正弦余弦優化算法研究多閾值圖像分割。文獻[56]提出了一種結合極限學習機(extreme learning machine)的正弦余弦算法,并應用于腦病理檢測;在三個標準數據集上與其他有效方案進行了嚴格的比較評估,結果表明,該方法在分類精度和所需特征數方面均優于同類方案,能夠實時有效地識別腦病理。 針對目標跟蹤問題,文獻[57]提出了正弦余弦優化與差分進化算法的混合算法(SCA-DE),并與其他算法進行了比較研究,結果表明,混合算法能夠在各種挑戰條件下對任意目標進行魯棒跟蹤。文獻[58]提出了一種求解優化問題和目標跟蹤問題的混合算法(SCA-PSO),將粒子群算法搜索原理嵌入到SCA中,該算法結合PSO算法的開發能力和SCA算法的搜索能力,實現全局搜索。 為了提高無線傳感器網絡(WSN)的性能,文獻[59]提出了一種基于改進正弦余弦算法(ESCA)。ESCA算法引入雙曲正弦調節因子和動態余弦波權重系數,并引入基于拉普拉斯和高斯分布的變異策略以平衡算法的全局探索與局部開發能力,將ESCA應用于WSN節點部署優化,結果表明其優化覆蓋率優于改進粒子群優化算法、人工蜂群算法、灰狼優化算法和自適應混沌量子粒子群算法。文獻[60]采用正弦余弦算法求解無線傳感器網絡的生存期優化問題,并與遺傳算法和粒子群算法進行了比較。 正弦余弦算法通過不斷調整正弦函數和余弦函數值來達到尋優目的,算法結構簡單,容易實現,提出雖然不到3年,但是已被廣泛應用于各類工程優化問題。作為智能優化算法,正弦余弦算法同樣也存在早熟收斂、求解精度低等缺點,下一步還有許多工作需要研究。 (1)改進算法。借鑒粒子群算法(PSO)、差分進化算法(DE)、和聲搜索算法(HS)、教與學優化算法(TLBO)、生物地理學優化(BBO)等算法的優點,來改進正弦余弦算法,旨在提高種群多樣性[61],從而增強算法的全局搜索能力。 (2)算法應用。目前正弦余弦算法大多應用于求解確定性優化問題,在不確定優化,如魯棒優化、機會約束優化、隨機優化、動態多目標優化等領域仍待進一步研究。 (3)理論分析。對正弦余弦算法建立數學模型,從理論上研究其收斂性;通過差分方程、馬爾科夫鏈等數學理論來研究正弦余弦算法的收斂性。
4.2 搜索機制的改進
4.3 與其他算法混合
5 正弦余弦算法應用
5.1 調度問題
5.2 控制器優化
5.3 電力系統優化
5.4 數據挖掘
5.5 圖像處理
5.6 目標跟蹤問題
5.7 無線傳感器網絡優化
6 結束語