2011-02-17 52 views
2

我是一個數據挖掘的學生,我有我希望你們能給我一些建議了一個問題:遺傳算法實現了重量優化

我需要一個遺傳算法中有三個輸入之間優化的權重。權重需要是正值,他們需要總和爲100%。

難點在於創建一個滿足100%要求的編碼。

作爲第一遍,我認爲我可以簡單地創建一系列數字(ex.4,7,9)。每個重量只是它的數量除以所有染色體數目的總和(例如4/20 = 20%)。

這種編碼方法的問題是,對染色體的任何改變都會改變所有染色體數目的總和,導致所有染色體權重的改變。這似乎大大限制了GA發展解決方案的能力。

你能給出如何解決這個問題的建議嗎?

我已閱讀關於實值編碼,我確實有一個GA的實現,但它會給我的權重,可能不一定加起來100%。

+1

我只會提到遺傳算法基本上是最後一種優化方法。在您試圖凸顯您的問題或開發出良好的啓發式方法之後,需要嘗試的東西。不要被他們的「生物啓發」所迷惑,他們是非常低效的算法,需要大量的手動調整。 – fairidox 2011-02-17 17:28:36

+1

GAs唯一的事情是他們有一個時髦的名字。沒有人會使用它們,如果他們被稱爲癌變優化者*。 – 2011-02-17 17:31:20

回答

2

如果您需要總和保持不變,則在數學上不可能更改一個值,而不會更改至少一個值。

進行更改的一種方法正是您的建議:weight = value/sum。在這種情況下,當您更改一個值時,要組成的差異將分配到所有其他值中。

另一個極端是隻改變對。從一組值增加到100開始,並且每當一個值發生變化時,改變另一個相反的值以維持總和。另一個可以隨機挑選,也可以按規則挑選。我預計這會比第一種方法需要更長的時間來收斂。

如果你的染色體長度只有3個值,那麼在數學上,這是你唯一的兩個選擇。