2011-10-16 103 views
13

我已經閱讀了幾本書的介紹性部分以及關於這兩個主題的一些論文,並且在我看來,這兩種方法幾乎完全相同。遺傳算法和進化策略有什麼區別?

這就是說我沒有時間去深入研究這些話題,所以我可能是錯的。

遺傳算法和進化策略之間的區別是什麼?是什麼讓他們不同,他們在哪裏相似?

回答

19

在ES中,個體被編碼爲實數的向量。在繁殖時,隨機選擇父母,選擇適合的後代並插入下一代。 ES個體是自適應的。步長或突變強度在個體中被編碼,所以通過選擇好的個體,好的參數到達下一代。

在GA中,個體被編碼爲整數。選擇是通過選擇與他們的健身成比例的父母來完成的。因此,在第一次選擇完成之前,必須對個人進行評估。遺傳操作符在比特級上工作(例如,將一個比特串切成多個片段並將它們與另一個父片段或切換單個比特交換)。

這就是理論。在實踐中,有時很難區分兩種演化算法,並且需要創建混合算法(例如編碼遺傳算子參數的整數(比特串)個體)。

+2

我認爲答案有點過於籠統,因爲標準和原始GA遺傳表示不是整數,而是一個1和0的二進制位串。另外,選擇不限於健身比例選擇,還有很多其他比如錦標賽...爲了避免混淆,也許答案應該被略微改寫,而不是推斷GA必須有這個和那個...等等 – chutsu

+0

我認爲這是對差異的一個很好的介紹。將表示法稱爲整數集有什麼問題?在軟件層面,算法正是如何處理這些數據,並有助於將它們視爲與遺傳密碼相似。一般的建議是不要把表現形式作爲一個字符串來處理,至少我是這樣訓練的。 – Adam893

+0

您可以舉個例子,說明ES和GA通常在哪裏應用? –

0

作爲維基源(HTTP:/ /en.wikipedia.org/wiki/Genetic_algorithm)和@Vaughn Cato說這兩種技術的區別在於實現。 EA使用 實數和GA使用整數。

但是,在實踐中,我認爲你可以使用整數或實數來表達你的問題和你的程序。這取決於你。例如,對於蛋白質摺疊,你可以說一組二面角形成一個矢量。這是一個實數的矢量,但條目 標有整數,所以我認爲你可以用你的問題來形成你的問題,並在整數算術上編寫基於 的程序。這只是一個想法。

2

在大多數較新的GA教科書中,引入實數編碼作爲整數的替代,即個體可以編碼爲實數的向量。這被稱爲連續參數GA(參見例如Haupt & Haupt,「Practical Genetic Algorithms」,J.Wiley & Sons,1998)。所以這與ES實數編碼幾乎相同。

關於父母選擇,針對遺傳算法發佈了許多不同的策略。我不知道他們全部,但我假設所有選擇(不僅最好的已被用於某些應用程序)。

相關問題