我有一個適應度函數可以評估爲負值或正值的GA。對於這個問題的緣故,讓我們假設功能遺傳算法中的線性適應縮放產生負的適應值
u = 5 - (x^2 + y^2)
其中
x in [-5.12 .. 5.12]
y in [-5.12 .. 5.12]
現在在GA的selection phase
我使用simple roulette wheel。由於能夠使用simple roulette wheel
我的適應度函數必須對某個人羣中的具體病例有效,所以我開始尋找縮放解決方案。最自然的似乎是linear fitness scaling
。它應該是非常簡單的,例如看this implementation。但是,即使在線性縮放之後,我的也會變爲負值。
例如,對於上面提到的功能,而這些適應值:
-9.734897 -7.479017 -22.834280 -9.868979 -13.180669 4.898595
線性縮放後我非但沒有這些價值觀
-9.6766040 -11.1755111 -0.9727897 -9.5875139 -7.3870793 -19.3997490
,我想將它們擴展到正值,所以我可以在下一階段做輪盤選擇。
我必須在這裏做一些根本性的錯誤。我應該如何處理這個問題?
u = 5 - (2 * 5.12^2)的最小可能值。爲什麼不把這個添加到你的u? – Hyperboreus
據我瞭解,通過這樣做會破壞羣體內的適應度分佈,並且在不同的/錯誤的染色體中會被挑選出來用於下一代。 從我的帖子中的鏈接:「我們想保持人口中最大適應度個體與平均人口適應度之間的某種關係。」 –
您是否完全使用鏈接到的頁面中的代碼?如果仔細閱讀,他們會聲明這段代碼的確會產生負值,而您仍然需要通過f'_min的調整來進行調整。 – Frank