2015-08-03 25 views
1

我正在學習遺傳算法,我想實現它以找到一個最小的f(x,y) 前。 z = sin3x + cos4y 現在,我的問題是我應該如何治療染色體x和y。他們應該是2個獨立的人口嗎?它們是否應該編碼在相同的染色體上?遺傳算法找到2個變量的函數的最小值

+0

嗨,歡迎。恐怕這個問題可能會被封閉,因爲它需要特定的領域知識。如果您可以將問題簡化爲編程問題,我們可能會提供幫助。 –

+0

如果你還沒有編寫任何代碼,這可能會在這裏脫離主題。但是,通過您的問題的聲音,最好在交叉驗證的SE上提問。只需先在http://stats.stackexchange.com/help/檢查他們的幫助,以確保它是在那裏的話題。 – Calcolat

+0

我打算花點時間研究一下這個問題,但如果你找到一個支持研究的答案,請告訴我。我對這個解決方案非常感興趣,但我認爲GA不是解決問題的最佳方法。但是,如果我必須打賭,我會說做一個複合個人。 – RockJake28

回答

0

首先 - 你的功能是可分離的。這意味着您可以分別優化每個維度(x和y) - 您可以修復例如y爲0,你只關注x並找到最小值。然後你修復x並在y中找到最小值。然後你就完成了。如果你的功能不可分離,你不能這樣做。不可分的函數最簡單的例子是f(x,y)= xy。

對於GA的東西 - 這取決於你的意思是GA。如果你真的認爲經典遺傳算法演化的二進制字符串比實際值優化中的一個壞方法。更好的方法是使用實​​值GA(或EA更精確)。在那一箇中​​,基因型是由實數本身組成的,即x和y(因爲它們都是解決方案,而不僅僅是其中之一)。你當然需要使用不同的變異和交叉算子。看看我的博客上的post,我完全寫了這個(你可以放心地跳到「實值演化」部分)。

+0

如果該功能不可分離,該怎麼辦? – Christian

+0

@Christian大部分時間都是如此。如果它不可分離,則必須同時在所有維度上進行優化。這意味着x和y(以及其他如果您的功能更爲空間)都是單個解決方案的一部分,並且您可以發展這些解決方案。對於您的功能,一個人(基因型/染色體/ ...)將是一對數字,例如, (3.1,-7.063)。它更清楚嗎? – zegkljan