遺傳演算法(1) 初步認識

2021-08-19 20:08:37 字數 1553 閱讀 9753

最近學習了遺傳演算法,嘗試著把它按照理解寫下來。對於遺傳演算法從名字上就可以看出來是和生物有關的東西,可以認為是和生物進化有關係,在生物進化裡面又有一句話叫:物競天擇,適者生存。也就是說受環境的影響,最終會留下那些能適應環境的生物。如果從生物學裡面進行考慮可能會涉及到 一堆的概念名詞,如:染色體,個體,種群,基因突變等。如果遺傳演算法是根據生物進化進行設計其必定包含這些概念和過程。下面從概念和過程這兩個方面對遺傳演算法進行乙個簡單的說明。

染色體其實就是問題的乙個解,如何理解呢,首先你有乙個問題,比如求乙個函式式裡面的x的使得函式式裡面的值最大,那麼這個解就是這個x的具體某乙個值。

函式式:f(x)=x+10sin(x) ,x取值範圍為(1,10)

這裡可以把x的解作為一條染色體。那麼染色體的取值範圍就是x的取值範圍。既然是乙個解那麼對於計算機來說染色體用什麼來表示呢?這裡就涉及到編碼的問題。編碼的方式有二進位制編碼和實數編碼。

假設x=5,如果染色體採用二進位制編碼,定義染色體的長度為5的話那麼它應該是下面的形式

二進位制編碼:[00101]

那麼問題來了,如果問題是求一堆貨物存放的位置,使得它滿足某個函式式。如空間座標,那麼應該怎麼定義。

首先需要知道的是要求的解是什麼。這裡的解其實就是貨物的座標,那麼是不是就是(x,y)呢?是(x,y)。但更確切的說是每個貨物的(x,y)。也就是說你有多少個貨物就應該有多少個(x,y)。加入有五個貨物,那麼染色體應該是至少有十個基因,每個基因代表乙個(x,y)。但這往往不好求,實際當中染色體可以是十個基因,也就是x和y分別用乙個基因表示。如下圖:

z=(x,y)

[z1,z2,z3,z4,z5]

[x1,y1,x2,y2,x3,y3,x4,y4,x5,y5]

也就是說每兩個基因就是乙個解。最終得到就是上面的染色體。

若採用實數編碼則:

座標:(1,2)-(4,5)

-(1,3)

-(6,2)

-(5,7)

實數編碼 [1,2,4,5,1,3,6,2,5,7]

個體這裡可以理解成是一條染色體

種群是由很多個個體組成,可以自己定義種群的大小。

適應度函式是用來評價個體的好壞,它指導著整個群體的進化方向。上面的函式式就可以作為適應度函式。適應度函式很多情況下可以用目標函式代替,也就是求解的函式。

此時可能你應該知道適應度函式式需要根據實際情況來定。當你有乙個問題需要解決,你首先會建立數學模型,也就是變成函式,如果想用遺傳演算法來解這個函式,那麼此時需要對這個函式式分析,將其轉成適應度函式,或者是根據這個目標函式寫出相應的適應度函式。

交叉操作:交換基因

變異操作:根據變異概率對染色體進行變異

過程也就是計算過程:

上圖的操作過程只是比較簡單的操作過程,在實際當中還會還有很多別的方法來實現。

[1]

遺傳演算法初步探析

貌似遺傳演算法看起來挺神秘的,但要真正初步的了解一下它的大概思想還是挺簡單的。我只想用最通俗的話和最簡單的程式設計來講講遺傳演算法。先來求解乙個最簡單的問題,求解f x x 2的最大值 x屬於 0,31 即求解x的平方在 0,31 的最大值.現在我們用遺傳演算法來求解這個題目。先解釋一下生物界的一些...

認識多種群遺傳演算法

多種群遺傳演算法是自己寫 用的智慧型演算法,遺傳演算法的高階版。其流程圖如下 其中sga即為普通的標準遺傳演算法,可見多種群遺傳演算法中展開的多種群由不同控制引數的sga來保持種群的差異化。控制引數為交叉概率p c和變異概率p m,其值決定了演算法全域性搜尋和區域性搜尋能力的均衡,可按下式計算 式中...

遺傳演算法摘錄1

遺傳演算法 ge ic algorithm 是一類借鑑生物界的進化規律 適者生存,優勝劣汰遺傳機制 演化而來的隨機化搜尋方法。它是由美國的j.holland教授1975年首先提出,其主要特點是直接對結構物件進行操作,不存在求導和函式連續性的限定 具有內在的隱並行性和更好的全域性尋優能力 採用概率化的...