不同智能優化算法如何進行性能分析比較?
智能優化算法一類隨機優化算法,算法每次執行結果略有差異, 該類算法通常通過模仿現實生活中的某種行為機制的方式而被提出,不同種類的算法優化機理不同,即使同一算法及其改進算法在搜索機理上也往往存在很大差別。對於搜索性能穩定的算法這種差異相對較小,而對於搜索性能波動較大的算法每次執行結果差異較為明顯。如何衡量算法間的優劣呢?為此,學術界提出了多種不同的算法性能評價基准,其中較為典型的就是國際進化計算會議提出的CEC系列基准測試函數,通過重復測試算法尋找函數全局最優值的相關數據統計值實現對算法的性能評估。當前主要的數據統計指標包括:均值,方差,最大值,最小值,中位數值。
在算法實驗測試過程中,我們首先假定待評估的算法為A,算法評估測試函數選定為F1,F2,…,F10。
首先,對於測試函數F1,算法A重復運行R輪,每一輪循環迭代次數為T,在每輪迭代過程中記錄每一代搜索到的全局最優適應度數值,並記錄為bf1,bf2,…,bf_t.那么本次迭代過程中全局最優適應度數值等於最后的bf_t(因為搜索迭代的過程就是逐步逼近最優的過程,長江后浪推前浪,一代總比一代強~)。如下圖
然后,繼續重復測試得到類似的數據。同理,對於算法B,記錄與算法A相同的數據。基於上述數據我們就可以得到R輪測試中的各種統計指標,其中包括最佳適應度數值的均值mean,標准方差std,最大值Max,最小值Min,繪制各算法的收斂曲線Convergence curve,繪制算法的統計箱圖Boxplot(直截了當看出兩種或多種算法在某函數上搜索的性能高低)。根據統計數值結果如何判斷算法A和算法B的優劣呢?這就需要通過統計的方法進行分析,通過假設檢驗的方法判斷在某個函數上,算法A的搜索性能優於B具有顯著性或算法A搜索性能次於B具有顯著性,或者A和B搜索性能相當在統計學意義上具有顯著性。假設檢驗的方法有很多(無參的檢驗,有參的檢驗),其中較為典型的統計檢驗方法包括:t檢驗方法,wilcoxn秩和檢驗方法。