2015-06-20 26 views
5

我想要開始使用遺傳算法的Jenetics JAVA庫,並且有些東西我不能從我的GA限制背景中理解;爲什麼每個解決方案(或基因型)多於一個染色體?

據我所知,遺傳算法產生的元素數量爲m,其中每個數組都是一個潛在的待評估解決方案,一旦被評估,就會對潛在解決方案進行排序,並選擇最佳方案來創建新的羣體等。但我發現Jenetics中的一個解決方案(基因型)是一個數組列表,其中每個數組都是我所理解的潛在解決方案,每個數組也可以有不同的長度,我不明白爲什麼要使用此結構而不是矢量的基因。

請參閱the manual的第6頁,第3.1.3節。

如果可能我想知道這是爲什麼。我希望能夠明確提出這個問題。

回答

1

你所描述的是基本遺傳算法中的種羣。有很多技術可以改進它,其中之一是自適應編碼。

您正在尋找的術語是(修改的)基於自適應編碼技術的基因庫重組。

基因庫重組在整個人口中運作,而不是單個單位並演變人口。它可能會或可能不會保持相同的結構。

看,從生物學的角度來看,這想法:

  • 在自然界中,第一次出現了簡單的生物,那麼它們演變成更復雜的生物。

同樣的動機可以用於遺傳算法。在乞討中有更簡單的單位,可以隨時間演化 - 換句話說,解決方案的長度和結構不一定是恆定的。

沒有簡單的方法來統一編碼遺傳算法的信息,所以你必須考慮它的每一個問題。您可能需要也可能不需要基因庫重組,基本的二進制編碼或基本的比例選擇。這些選項在很大程度上取決於您正在嘗試解決的問題,以及可接受的算法所採用的解決方案/時間精度。

代表基因向量的基本二進制編碼很簡單,但遺傳算法在找到最近的鄰居時效率低下。

考慮下面的例子:

  • 有溶液15和16(01111,10000)這兩個數之間

  • 漢明距離是5

對於GA改變從15到16,所有5位應該被改變。所以,遺傳算法存在鄰居離散數的問題。一種改進方法是使用格雷碼,讓您在所有解決方案之間的距離爲1。

+0

你的意思是突然的候選解決方案可以有更多的基因呢? –

+0

是的,整個種羣可以進化出更多的基因。 – John

2

潛在解決方案(Phenotpyes /基因型)的「陣列」收集在人口中。基因型代表了一種可能的解決方案。不要被基因型的二維結構混淆,它應該爲您提供更多的靈活性來模擬更復雜的問題。基因型仍然代表了一種可能的解決方案和人口中的一個人。對於經典的二進制GA

基因型可以容易地創建的:

Genotype<BitGene> gt = Genotpe.of(BitChromosome.of(15)); 

另外看看域模型,在manual圖3.1。 6.1節試圖給你額外的編碼例子。

相關問題