導航:首頁 > 源碼編譯 > 遺傳演算法中隨機搜索演算法

遺傳演算法中隨機搜索演算法

發布時間:2025-06-17 11:42:33

㈠ 什麼是遺傳演算法

遺傳演算法(Genetic Algorithm)是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。它是由美國的J.Holland教授1975年首先提出,其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;採用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。遺傳演算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控制和人工生命等領域。它是現代有關智能計算中的關鍵技術。
對於一個求函數最大值的優化問題(求函數最小值也類同),一般可以描述為下列數學規劃模型:
遺傳演算法式中x為決策
變數,式2-1為目標函數式,式2-2、2-3為約束條件,U是基本空間,R是U的子集。滿足約束條件的解X稱為可行解,集合R表示所有滿足約束條件的解所組成的集合,稱為可行解集合。
遺傳演算法的基本運算過程如下:
a)初始化:設置進化代數計數器t=0,設置最大進化代數T,隨機生成M個個體作為初始群體P(0)。
b)個體評價:計算群體P(t)中各個個體的適應度。
c)選擇運算:將選擇運算元作用於群體。選擇的目的是把優化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的。
d)交叉運算:將交叉運算元作用於群體。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。遺傳演算法中起核心作用的就是交叉運算元。
e)變異運算:將變異運算元作用於群體。即是對群體中的個體串的某些基因座上的基因值作變動。
群體P(t)經過選擇、交叉、變異運算之後得到下一代群體P(t 1)。
f)終止條件判斷:若t=T,則以進化過程中所得到的具有最大適應度個體作為最優解輸出,終止計算。
遺傳演算法是從代表問題可能潛在的解集的一個種群(population)開始的,而一個種群則由經過基因(gene)編碼的一定數目的個體(indivial)組成。每個個體實際上是染色體(chromosome)帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因組合,它決定了個體的形狀的外部表現,如黑頭發的特徵是由染色體中控制這一特徵的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼,初代種群產生之後,按照適者生存和優勝劣汰的原理,逐代(generation)演化產生出越來越好的近似解,在每一代,根據問題域中個體的適應度(fitness)大小選擇(selection)個體,並藉助於自然遺傳學的遺傳運算元(genetic operators)進行組合交叉(crossover)和變異(mutation),產生出代表新的解集的種群。這個過程將導致種群像自然進化一樣的後生代種群比前代更加適應於環境,末代種群中的最優個體經過解碼(decoding),可以作為問題近似最優解。

㈡ 遺傳演算法的運算過程

