1. 程式人生 > 實用技巧 >【排程】遺傳演算法的基本理論

【排程】遺傳演算法的基本理論

遺傳演算法(geneticalgorithm,GA)是由美國Michigan大學的JohnHolland教授在1975年首先提出的,它是一種模擬生物自然進化現象的優化演算法。隨後在1989年,Goldberg的著作對遺傳演算法做了更為全面而系統的總結,也由此奠定了遺傳演算法的基礎。
遺傳演算法借用了生物遺傳學的思想,以及自然界中的“物競天擇,適者生存”原則,將問題的解表示成“染色體”,通過模擬自然選擇、交叉、變異等操作,實現個體適應度的提高,不斷迭代,逐步尋找最優解(或次優解)。遺傳演算法在求解問題時,從一組隨機產生的初始種群開始搜尋。種群中一個個體(individual)表示問題的一個解,稱為染色體(chromosome)。種群通過連續的迭代進行進化,每一次迭代操作產生一代(generation)。在每一代中用適應度函式(fitnessfunction)或目標函式(objectivefunction)對每個個體進行評價(evaluation),適應度值高的個體被選中的概率高。迭代過程的下一代稱為子代(offspring),通過選擇(selection)、交叉(crossover)、變異(mutation)等遺傳運算元產生子代。遺傳演算法有五個基本要素:編碼和解碼;種群初始化方法;適應度函式;遺傳運算元(主要包括選擇、交叉、變異等);遺傳引數設定(種群規模、遺傳運算元的概率等)等。圖3.1所示為基本遺傳演算法的流程框圖。

假設P表示種群規模,t表示當前代,P(t)和C(t)表示第t代的父代和子代,那麼基本的遺傳演算法執行步驟如下。
步驟1按照一定的初始化方法產生初始種群P(t),t=0。
步驟2評價種群P(t),計算每個個體的適應度值。
步驟3判斷是否滿足終止條件,如果滿足則輸出結果;否則轉步驟4。
步驟4按照選擇、交叉、變異等遺傳運算元產生子代C(t)。
步驟5P(t)=C(t),轉步驟2,t=t+1。
在這裡插入圖片描述

遺傳演算法是一種通用的優化演算法,其編碼技術和遺傳操作比較簡單,優化過程不受限制性條件的約束,使它能夠在複雜空間中進行全域性優化搜尋,並具有較強的魯棒性。與傳統的優化方法相比,遺傳演算法具有以下特點。
(1)遺傳演算法是對問題引數的編碼即“染色體”進行操作,而非對引數本身進行操作的。進化過程中,只是在評價個體適應度值時需要使用問題的具體資訊,而其他部分並不需要了解問題本身的資訊,這使得遺傳演算法不受函式約束條件的限制(如連續或可微),設計簡單且適應性廣。

(2)遺傳演算法的搜尋過程是從問題的解的集合開始,而不是從單個解開始的,具有隱含並行搜尋特性。可將搜尋重點集中於效能高的部分,從而可以提高搜尋效率,並且減小了陷入區域性極小的可能性,易得到全域性最優解。
(3)遺傳演算法在問題解空間的整個搜尋過程中是在概率指導下完成的、有方向的啟發式搜尋,與窮舉或完全隨機的搜尋不同,因而具有較高的效率。在初始階段,等概率初始化保證了搜尋點均勻地覆蓋整個解空間;之後在適應度值的概率選擇,以及交叉、變異等概率的指導下,搜尋逐漸向適應度值高的區域集中,直到收斂到適應度值最高的區域為止