2016-05-13 28 views
-3

我正在使用遺傳算法的一個項目,我試圖制定一個健身功能,我的問題是:我可以使用這種健身功能嗎?

  • 什麼是健身公式選擇在GA的影響?

  • 可以使適應度函數直接等於違規數(在最小化的情況下)?

回答

0

什麼是健身公式選擇在GA

健身功能的影響起着指導GA非常重要的作用。

良好的健身功能將幫助GA有效和高效地探索搜索空間。另一方面,糟糕的健身功能很容易使GA陷入局部最優解,並喪失發現能力。

不幸的是,每個問題都有其自身的適應功能。

對於分類任務錯誤的措施(歐洲,曼哈頓......)被廣泛採用。你也可以使用基於熵的方法。

對於優化問題,您可以使用正在調查的函數的原始模型。

有關適應度函數(例如{2},{3},{5})的特徵的大量文獻。從實現的角度來看,必須考慮一些額外的機制:線性縮放,西格瑪截斷,功率縮放......(請參閱{1},{2})。

另外,健身功能可以是動態的:在進化過程中改變以幫助搜索空間探索。

Dynamic fitness landscape

它可以使適應度函數直接等於違反的數量(以最小化的情況下)?

是的,這是可能的,但你必須考慮它可能是一個過於粗糙的粒度適應度函數。

如果適應度函數太粗糙(*),它沒有足夠的表現力來指導搜索,並且遺傳算法會更多地陷入局部極小值,並且可能永遠不會收斂於解。

理想情況下,良好的健身功能,應該有能力告訴你什麼是最好的方向從給定的點走的是:如果一個點的適應性好,其周邊的子集,應該會更好。

所以沒有大的高原(一個廣闊的平坦區域,沒有給出搜索方向和誘導隨機遊走)。

(*)另一方面,完美平滑的適應度函數可能是您正在使用錯誤算法類型的符號。


一個簡單的例子:你看參數abc這樣

g(x) = a * x/(b + c * sqrt(x)) 

n給出的數據點(x_i, y_i)

你可以減少這種健身的好逼近功能:

 | 0 if g(x_i) == y_i     
E1_i = | 
     | 1 otherwise 

f1(a, b, c) = sum (E1_i) 
       i 

它可以工作,但搜索沒有針對性。更好的選擇是:

E2_i = (y_i - g(x_i))^2 

f1(a, b, c) = sum (E2_i) 
       i 

現在你有一個「搜索方向」和更大的成功機率。


進一步瞭解詳細:

  1. Genetic Algorithms: what fitness scaling is optimal?通過弗迪克·克里諾維奇,克里斯·金塔納
  2. 遺傳算法在搜索,優化和機器學習由戈德堡,D.(1989年,Addison-Wesley出版社)
  3. The Royal Road for Genetic Algorithms: Fitness Landscapes and GA Performance Melanie Mitchell,Stephanie Forrest,John H Holland。
  4. Avoiding the pitfalls of noisy fitness functions with genetic algorithms通過Fiacc拉金,康納爾瑞恩(ISBN:978-1-60558-325-9)
  5. Essentials of Metaheuristics由肖恩·盧克
+0

非常感謝你, 只是這一點:「理想情況下,良好的健身功能應該有能力告訴你什麼是最好的方向「,這對我來說不是很清楚,你能舉個例子嗎? –

+0

@hichamATR我在答案中增加了一些細節。 – manlio

+0

哦,謝謝soooo多! –