遺傳算法(Genetic Algorithm, GA)是一種基于自然群體遺傳演化機(jī)制的高效探索算法,它是美國(guó)學(xué)者Holland于1975年首先提出來(lái)的。

它摒棄了傳統(tǒng)的搜索方式,模擬自然界生物進(jìn)化過(guò)程,采用人工進(jìn)化的方式對(duì)目標(biāo)空間進(jìn)行隨機(jī)化搜索。它將問(wèn)題域中的可能解看作是群體的一個(gè)個(gè)體或染色體,并將每一個(gè)體編碼成符號(hào)串形式,模擬達(dá)爾文的遺傳選擇和自然淘汰的生物進(jìn)化過(guò)程,對(duì)群體反復(fù)進(jìn)行基于遺傳學(xué)的操作(遺傳,交叉和變異),根據(jù)預(yù)定的目標(biāo)適應(yīng)度函數(shù)對(duì)每個(gè)個(gè)體進(jìn)行評(píng)價(jià),依據(jù)適者生存,優(yōu)勝劣汰的進(jìn)化規(guī)則,不斷得到更優(yōu)的群體,同時(shí)以全局并行搜索方式來(lái)搜索優(yōu)化群體中的最優(yōu)個(gè)體,求得滿足要求的最優(yōu)解。

Holland創(chuàng)建的遺傳算法是一種概率搜索算法,它是利用某種編碼技術(shù)作用于稱為染色體的數(shù)串,其基本思想是模擬由這些組成的進(jìn)化過(guò)程。跗算法通過(guò)有組織地然而是隨機(jī)地信息交換重新組合那些適應(yīng)性好的串,在每一代中,利用上一代串結(jié)構(gòu)中適應(yīng)好的位和段來(lái)生成一個(gè)新的串的群體;作為額外增添,偶爾也要在串結(jié)構(gòu)中嘗試用新的位和段來(lái)替代原來(lái)的部分。

遺傳算法是一類隨機(jī)化算法,但是它不是簡(jiǎn)單的隨機(jī)走動(dòng),它可以有效地利用已經(jīng)有的信息處理來(lái)搜索那些有希望改善解質(zhì)量的串,類似于自然進(jìn)化,遺傳算法通過(guò)作用于染色體上的基因,尋找好的染色體來(lái)求解問(wèn)題。與自然界相似,遺傳算法對(duì)待求解問(wèn)題本身一無(wú)所知,它所需要的僅是對(duì)算法所產(chǎn)生的每個(gè)染色體進(jìn)行評(píng)價(jià),并基于適應(yīng)度值來(lái)造反染色體,使適用性好的染色體比適應(yīng)性差的染色體有更多的繁殖機(jī)會(huì)。

基因:組成染色體的單元,可以表示為一個(gè)二進(jìn)制位,一個(gè)整數(shù)或一個(gè)字符等。

染色體或個(gè)體:表示待求解問(wèn)題的一個(gè)可能解,由若干基因組成,是GA操作的基本對(duì)象。

群體:一定數(shù)量的個(gè)體組成了群體,表示GA的遺傳搜索空間。

適應(yīng)度或適度:代表一個(gè)個(gè)體所對(duì)應(yīng)解的優(yōu)劣,通常由某一適應(yīng)度函數(shù)表示。

選擇:GA的基本操作之一,即根據(jù)個(gè)體的適應(yīng)度,在群體中按照一定的概論選擇可以作為父本的個(gè)體,選擇依據(jù)是適應(yīng)度大的個(gè)體被選中的概率高。選擇操作體現(xiàn)了適者生存,優(yōu)勝劣汰的進(jìn)化規(guī)則。

交叉:GA的基本操作之一,即將父本個(gè)體按照一定的概率隨機(jī)地交換基因形成新的個(gè)體。

變異:GA的基本操作之一,即即按一定概率隨機(jī)改變某個(gè)體的基因值。

串行遺傳算法基本步驟

(1) 對(duì)待解決問(wèn)題進(jìn)行編碼;
(2) 隨機(jī)初始化群體X(0):=(x1, x2, … xn);
(3) 對(duì)當(dāng)前群體X(t)中每個(gè)個(gè)體xi計(jì)算其適應(yīng)度F(xi),適應(yīng)度表示了該個(gè)體的性能好壞;
(4) 應(yīng)用選擇算子產(chǎn)生中間代Xr(t);
(5) 對(duì)Xr(t)應(yīng)用其它的算子,產(chǎn)生新一代群體X(t+1),這些算子的目的在于擴(kuò)展有限個(gè)體的覆蓋面,體現(xiàn)全局搜索的思想;
(6) t:=t+1;如果不滿足終止條件繼續(xù)(3)。