(8)基於機器的編碼。該方法是將每個染色體用所有機器的排列,並以此通過移動瓶頸法(其將各機器逐一排列,每時刻在未排列的機器中定義一台機器為瓶頸,當一台新機器被排列時,所有先前已建立的排列將被再次優化。其中,瓶頸的確定和局部再優化過程基於重複解決某一個單機調度問題而進行)來構造調度。該編碼方式的特點可歸納為:半Lamarkian性;三類解碼複雜性;僅能表征部分解空間,不能保證全局最優解的存在性及碼長小於標準長度。

(9)隨機鍵編碼。該方法是將調度解編碼成隨機數,這些值用作排列鍵來解碼。具體而言,每個基因包括兩部分,即{1,2,…,m}集合中的一個整數以及(0,1)中的隨機分數。任意隨機鍵的整數部分解釋為工件的機器分配,對分數部分的排列則提供每一機器上工件的順序。該編碼方式的特點可歸納為:不具有Lamarkian性、一類解碼複雜性、表征解空間可能對應非法解、需要對操作的優先順序作附加處理及碼長為標準長度。

從上述分析可見,基於操作或工件的編碼具有較好的Lamarkian性和較低的解碼複雜性。本書將采用這兩種編碼方法。

(二)交叉操作分析

交叉操作是模仿自然界有性繁殖的基因重組過程,其目的是利用父代個體組合出後代新個體,在盡量降低有效模式破壞概率的基礎上,對解空間進行高效率搜索。進化計算中的GA算法流派認為,交叉操作是主要的遺傳操作,GA的性能在很大程度上依賴於所使用的交叉操作。對於二進製編碼GA,通常采用單點交叉和多點交叉;十進製編碼GA的交叉操作類似於二進製編碼GA。現在GA的編碼一般都采用實數,針對實數編碼的GA交叉操作通常采用雙個體算術交叉或多個體算術交叉。

(三)變異操作分析

變異操作是模擬自然界生物體進化中,染色體上某位基因發生的變異現象,從而改變染色體的結構和物理性狀。變異操作在一定程度上克服了算法的早熟收斂,有利於增加種群的多樣性。對於組合優化問題中的置換編碼GA,通常采用互換、逆序和插入變異:

(1)互換操作(SWAP),即隨機交換染色體中兩個不同基因的位置。

(2)逆序操作(INV),即將染色體中兩個不同隨機位置間的基因串逆序。

(3)插入操作(INS),即隨機選擇某個點插入到串中的不同隨機位置。

譬如,若狀態為(532169874),兩個隨機位置為3,7,則SWAP的結果為(538169274),INV的結果為(538961274),INS的結果為(538216974)。

(四)算法終止條件

GA算法求解調度優化問題時,一般有以下兩個停止準則:

(1)通過遺傳進化參數人為控製遺傳進化收斂所需要的遺傳進化操作步數,從而終止遺傳進化。

(2)通過計算遺傳進化過程中種群的收斂度,自動終止進化過程。

由於GA算法是一種概率型隨機搜索算法,因此不能保證算法終止時最後得到的群體最優解一定優於進化過程中的中間群體中的個體。因此,通常將迭代過程中產生的每一代群體中的最優個體保留在一個數組中,最後將該數組中的最優個體作為搜索結果。

(五)GA算法的特點

GA算法作為一種快捷、簡便、容錯性強的算法,在各類結構對象的優化過程中顯示出明顯的優勢。與傳統的搜索方法相比,GA算法具有如下特點[112,113]:

(1)搜索過程不直接作用在變量上,而是在參數集進行了編碼的個體。此編碼操作,使得GA算法可直接對結構對象(集合、序列、矩陣、樹、圖、鏈和表等)進行操作。

(2)搜索過程是從一組解迭代到另一組解,采用同時處理群體中多個個體的方法,降低了陷入局部最優解的可能性,並易於並行化。

(3)采用概率的變遷規則來指導搜索方向,而不采用確定性搜索規則。對搜索空間沒有任何特殊要求(如連通性、凸性等),隻利用適應性信息,不需要導數等其他輔助信息,適應範圍更廣。

可見,GA算法的優點是:

(1)具有大範圍全局搜索的能力,與問題領域無關。

(2)搜索從群體出發,具有潛在的並行性;可進行多值比較,魯棒性強。

(3)搜索使用評價函數啟發,過程簡單。

(4)使用概率機製進行迭代,具有隨機性。

(5)具有可擴展性,容易與其他算法結合。

其缺點是:對於係統中的反饋信息利用不夠,當求解到一定範圍時,往往要做大量、無為的冗餘迭代,求精確解效率低。