2010-05-06 46 views
9

我在大學做了一個小GP(注:很少)工作,最近一直在玩它。我的問題是關於初始運行設置(人口規模,世代數,樹木的最小/最大深度,最初樹木的最小/最大深度,用於不同複製操作的百分比等)。設置這些參數的常規做法是什麼?人們使用哪些論文/網站作爲優秀指南?初始遺傳編程參數

回答

3

你會發現,這在很大程度上取決於你的問題域 - 特別是適應度函數的性質,您的實現DSL等

一些個人體驗:

  • 大的人口規模似乎上班時 更好,當你有一個嘈雜的健身功能 功能,我想這是因爲增長 在人口連續世代行爲 給予更多的取樣 的適應度函數。我通常使用 100來獲得較少的噪音/確定性功能,對於較大的噪音,我使用了1000+ 。
  • 對於幾代人來說,最好衡量 健身功能的改進,並在 達到您的目標標準時停止。我通常跑幾百代,看看會出現什麼樣的答案,如果它沒有改善,那麼你可能在其他地方有一個問題。
  • 樹深度要求真的取決於您的DSL。有時我會嘗試做一個 執行沒有明確的 限制,但懲罰或消除 程序運行時間過長(這可能是 你真正關心的事情...)。我還發現總節點數約爲1000是非常有用的硬限制。
  • 不同突變/重組算子的百分比似乎不是 重要。只要 你有一個全面的突變,任何合理平衡的 分佈通常會工作。我認爲其原因在於你基本上是在尋求有利的改進,所以主要目標是確保試驗改進在各種可能性中都能合理地分配。
0

看看Koza的voluminous tomes關於這些事情。

+0

我讀過講座的第一本書就此事。我想自1992年以來,我已經有更多的研究對適當的起始人口進行了更多的研究,生殖方法的表現更好等。 – cmptrer 2010-05-06 16:31:25

1

當我開始研究遺傳算法時,我有同樣的問題。

我希望能在一個很簡單的問題,並給出鏈接運營商和參數值(如突變率等),在人口規模等

一旦我開始進入的函數給出結果收集數據variating參數遺傳算法多一點我然後意識到,鑑於變量的數量巨大這是一個巨大的任務,泛化是非常困難的。

從我的(有限的)經驗談起,如果您決定簡化問題並使用固定的方式來實現交叉,選擇,以及玩羣體大小和突變率(以一種給定的方式實現)試圖出現有了一般結果,你很快就會意識到,太多的變量仍在發揮作用,因爲在一天結束的時候,統計後你會得到一個體面的結果(無論你想要定義的方式體面的)的世代的數量仍然顯然取決於在你正在解決的問題上,因此基因組的大小(以不同的方式表示相同的問題在給定的GA參數的效果方面顯然會導致不同的結果!)。

確實有可能起草一套準則 - 正如(罕見但是很好的)文獻所證明的那樣 - 但只有當手頭的問題能夠準確編碼時,您才能夠以統計學的方式有效地推廣結果同樣的方式,並以某種相當的方式評估健身狀況(這通常意味着你在處理非常類似的問題)。

2

爲什麼不嘗試使用遺傳算法爲您優化這些參數? :)

在計算機科學的任何問題,可以 解決了 間接另一層(除了間接太多 層。)

-David J.惠勒

+0

沒有贊成,因爲它不是一個正確的答案,但它確實讓我發笑。 :-) – 2010-05-15 17:26:15

0

即使在GP社區內也存在非常不同的思想流派 - 有些人認爲(低)成千上萬的人羣是足夠的,而Koza和其他人通常認爲不值得y開始GP運行,GP人口中不到一百萬人;-)

如前所述,它取決於您的個人品味和經驗,資源和可能使用的GP系統!

乾杯, 揚