基本概念
最優化問題可分為兩類,一類是求最大值,一類是求最小值,這里的最大最小指的是目標函數,當然通常也把目標函數叫適應度;
而遺傳算法本身是求最大值的,因為優勝劣汰,得到的是適應度最大的個體;
如果想求最小值,就需要做適應度函數變換;
如果目標函數之間差別很小,個體被選擇的概率也就相差不大,這樣算法的選擇功能將被大大弱化,此時也可作適應度函數變換;
如果有其他需求,或者個性化設計,也需要適應度函數變換;
適應度函數變換也叫 標定
適應度(目標函數)的設計 和 適應度函數變換 是 兩碼事
函數設計的基本思想
適應度函數(目標函數)
目標函數的設計主要是結合業務,可分為單目標和多目標
設計不當有可能出現欺騙問題:
(1)進化初期,個別超常個體控制選擇過程;
(2)進化末期,個體差異太小導致陷入局部極值 ;
適應度函數變換
1. 適應度不能既有正又有負,這樣算概率時沒法算,為了方便計算,一般保證適應度全為正;
2. 適應度一般不為 0,因為 0 的概率為 0,永遠不會被選擇,沒有意義;
3. 適應度函數變換的核心就是為了使得 適應度高的個體更容易被選擇;
標定方法
方法很多,這里做個總結
線性變換
max:減去最小值的目的,一是防止出現負數,二是增加相對差別;
min:目標函數加負號,即取最小,最大值減去目標函數也是防止出現負數;
加上 ξ 是為了避免出現 0;
動態線性變換
把線性標定中 ξ改成了ξ的k次方,希望開始的時候,大家都有機會,而越到后面,越要保留優秀的個體
下面這張圖挺不錯的,雖然內容有重復,也貼上來
M 就是一個初始值,可為 1, 也可不為 1,ξk € [0, 1]
其他標定
以下方法不太常用,包括 冪律標定、對數標定、指數變換、窗口技術、正規化技術、
參考資料:
https://blog.csdn.net/qcyfred/article/details/76731706 遺傳算法(2):對適應度函數的改進