天天看點

遺傳算法入門(連載之九)

   最近在學習有關遺傳算法和神經網絡方面的知識,網上檢視了很多這方面的秘笈,隻怪小生天生愚鈍、才疏學淺,不能很好的領悟秘笈中的真谛,往往被弄得暈頭轉向、不知所措

遺傳算法入門(連載之九)
遺傳算法入門(連載之九)

。直到有一天無意中看到了部落客zzwu寫的有關這方面的文章,初讀之,如溫舊習;漸深入,覺甚好;遂一氣呵成,猶如撥雲見日、茅塞頓開。餘甚怕在茫茫Internet中再無機會拜讀之,遂收藏于此,以便衆人觀之,絕無其他不良用途。在此對部落客再次深表感謝。

博文轉自:http://blog.csdn.net/zzwu/article/details/561630

.

.

遺傳算法入門(連載之九)

(連載之九)

.

紮自<遊戲程式設計中的人工智能技術>第三章

 清華大學出版社

3.4.5 運作找路徑者程式 (Running the Pathfinder Program)

.......當你運作 Pathfinder 程式時,你将看到,程式不是每次都能找到一條通往出口的路徑。Bob 有時會被粘住在一個局部地區不确定地逗來逗去,如同一個喝醉了酒的人在試着尋找他的回家的路。這主要由于群體太快地收斂到一個特殊類型的染色體。這樣,由于群體中的成員變得如此相似, crossover 算子的有益效應這時實際上已經不能發揮作用,所有發生的事情都是靠總量很少的變異 操作在起作用 。但因變異率設定很低,當染色體類型的差異消失後,僅僅依靠變異本身已不足以去發現一個解。另外,由于輪盤賭選擇的工作方式,使得任何一代的最合适的染色體無法保證傳到下一代。 這意味着,隻要在适當時候,立即殺死這個成員,遺傳算法就能在群體中找到一個幾乎完全的解,但在這樣做時,它将失去它所擁有的所有好的基因!在後面的章節中,我 将會談到這些問題,并介紹一些技術來幫助維護基因組的差異性且同時能保留那些較好的基因組。但在這裡,我首先需要花費一些時間來考察不同的編碼方法,并考察它們怎樣和你可能遇到的問題類型關聯在一起。這就是我在下一個章中将要做的事情。

3.4.6 二進制數轉換問題的答案[見第98頁]

l. .11011

2. .21

3.5 練習題(Stuff to Try)

........從現在開始,在每一章的後面,我都要給你出一些點子,讓你按照它來編寫出相應的遊戲程式。我不強調這些程式本身有多麼重要。但這是唯一能使你對那些算法産生“感性”認識的方法。而且,當你開始去做複雜的題目時,這種“感性”認識将變得非常重要。

1.  為雜交率,突變率,群體尺寸,染色體長度等參數設定各種不同的值來進行試驗,觀察它們對算法的效率有什麼影響?

2.  試去掉雜交操作,而增加突變率,看會發生什麼結果?如果單用雜交操作,而不利用突變,又會發生什麼?

3. 修改适應性分數的計算函數,使多次進入同一小格的染色體得到懲罰。這應該導緻更有效的到出口的路徑。

4. 你能想到另外的什麼辦法使路徑的尋找更為有效嗎?

-連載9完-

繼續閱讀