我努力做一個實驗室的學校。我正在嘗試使用遺傳算法解決縱橫字謎。 問題是,這不是很好(它仍然是過於隨機) 我會嘗試給我現在如何執行我的程序的簡短說明:解決與遺傳算法,健身,突變縱橫字謎
如果我有困惑(#是塊,0是空的空間)
#000
00#0
#000
以及這個拼圖的解決方案的候選詞的集合。 我的DNA只是作爲一維數組的矩陣。
我的第一套個人從我的單詞包含的字母池中隨機生成DNA。
我使用輪盤賭選擇做選擇。 關於組合和突變的機率有一些參數,但如果突變會發生,那麼我將總是改變25%的DNA。 我從我的信池中隨機字母改變它(這可能有負面影響,因爲突變可以破壞已經形成的話)
現在的適應度函數: 我都horizontaly和verticaly遍歷矩陣: 如果我找到一個詞,然後健身+ = word.lengh +1
如果我找到一個字符串是一個字的一部分,然後健身+ = word.length /(puzzle_size * 4)。無論如何,它應該給出一個介於0和1之間的值。 因此,它可以從「tool」和廣告X中找到「FITNESS」,然後在「tool」中找到「too」並將另一個Y添加到FITNESS。
我的這代人實際上並沒有隨着時間而改善。他們顯得隨機。 所以即使經過400代1000-2000的池(這些數字並不重要),當解決方案應該有6個單詞時,我會得到1-2個字(2或3個字母)的解決方案。
一行可能包含多於1個單詞,如:#tool#pink – Blitzkr1eg 2011-05-02 17:47:35
然後,健身可能是#行中正確的單詞/每行可能的單詞數量。我認爲字長是無關緊要的 – 2011-05-02 18:02:34