GA算法是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機製等)演化而來的隨機化搜索方法。它是由美國密執安大學的J.Holland教授於1975年首先提出[60],其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;采用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。GA算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控製和人工生命等領域。它是現代有關智能計算中的關鍵技術之一[108]。
GA算法與自然選擇
達爾文的自然選擇學說是一種被人們廣泛接受的生物進化學說。這種學說認為,生物要生存下去,就必須進行生存鬥爭。生存鬥爭包括種內鬥爭、種間鬥爭以及生物跟無機環境之間的鬥爭這三個方麵。在生存鬥爭中,具有有利變異的個體容易存活下來,並且有更多的機會將有利變異傳給後代;具有不利變異的個體就容易被淘汰,產生後代的機會也少得多。因此,凡是在生存鬥爭中獲勝的個體都是對環境適應性比較強的。達爾文把這種在生存鬥爭中適者生存、不適者淘汰的過程叫做自然選擇。它表明,遺傳和變異是決定生物進化的內在因素。自然界中的多種生物之所以能夠適應環境而得以生存進化,是同遺傳和變異生命現象分不開的。正是生物的這種遺傳特性,使生物界的物種能夠保持相對的穩定;而生物的變異特性,使生物個體產生新的性狀,以至於形成新的物種,推動了生物的進化和發展。
GA算法是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型。它的思想源於生物遺傳學和適者生存的自然規律,是具有“生存+檢測”的迭代過程的搜索算法。GA算法以一種群體中的所有個體為對象,並利用隨機化技術指導對一個被編碼的參數空間進行高效搜索。其中,選擇、交叉和變異構成了GA算法的遺傳操作;參數編碼、初始群體的設定、適應度函數的設計、遺傳操作設計和控製參數設定這五個要素組成了GA算法的核心內容。作為一種新的全局優化搜索算法,GA算法以其簡單通用、魯棒性強、適於並行處理以及高效、實用等顯著特點,在各個領域得到了廣泛應用,取得了良好效果,並逐漸成為重要的智能算法之一。
GA算法的基本步驟
人們習慣上把Holland於1975年提出的GA稱為傳統的GA。它的主要步驟如下[60]:
選擇編碼方式。
(2)對待解決問題進行編碼,將解空間的解數據表示成遺傳空間的基因型串結構數據,這些串結構數據的不同組合便構成了不同的解。
(3)隨機初始化群體X(0):=(x1,x2,…,xn);隨機產生N個初始串結構數據,每個串結構數據稱為一個個體,N個個體構成了一個群體。GA以這N個串結構數據作為初始點開始迭代。
(4)對當前群體X(t)中每個個體xi計算其適應度F(xi);適應性函數表明個體或解的優劣性。不同的問題,適應性函數的定義方式也不同。
(5)應用選擇算子產生中間代Xr(t);選擇的目的是為了從當前群體中選出優良的個體,使它們有機會作為父代為下一代繁殖子孫。GA算法通過選擇過程體現這一思想,進行選擇的原則是適應性強的個體為下一代貢獻一個或多個後代的概率大。選擇算子實現了達爾文的“適者生存”原則。選擇算子從群體中按某一概率成對選擇個體,最通常的實現方法是輪盤賭(roulettewheel)模型。
(6)對Xr(t)應用交叉、變異等其他算子,產生新一代群體X(t+1)。交叉算子將被選中的兩個個體的基因鏈按概率Pc進行交叉,生成兩個新的個體,交叉位置是隨機的。變異首先在群體中隨機選擇一個個體,對於被選中的個體以一定的概率隨機地改變串結構數據中某個串的值。同生物界一樣,GA中變異發生的概率很低,通常取值為0001~001。變異為新個體的產生提供了機會。這些算子的目的在於擴展有限個體的覆蓋麵,體現全局搜索的思想。各種算子的實現是多種多樣的,而且許多新的算子正在不斷地提出,以改進GA的某些性能。
(7)t=t+1;如果不滿足終止條件,則繼續(4)。
GA算法中,係統參數(個體數n、基因鏈長度l、交叉概率Pc、變異概率Pm等)對算法的收斂速度及結果有很大的影響,應視具體問題選取不同的值。