MTO變量縮放與統一決策空間
覺得有用的話,歡迎一起討論相互學習~
CIHS1
- 在CIHS1問題中,或者以CIHS1問題舉例,第一維度是[-1,1]之間,第2-50維度是[-100,100]之間。最優點取第一維0-1之間,而後49維度取0。這意爲着第一維是控制多樣性而後49維控制者收斂。
- MTO優化的特點是將所有任務的決策變量縮放到一個統一的空間,這個空間可以是[-N,N]或者[0,1].但是要保證所有變量的範圍是相等的。在
jmetal的標準測試集中
這一步是必須的,因爲在有double vars[] = scaleVariables(solution);//將決策變量基因型轉化爲表現型
這個函數,無論是其是第一維還是後幾維無論是控制收斂還是多樣的變量都會將其還原到問題原來的範圍。 - 這意味着如果將第一維仍然約束到-1,1而後幾維約束到-100,100.這樣在縮放的時候就會產生問題,無論統一空間是多少還是不使用統一空間。因爲在評價函數中統一決策空間的用法已經寫死了。因此,使用只有統一決策空間初始化並且把在進化時的變量控制在統一空間中才是 正確的 ,例如:如果統一空間是0-1,則所有變量都約束到0-1,而不論原來的範圍,因爲
scaleVariable
函數都會將其還原。
示例1
- 首先是一個
NSGA-II
的例子,將決策空間到-100-100,其結果較好!
- 但是仔細觀察其決策變量,你會發現其還是用的-100,100的統一空間進行評價而沒有單獨控制變量的範圍,如果按照問題集原來的標準,這個解的第一維度早就已經 越界了
- 橫軸表示第一維,-100到100的空間,其實已經越界了
示例2
- 其次仍然是一個
NSGA-II
的例子,但是此時將其決策空間縮放到0-1之間,其結果任然很好!,這是NSGA-II,但是已經有實驗證明某些算法其實是對統一空間的範圍在某些算例中敏感的。 即[0,1]和[-100,100]的決策空間對算法性能影響較大,主要還是進化算子和選擇策略以及是否對不同維度變量範圍敏感決定的
- 但是仔細觀察其決策變量,你會發現其還是用的[0,1]的統一空間進行評價而不是變量原來的範圍,如果按照問題集原來的標準,這個解的2-49維度的最優值應該落在0處,而不是0.5.
- 小學二年級學過(0-100)/(100-(-100))=0.5 0.5*(1-0)+0=0.5 意思就是 [-100,100]中的最優點0.5就是[0,1]空間中的0.5
示例3
- 舉個錯誤的例子,如果使用[-100,100]的統一空間即有語句
problemSet.setUnifiedLowerLimit(-100);
problemSet.setUnifiedUpperLimit(100);
但是變量還是約束在原來的範圍,即第一維還是控制在在0-1之間 ,這種方式其實沒有運用到統一決策空間,而是傳統的算法。但是由於scaleVariable
函數在評價解時的默認縮放效果。最終會收斂到一個點。這是因爲多樣性是靠第一維進行維持的,空間在[-100 - 100],[0,1]只是取了很小的一個子集,就好像前沿上的一個小點一樣。全部縮成了一團。 即使你的算法跑的很好,由於統一決策空間評價的關係,算法也會顯得很爛!