從今天開始,將進入另一類智慧型優化演算法——進化計算(evolutionary computation),這些演算法更多的是基於達爾文的《演化論》相關理論進行演算法的設計。進化演算法(evolutionary algorithms,eas)通常包括遺傳演算法(genetic algorithms,ga)、遺傳規劃(genetic programming,gp)、進化策略(evolution strategies)和進化規劃(evolutionary programming)。由於這些演算法都是借鑑生物界的進化與遺傳的機理,相對容易理解和實現,因此常用於解決複雜的工程技術問題。在介紹進化演算法的用途和概念之前,先了解一下生物學中進化與遺傳的概念。
地球上的生物都是經過長期進化而形成的,根據達爾文的自然選擇學說,地球上的生物具有很強的繁殖能力,在繁殖過程中,大多數生物通過遺傳,使物種保持相似的後代;部分生物由於變異,後代會出現明顯差別,甚至會形成新的物種。隨著生物不斷繁殖,數量不斷增加,而自然界中生物賴以生存的資源卻是有限的,因此生物間存在激烈的競爭以求生存,更能適應環境的個體得以生存,而不適應者就會被淘汰。
進化演算法就是借用生物進化的規律,通過繁殖-競爭-再繁殖-再競爭,實現優勝劣汰,一步一步地逼近問題的最優解,進化演算法中的「進化」二字就是由此而來。
絕大多數生物的遺傳物質是dna(脫氧核糖核酸),dna一種高分子化合物,可以傳遞遺傳資訊,組成dna的基本單位是脫氧核苷酸,由於細胞裡的dna大部分在染色體上,因此遺傳物質的主要載體就是染色體。
控制生物遺傳的物質單元稱為基因,它是有遺傳效應的dn**段。每個基因含有成百上千個脫氧核苷酸。它們在染色體上是線性排列的,這種排列順序就代表了遺傳資訊。
在進化演算法中,為了形成具有遺傳物質的染色體,就用不同字元自稱的字串表達所研究的問題,這種字串就相當於染色體,其上的字元就相當於基因。
生物的主要遺傳方式是複製。遺傳過程中,父代的遺傳物質dna分子被複製到子代,以此傳遞遺傳資訊。
生物在遺傳過程中還會發生變異。變異的方式有3種:基因重組、基因突變和染色體變異。基因重組是重新組合控制物種性狀的基因、基因突變是指基因分子結構的改變。染色體變異是指染色體在結構或數量上的變化。
進化演算法中,仿效生物的遺傳方式,主要有複製、交叉、變異這3中遺傳操作。
在科學探索自然規律和工程製造實用產品的過程中,往往會遇到許多問題,優化問題便是其中之一。
對於優化問題,希望在變數的定義域內找到最優解,給定笛卡爾三維座標系下的可微實值函式f(x,y,z),其梯度為∇f=
(∂f∂
xi,∂
f∂yj
,∂f∂
zk)\nabla f=\left(\frac \mathbf, \frac \mathbf, \frac \mathbf\right)
∇f=(∂x
∂fi
,∂y∂
fj,
∂z∂f
k),其中i,j和k為三個方向上的單位向量。 ∇
f\nabla f
∇f的方向是函式f上公升最快的方向,其模衡量上公升快慢的程度。因此優化問題看起來很簡單,可以從任意初始點開始,通過梯度導引搜尋,直到找到梯度接近0的點。
不幸的是,這只適用於某些型別的問題。對於組合優化,沒有微分的定義;對於多目標優化,我們面對的是乙個向量函式f,通常在定義域中沒有乙個點的多個目標值都優於其他點;對於約束優化,沿梯度搜尋可能收斂於乙個違反某些約束的解。即使在可微無約束優化中,梯度也可能不起作用。讓我們以griewank函式為例:
min f
(x1,
x2)=
x12+
x224000
−cos(
x1)cos(
x22)
+1(1)\min f(,) = \frac^2 + ^2}}} - \cos ()\cos \left( }}}} \right) + 1\tag 1
minf(x
1,x
2)=
4000
x12
+x2
2−cos(x
1)cos(2
x2
)+1
(1)
很容易發現,該函式的全域性最優解是x=y=0。在定義域(-30≤x1,x2≤30)內該函式的圖形如圖1所示。
該函式存在非常多的區域性最優解(即多峰),以至於通過隨機生成初始解的梯度方法會很大概率的陷入其中。
約束優化、多峰優化、多目標優化和組合優化這四類問題為優化的核心,也是運籌學領域的熱門主題。研究人員提出了許多解決這些問題的方法,其中,進化演算法具有獨特的效能,受到越來越多的關注。
圖1 griewank函式
物種的自然進化可以看作是乙個學習如何適應環境和優化物種適應性的過程。所以在設計優化或學習演算法時,可以模仿現代遺傳學「適者生存」的觀點。
eas是用於任務優化或學習的具有進化能力的演算法,主要有三個特點:
基於種群:eas對一組稱為種群的解進行操作,從而以並行的方式優化或學習問題。
面向適應度:種群中的每個解稱為個體,每個個體有自己的基因表達,稱為編碼,效能評估為其適應度值。eas更偏好於選擇適應度值更優的個體,這是演算法優化和收斂的基礎。
變異驅動:個體將經歷許多變異操作來模擬遺傳基因的變化,這是搜尋解空間的基礎。
遺傳演算法是進化演算法中較為簡單且應用最廣泛的演算法,在生產排程領域也有很多學術研究,下一章內容將以更加生動有趣的**遺傳演算法來介紹選擇、交叉、變異等遺傳演算法基本操作,從而幫助不太了解遺傳演算法的讀者快速掌握。
2019 02 22 演算法 進化
題目描述 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew ...
2019 02 25 演算法 進化
題目描述 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例1 輸入 123 輸出 321示例2 輸入 123 輸出 321示例3 輸入 120 輸出 21我的解法 public int reverse int x int y 0 boolean findhead fals...
智慧型演算法 進化計算總結
1粒子群演算法 2改進的粒子群演算法 3遺傳演算法 4蟻群演算法 5量子粒子群演算法 6量子粒子群演算法 levy飛行 7模擬退火演算法優化計算 8sa模擬退火優化的pso粒子群演算法 9基於ac0的tsp求解 11基於人群搜尋演算法soa的函式優化 12基於萬有引力定律gsa的函式優化 13蝙蝠演...