最近學習遺傳算法
遺傳算法的實現有6個主要因素:參數的編碼、初始種群的設定、適應度函數的設計、遺傳操作、算法控制參數的設定、約束條件的處理。
基因gene 染色體 chromosome 群體population 復制reproducation 交叉 crossover 變異mutation 適應性 fitness
SGA 基本遺傳算法(Simple Genetic Algorithm) 遺傳算子 Genetic Operator
SGA基本步驟
1、染色體編碼與解碼 2、個體適應度的檢測評估 3、遺傳算子(選擇運算使用比例選擇算子、交叉運算使用單點交叉算子、變異運算使用基本位變異算子或者均勻變異算子) 4、運行的主要參數 M群體規模 T終止條件 Pc交叉概率 Pm變異概率。
優化問題的基本遺傳算法構造過程:
1、確定決策變量和約束條件 2、建立優化模型 3、確定編碼方法 4、確定解碼方法 5、確定個體評價方法 6、設計遺傳算子和確定遺傳算法的運行參數。
一、編碼 (Coding and Decoding)
編碼:把一個問題的可行解從其解空間轉換到遺傳算法所能處理的搜索空間的轉換方法。
解碼:由遺傳算法解空間向問題空間的轉換。
二進制編碼的缺點之一是Hamming Cliff 海明懸崖:某些相鄰整數的二進制代碼間有很大的海明距離,使得交叉和突變都難以跨越。
De Jong依據模式定理,提出的編碼准則:
1、積木塊規則:編碼應當易於生成與所求問題相關的短距和低階的積木塊。
2、最小字符集規則:編碼應采用最小字符集以使問題得到自然的表示和描述。
主要的編碼方法有:二進制編碼、格雷碼、浮點數編碼、多參數級聯編碼、多參數交叉編碼。
編碼的評估策略:完備性、健全性、非冗余性
二、選擇
選擇是在群體中選擇生命力強的個體產生新的群體的過程。
根據每個個體的適應度值大小選擇,適應度較高的個體被遺傳到下一代群體的概率較大。這樣使得群體中個體的適應度值接近最優解。
常用的選擇算子:輪盤賭選擇(Roulette Wheel Selection)、隨機競爭選擇(Stochastic Tournament)、最佳保留選擇、無回放隨機選擇、確定式選擇、無回放余數隨機選擇、均勻選擇、最優保存策略、隨機聯賽選擇、排擠選擇(小生境常用)。
三、交叉
交叉:是按較大的概率從群體中選擇兩個個體,交換兩個個體的某個或某些位。
交叉運算產生子代,子代繼承了父代的基本特征。
交叉算子的設計包括兩個主要內容:確定交叉點位置、如何進行部分基因的交換。
幾種適合二進制編碼和浮點數編碼個體的交叉算子:單點交叉、兩點交叉與多點交叉、均勻交叉、算術交叉。
交叉算法是產生新個體的主要算法,它決定了遺傳算法的全局搜索能力。
四、變異
變異:是以較小概率對個體編碼串上的某個或某些位值進行改變。
變異運算,是指將個體染色體編碼串中的某些基因座上的基因值用該基因座的其他等位基因來替換,從而形成新的個體。
變異本身是一種隨機算法,只是產生新個體的輔助算法,它決定了遺傳算法的局部搜索能力。
適合於二進制編碼和浮點數編碼個體的幾種變異算子:基本位變異、均勻變異、邊界變異、非均勻變異、高斯近似變異
五、適應度函數
適應度函數也稱評價函數,是根據目標函數確定的用於區分群體中個體好壞的標准,總是非負的,任何情況下都希望其值越大越好。
在選擇操作中,會出現兩個成為遺傳算法欺騙的問題:
(1、)在遺傳算法初期,通常會產生一些超常個體,按照比例選擇法,這些超常個體會因競爭力突出,而控制選擇過程,影響到算法的全局優化性能。
(2、)遺傳算法后期,當算法趨於收斂時,由於種群中個體適應度差異較小,繼續優化的潛能降低,可能獲得某個局部最優解。
適應度函數的設計主要滿足以下條件:
(1)單值、連續、非負、最大化。
(2)合理、一致性。
(3)計算量小
(4)通用性強。
在遺傳算法的不同階段,還需要對個體適應度進行適當的擴大或縮小,成為適應度的尺度變換,主要有三種:線性尺度變換、乘冪尺度變換、指數尺度變換。
六、控制參數的選擇。
交叉概率Pc始終控制着遺傳運算中起主導地位的交叉算子,一般建議取值范圍是0.4~0.99。
變異概率Pm一般建議取值范圍是0.0001~0.1
群體規模一般可以根據實際情況在10~200之間選定。
七、約束條件的處理
根據具體問題一般可選擇三種方法:搜索空間限定法、可行解變換法、罰函數法