一、遺傳算法原理
遺傳算法(Genetic Algorithm, GA)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程尋找最優解的方法。如圖1為遺傳算法基本流程圖,遺傳算法將種群中的所有個體的表現型映射為數值即編碼,並利用隨機化技術對一個被編碼的參數空間高效搜索。初始化種群后,依照適者生存和優勝劣汰的法則,獲得更好的近似解。其中,遺傳算法的遺傳操作為選擇、交叉和變異;而遺傳算法的中心內容包括了特征編碼、初始群體數的設定、適應度函數的設計、遺傳交叉與變異設計、控制基本參數設定五個因素。
圖 1 遺傳算法基本流程圖
二、遺傳算法基本操作
1、編碼
設計染色體編碼時的方法非常多樣,每個問題可能采用的編碼方式不一樣,主要包括二進制編碼、浮點編碼和符號編碼等。二進制編碼即對於每個個體,個體特征是否選中使用0/1(0表示不選擇該特征,1表示選擇該特征)編碼,每個個體表示為一個二進制串。二進制編碼中的特征選擇能有效緩解維災難。
2、適應度函數設計
初始生成種群后就使用適應度函數(fitness function)評價個體適應度。適應度函數也稱評估函數,是根據目標函數 確定的,用於辨別群體中個體優差的標准。
適應度函數一般都是非負的,目標函數可以正也可以為負,變換兩者就成了必然。評估個體適應度主要分為三個步驟:(1)對個體染色體編碼序列進行解碼,得到個體特征表現型。(2)根據個體的特征表現型計算出對應個體的目標函數值。(3)根據目標函數值按照最優化問題的類型和一定的轉變規則獲得個體的適應度。
3、選擇
輪盤賭選擇(Roulette Wheel Selection)、隨機競爭選擇(Stochastic Tournament)、最佳保留選擇(Best Retention Selection)、無回放隨機選擇以及一些排序方式一般作為選擇函數的選項。
4、交叉
遺傳算法的交叉操作,是將兩個相互配對的染色體按某種隨機方式互相交換其部分基因,從而構成新的個體。對於二進制編碼的個體主要使用單點交叉、兩點與多點交叉、均勻交叉和算術交叉。
5、變異
遺傳算法中的個體變異運算是指個體染色體編碼串中的某些基因座上的基因值用該基因座上的其余等位基因來替換,從而構成新的個體。基因位突變(Simple Mutation)、(非)均勻變異(Uniform Mutation)、邊界變異(Boundary Mutation)和高斯近似變異等幾種變異方法是針對二進制編碼的個體基因突變的首選。
三、參考文獻與代碼
[1] 遺傳算法詳解(GA),https://blog.csdn.net/u010451580/article/details/51178225
[2] 超詳細的遺傳算法(Genetic Algorithm)解析,https://www.jianshu.com/p/ae5157c26af9
[3] python版代碼:https://github.com/XjCaoer/Algorigthm-Research/blob/master/GA/GA.py