遺傳操作是模擬生物基因遺傳的做法。在遺傳演算法中,通過編碼組成初始群體後,遺傳操作的任務就是對群體的個體按照它們對環境適應度(適應度評估)施加一定的操作,從而實現優勝劣汰的進化過程。從優化搜索的角度而言,遺傳操作可使問題的解,一代又一代地優化,並逼近最優解。
遺傳操作包括以下三個基本遺傳運算元(genetic operator):選擇(selection);交叉(crossover);變異(mutation)。這三個遺傳運算元有如下特點:
個體遺傳運算元的操作都是在隨機擾動情況下進行的。因此,群體中個體向最優解遷移的規則是隨機的。需要強調的是,這種隨機化操作和傳統的隨機搜索方法是有區別的。遺傳操作進行的高效有向的搜索而不是如一般隨機搜索方法所進行的無向搜索。
遺傳操作的效果和上述三個遺傳運算元所取的操作概率,編碼方法,群體大小,初始群體以及適應度函數的設定密切相關。 從群體中選擇優勝的個體,淘汰劣質個體的操作叫選擇。選擇運算元有時又稱為再生運算元(reproction operator)。選擇的目的是把優化的個體(或解)直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的,目前常用的選擇運算元有以下幾種:適應度比例方法、隨機遍歷抽樣法、局部選擇法。
其中輪盤賭選擇法 (roulette wheel selection)是最簡單也是最常用的選擇方法。在該方法中,各個個體的選擇概率和其適應度值成比例。設群體大小為n,其中個體i的適應度為,則i 被選擇的概率,為遺傳演算法
顯然,概率反映了個體i的適應度在整個群體的個體適應度總和中所佔的比例。個體適應度越大。其被選擇的概率就越高、反之亦然。計算出群體中各個個體的選擇概率後,為了選擇交配個體,需要進行多輪選擇。每一輪產生一個[0,1]之間均勻隨機數,將該隨機數作為選擇指針來確定被選個體。個體被選後,可隨機地組成交配對,以供後面的交叉操作。 在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。
交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。根據編碼表示方法的不同,可以有以下的演算法:
a)實值重組(real valued recombination)
1)離散重組(discrete recombination)
2)中間重組(intermediate recombination)
3)線性重組(linear recombination)
4)擴展線性重組(extended linear recombination)。
b)二進制交叉(binary valued crossover)
1)單點交叉(single-point crossover)
2)多點交叉(multiple-point crossover)
3)均勻交叉(uniform crossover)
4)洗牌交叉(shuffle crossover)
5)縮小代理交叉(crossover with reced surrogate)。
最常用的交叉運算元為單點交叉(one-point crossover)。具體操作是:在個體串中隨機設定一個交叉點,實行交叉時,該點前或後的兩個個體的部分結構進行互換,並生成兩個新個體。下面給出了單點交叉的一個例子:
個體A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新個體
個體B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新個體 變異運算元的基本內容是對群體中的個體串的某些基因座上的基因值作變動。依據個體編碼表示方法的不同,可以有以下的演算法:
a)實值變異
b)二進制變異。
一般來說,變異運算元操作的基本步驟如下:
a)對群中所有個體以事先設定的變異概率判斷是否進行變異
b)對進行變異的個體隨機選擇變異位進行變異。
遺傳演算法引入變異的目的有兩個:一是使遺傳演算法具有局部的隨機搜索能力。當遺傳演算法通過交叉運算元已接近最優解鄰域時,利用變異運算元的這種局部隨機搜索能力可以加速向最優解收斂。顯然,此種情況下的變異概率應取較小值,否則接近最優解的積木塊會因變異而遭到破壞。二是使遺傳演算法可維持群體多樣性,以防止出現未成熟收斂現象。此時收斂概率應取較大值。
遺傳演算法中,交叉運算元因其全局搜索能力而作為主要運算元,變異運算元因其局部搜索能力而作為輔助運算元。遺傳演算法通過交叉和變異這對相互配合又相互競爭的操作而使其具備兼顧全局和局部的均衡搜索能力。所謂相互配合.是指當群體在進化中陷於搜索空間中某個超平面而僅靠交叉不能擺脫時,通過變異操作可有助於這種擺脫。所謂相互競爭,是指當通過交叉已形成所期望的積木塊時,變異操作有可能破壞這些積木塊。如何有效地配合使用交叉和變異操作,是目前遺傳演算法的一個重要研究內容。
基本變異運算元是指對群體中的個體碼串隨機挑選一個或多個基因座並對這些基因座的基因值做變動(以變異概率P.做變動),(0,1)二值碼串中的基本變異操作如下:
基因位下方標有*號的基因發生變異。
變異率的選取一般受種群大小、染色體長度等因素的影響,通常選取很小的值,一般取0.001-0.1。 當最優個體的適應度達到給定的閾值,或者最優個體的適應度和群體適應度不再上升時,或者迭代次數達到預設的代數時,演算法終止。預設的代數一般設置為100-500代。

㈢ 遺傳演算法選中次數怎麼算

遺傳演算法選中次數演算法如下:

1、在搜索空間U上定義一個適應度函數f(x),給定種群規模N,交叉率Pc和變異率Pm,代數T。

2、隨機產生U中的N個個體s1, s2, sN,組成初始種群S={s1, s2, sN},置代數計數器t=1。

3、計算S中每個個體的適應度f() 。

4、若終止條件滿足,則取S中適應度最大的個體作為所求結果,演算法結束。

5、按選擇概率P(xi)所決定的選中機會,每次從S中隨機選定1個個體並將其染色體復制,共做N次,然後將復制所得的N個染色體組成群體S1。

6、按交叉率Pc所決定的參加交叉的染色體數c,從S1中隨機確定c個染色體,配對進行交叉操作,並用產生的新染色體代替原染色體,得群體S2。

7、按變異率Pm所決定的變異次數m,從S2中隨機確定m個染色體,分別進行變異操作,並用產生的新染色體代替原染色體,得群體S3。

8、將群體S3作為新一代種群,即用S3代替S,t=t+1,轉步3。

相關基本概念:

1、個體就是模擬生物個體而對問題中的對象(一般就是問題的解)的一種稱呼,一個個體也就是搜索空間中的一個點。

2、種群就是模擬生物種群而由若干個體組成的群體, 它一般是整個搜索空間的一個很小的子集。

3、適應度(fitness)就是借鑒生物個體對環境的 適應程度,而對問題中的個體對象所設計的 表徵其優劣的一種測度。

4、適應度函數(fitness function)就是問題中的 全體個體與其適應度之間的一個對應關系。 它一般是一個實值函數。該函數就是遺傳算 法中指導搜索的評價函數。

㈣ 基本遺傳演算法介紹

