2010-02-16 46 views
3

我開發一個遺傳算法的一所學校的項目,我已經注意到,在評估我的功能健身,一個人就等於它的倒數。如何避免遺傳算法中的無效搜索空間?

例如,該組(1, 1, -1, 1)相當於(-1, -1, 1, -1)。爲了更加有效地縮小我的搜索空間並獲得解決方案,我如何避免我的跨界搜索在搜索空間的後半部分搜索?

+1

如果你在這個問題上承擔選擇的編碼可能是有缺陷或不足。你能提供你正在採用的編碼的更多細節嗎? – JohnIdol 2010-03-28 22:28:37

回答

1

嘗試重新寫你的健身功能,適當地分配權重,以個人 - 不知道你正在試圖解決或重量如何,可以重新分配的問題。請記住,最適合的個人應該在游泳池中,更有可能被選爲交叉 - 你不希望游泳池中充滿了與健康相同的混合物,因爲它不符合遺傳算法的目的。

+0

也許我誤解了你的答案,但我希望完全避免這一半的搜索空間。我不相信健身功能會成爲問題。基本上,根據問題,一半的搜索空間與另一半完全相同。按照我的例子,(1,-1)同樣適合(-1,1)。這是問題的本質,而不是我的健身功能。 – Dave 2010-02-16 05:19:08

+0

他在說什麼是增加一些東西到你的健身功能,使解決方案空間的一半不適合,但否則不會改變問題。 – 2010-02-16 05:43:26

+0

@Dave我認爲健身功能是責備。你說這些答案同樣合適,但你不想要它們。這兩個陳述是矛盾的。你應該設計你的健身功能,以促進你實際需要的解決方案。 – Ross 2010-03-01 17:20:51

2

Cut the一半的空間。要求第一個元素是非負數,那麼如果有(x_1,..,x_n)及其逆(-x_1,..,-x_n),則只有一個元素位於搜索空間中。 (如果x_1 = 0,它們是相同的) 順便說一句,你正在解決什麼問題?

1

它的計算量很大,但這樣的事情應該做的工作。忽略了第一代,對於每一代> = 2:

如果通過交叉/變異產生的孩子是逆,忽略它,產生另一個孩子,直到它是一個「好」的孩子。