遺傳演算法理解

2021-04-25 20:59:49 字數 1048 閱讀 4558

3月20

日,有個同學問我一些關於遺傳演算法的**編寫,我按照她的思路寫出來第一二,四步。

但是不明白為什麼要這樣做。

我今天查了一些遺傳演算法相關資料,大概明白她為什麼要我這樣寫**了。以下是我的理解。

遺傳演算法的基本思想借鑑的是生物學基礎的遺傳和進化。

生物進化的一般過程:

1.首先要有乙個初始種群,種群的個體染色體或基因,該種群被稱為第一代。

這相當於第一步:初始化兩個二維陣列,陣列的元素取值為1,

2,3,

4,可類似理解成組成基因的

4中蛋白質。而元素的排列可類似理解成基因的序列。

2.繁殖下一代。有性生殖生物在繁殖下一代時,兩個同源染色體之間通過交叉而重組,亦即在兩個染色體的某一相同位置處

dna被切斷,其前後兩串分別交義組合而形成兩個新的染色體。

這相當於第二步:把兩個陣列的前

n個元素一一對換,因為染色體之間交叉的情況是隨機的。所以在這之前,先把兩個陣列的元素各自隨機排列一下。

3.淘汰和進化。基因的交叉將在後代個體中表現出新的混合特徵。根據達爾文的自然選擇學說,生物在生存競爭中,根據對環境的適應能力,適者生存,不適者消亡。自然界中的生物,就是根據這種優勝劣汰的原則,不斷地進行進化的。

這相當與第三步:通過乙個稱為適應度的變數來評估生物對環境的適應程度,適應度數越大,個體表現出來的生物特徵越適應環境。而對於你這個選課系統來說,通過建立乙個適應度函式,來評估兩個陣列的適應度(可理解成選課系統的合理性),適應度數越大越合理。

4.基因突變。生物在進化的過程當中有時會發生基因突變。

這相當於是第四步:為了模擬生物的基因突變,把這一代適應度較強的那個陣列(相當於是基因序列),隨機選出兩個元素互相交換。

5.迭代和迴圈。生物的進化往往要經過成千上外代才可以。

這相當於是演算法的迭代:迴圈第二至四步。直至收斂(收斂的標準要根據實際問題去定義),得出的結果可能就是整體最優解。「可能「是因為假如適應度函式設計不當(比如適應度需要的各因素權重不當)等問題,將會得出的結果根本不對或不符合常理。

所以,綜合以上所述,適應度函式的設計是整個遺傳演算法設計當中的關鍵中的關鍵。

我對遺傳演算法理解

1 始祖值 2 隨機交叉 3 優秀標準 4 精英策略 5 收斂 始祖值,a 1 echo print r a echo 雜湊值 any array 2,4,7,8,10,12,51,32,11 echo print r any echo 交叉並啟動精英策略,假設後代的和越大越優秀 foreach a...

我對遺傳演算法理解

1 始祖值 2 隨機交叉 3 優秀標準 4 精英策略 5 收斂 始祖值,a 1 echo print r a echo 雜湊值 any array 2,4,7,8,10,12,51,32,11 echo print r any echo 交叉並啟動精英策略,假設後代的和越大越優秀 foreach a...

遺傳演算法的理解

遺傳演算法是一種啟發式的隨機多引數優化演算法,能夠解決多種尋優問題,如揹包問題,求解函式極值點,影象配準引數優化,神經網路中的網路權係數的優化等等。遺傳演算法可以說是模擬自然界種群的進化過程。根據達爾文進化理論,生物種群在世世代代的繁衍過程中,適應環境的優良特性會一代代遺傳下去,不適應環境的特性則逐...