遺傳演算法是群智能優化計算中應用最為廣泛、最為成功、最具代表性的智能優化方法。它是以達爾文的生物進化論和孟德爾的遺傳變異理論為基礎,模擬生物進化過程和機制,產生的一種群體導向隨機搜索技術和方法。

遺傳演算法的基本思想:首先根據待求解優化問題的目標函數構造一個適應度函數。然後,按照一定的規則生成經過基因編碼的初始群體,對群體進行評價、遺傳運算(交叉和變異)、選擇等操作。經過多次進化,獲得適應度最高的一個或幾個最優個體作為問題的最優解。

編碼是對問題的可行解的遺傳表示,是影響演算法執行效率的關鍵因素的之一。遺傳演算法中,一個解 稱為個體或染色體(chromosome),染色體由被稱為基因(gene)的離散單元組成,每個基因控制顏色體的一個或多個特性,通常採用固定長度的0-1二進制編碼,每個解對應一個唯一的二進制編碼串編碼空間中的二進制位串稱為基因型(genotype)。而實際所表示問題的解空間的對應點稱為表現型(phenotype)。

種群由個體構成,每個個體的染色體對應優化問題的一個初始解。

適應度函數是評價種群中個體對環境適應能力的唯一確定性指標,體現出「適者生存,優勝劣汰」這一自然選擇原則。

遺傳演算法在每次迭代過程中,在父代種群中採用某種選擇策略選擇出指定數目的哥特體提進行遺傳操作。最常用的選擇策略是正比選擇(proportional selection)策略。

在 交叉運算元中,通常由兩個被稱為父代(parent)的染色體組合,形成新的染色體,稱為子代(offspring)。父代是在種群中根據個體適應度進行選擇,因此適應度較高的染色體的基因更有可能被遺傳到下一代 。通過在迭代過程中不斷地應用交叉運算元,使優良個體的基因得以在種群中頻繁出現,最終使得整個種群收斂到一個最優解。

在染色體交叉之後產生的子代個體,其基因位可能以很小的概率發生轉變,這個過程稱為變異。變異是為了增強種群的多樣性,將搜索跳出局部最優解。

遺傳演算法的停止准則一般採用設定最大迭代次數或適應值函數評估次數,也可以是規定的搜索精度。

已Holland的基本GA為例介紹演算法等具體實現,具體的執行過程描述如下:

Step 1: 初始化 。隨機生成含有 個個體的初始種群 ,每個個體經過編碼對應著待求解優化問題的一個初始解。

Step 2: 計算適應值 。個體 ,由指定的適應度函數評價其適應環境的能力。不同的問題,適應度函數的構造方式也不同。對函數優化問題,通常取目標函數作為適應度函數。

Step 3: 選擇 。根據某種策略從當前種群中選擇出 個個體作為重新繁殖的下一代群體。選擇的依據通常是個體的適應度的高低,適應度高的個體相比適應度低的個體為下一代貢獻一個或多個後代的概率更大。選擇過程提現了達爾文「適者生存」原則。

Step 4: 遺傳操作 。在選出的 個個體中,以事件給定的雜交概率 任意選擇出兩個個體進行 交叉運算 ,產生兩個新的個體,重復此過程直到所有要求雜交的個體雜交完畢。根據預先設定的變異概率 在 個個體中選擇出若干個體,按一定的策略對選出的個體進行 變異運算

Step 5: 檢驗演算法等停止條件 。若滿足,則停止演算法的執行,將最優個體的染色體進行解碼得到所需要的最優解,否則轉到 Step 2 繼續進行迭代過程。

閱讀全文

與遺傳演算法中隨機搜索演算法相關的資料

熱點內容
易語言rc4演算法 瀏覽:552
源碼項目網 瀏覽:817
批量加密發送工資條 瀏覽:472
php抓取遠程圖片到本地 瀏覽:617
社保人證app在哪裡下載 瀏覽:133
vf表單編程 瀏覽:377
程序員最怕的十個詞 瀏覽:167
天津雲伺服器租用物理機 瀏覽:506
揉耳朵解壓入眠 瀏覽:953
python求列表最大的元素 瀏覽:552
dos命令列出所有文件夾 瀏覽:816
pdf注釋導出 瀏覽:636
androidpng按鈕 瀏覽:814
在哪裡app查汽車違章 瀏覽:551
1000多的編程筆記本電腦推薦 瀏覽:954
景德鎮雲伺服器大概費用 瀏覽:362
程序員按公司要求開發軟體 瀏覽:593
鏈接加密跳轉 瀏覽:253
android設置dialog寬度 瀏覽:965
程序員能學鋼琴嗎 瀏覽:907