2

我有一個非常大的搜索空間的功能,所以我想用遺傳算法來獲得一些接近最佳值,然後使用其他方法如BFGS來找到最佳點。我用R來做到這一點。Q:初始化遺傳算法

問題是我的函數有12個參數,並且在多數點上都是無效的。當我給GA給出最大和最小參數值並且它試圖產生一個總體時,有時整個總體由NaN組成(因此算法不能繼續)。

因爲我對GAs瞭解不多,所以我正在努力尋找解決這個問題的辦法。我唯一想過的是選擇一個非常大的人口規模(類似於10e5),所以它可以找到一些有效的值開始。這不是一個很好的解決方案,因爲能夠用正常人羣初始化算法會更好。

你有什麼建議嗎?任何關於我缺少的遺傳算法?

謝謝

+0

你能證明你到目前爲止做了什麼嗎? – Jaques

+1

標準方法會在目標函數中包含懲罰因此您的解決方案中沒有任何「NaN」值;理想情況下,隨着您接近可行性,這個懲罰會變小,因此GA可以學習空間的可行區域。如果沒有關於解決問題的更具體的描述,就很難推測出應該如何處理問題。 – josliber

回答

2

如果你的大多數參數空間中是無效的,那麼GA可能不是最好的辦法。風險在於,當你跨越算法時,你可能會得到一個無效的參數組合。

對此的另一種思考方式是GA是一種搜索算法。當它所嘗試的結果比它開始時好一點或差一點時,它效果最好;如果大多數嘗試都是無效的,那麼沒有太多的指導搜索。

我的建議是嘗試以不同的方式參數化問題,以便更多的點是有效的(儘管可能是低適應度)。你沒有描述函數,所以很難更具體,但有時可能接受一個「無效」輸入,只是量化它與「有效」距離有多遠。那麼這是你可以運行搜索的東西。

0

您可以使用FI-2Pop GA。 「這是FI-2Pop遺傳算法的優點之一,它可以用一個空的可行種羣進行初始化,並且最終找到可行的解決方案。」