2012-04-16 97 views
2

我有一個問題,我想解決與matlab遺傳算法工具箱,我不知道如何解決它。 我想在一個公式中計算3個係數,以使SVM分類模型的分類準確性函數最大化。係數的公式是a * a + b * B + c * C其中a,b,c是我想要找到它們的最優值的係數,A,B,C是數據集的3個屬性的值。我也有約束條件a + b + c = 1和a,b,c> 0我應該如何使用遺傳算法來解決這個問題?遺傳算法與matlab如何使用分類精度作爲健身功能

+0

生成一堆與同一配方的功能,但具有不同的係數。然後使用一些評估函數對它們進行測試,保持執行最佳的兩個功能並從它們生成下一代。 – 2012-04-16 16:13:48

+0

謝謝你的迴應,但我也需要知道如何用matlab做到這點。我應該如何在ga中使用約束條件以及如何編碼適應度函數? – user1336745 2012-04-18 07:16:58

回答

2

您首先需要隨機生成一個初始可行解作爲第一代。

這些可行解決方案中的每一個都應該滿足a + b + c = 1a, b, c > 0

然後根據你的健身功能,評估每個答案,並選擇更好的作爲「父母」。對這些父母應用GA技術,如「交叉」或「突變」,以產生一羣后代,作爲下一代。

重複這個過程一定的時間,比如500代。

例如,您可以定義變量fitness,較高的值表示其相應的候選人是更合適的解決方案。既然你是最大化這個功能,那麼:

健身= A * A + B * B + C * C

在每個GA操作(交叉,變異等),記得要經常收益率滿足您初始約束的新候選人(a + b + c = 1a, b, c > 0)。

2

根據我的經驗,最好的解決方案之一就是實現MATLAB的遺傳算法。 GA工具箱生成的目的是尋找最小的這種功能,但通過使用對稱性,它會導致您尋找的功能最大化。遵循以下步驟:

  • A,B,C =輸入數據
  • 歸一化,B,C這導致+ B + C = 1
  • 你的適應度函數,一個A + B b + C * C,並將其定義
  • 定義nvars這對於你是3
  • 穿戴LB(下邊界)中的情況下[0 0 0],這是A,b,C> 0
  • 潤[X ,fval] = ga(...)那裏的x將是最終結果x = [abc]

如果有任何問題,請發郵件給我更多的幫助:[email protected]

希望最好