書(shū)名:代碼本色:用編程模擬自然系統(tǒng)
作者:Daniel Shiffman
譯者:周晗彬
ISBN:978-7-115-36947-5
第9章目錄
9.1 遺傳算法:?jiǎn)l(fā)自真實(shí)現(xiàn)象
1、目標(biāo)
- 我們的目標(biāo)不是深入研究遺傳和進(jìn)化的科學(xué)原理,我們不會(huì)研究旁氏表、核苷酸、蛋白質(zhì)合成、RNA和其他生物進(jìn)化相關(guān)的話題。
- 相反,我們只討論達(dá)爾文進(jìn)化論背后的核心原理,并根據(jù)這個(gè)原理開(kāi)發(fā)出一套算法。
- 我們并不在乎進(jìn)化模擬是否精確,只關(guān)心進(jìn)化在軟件中的應(yīng)用策略。
2、遺傳算法
- “遺傳算法”指的是一種特定算法,它以特定的方式實(shí)現(xiàn),用于解決特定類(lèi)型的問(wèn)題。
- 盡管遺傳算法是本章的基礎(chǔ),但我們不會(huì)用絕對(duì)精確的方式實(shí)現(xiàn)它,因?yàn)槲覀儜?yīng)該多花精力探索遺傳算法的創(chuàng)新用法。
3、內(nèi)容
1.傳統(tǒng)遺傳算法
我們從傳統(tǒng)遺傳算法開(kāi)始。
這種算法用于解決“解空間過(guò)于龐大,窮舉法耗時(shí)過(guò)長(zhǎng)”的問(wèn)題。
舉個(gè)例子,有一個(gè)介于1~1 000 000的數(shù)字,你要花多少時(shí)間才能猜到這個(gè)數(shù)字?
如果用窮舉法,你就要檢查每一種可能:這個(gè)數(shù)字是不是等于1,是不是2,是不是3?……運(yùn)氣好的話,你很快就能猜到這個(gè)數(shù)字;
如果運(yùn)氣不好,你就要從1枚舉到1 000 000,這肯定會(huì)耗費(fèi)大量的時(shí)間。
但如果我能告訴你更多的信息,比如猜的數(shù)字是大是小,是有點(diǎn)大,還是非常大;如果能得到每次猜測(cè)的“契合度”,我想你的猜測(cè)肯定會(huì)越來(lái)越接近正確答案,解決問(wèn)題的速度也會(huì)更快。
也就是說(shuō),你的答案可以發(fā)生進(jìn)化。2.交互式選擇
實(shí)現(xiàn)傳統(tǒng)遺傳算法之后,我們會(huì)研究遺傳算法在可視化藝術(shù)方面的應(yīng)用。
交互式選擇指的是事物(通常是由計(jì)算機(jī)產(chǎn)生的圖像)在用戶交互下發(fā)生進(jìn)化的過(guò)程。
舉個(gè)例子,你在參觀一家博物館,博物館的墻上掛著幾幅油畫(huà)。在交互式選擇技術(shù)的幫助下,你只要選擇出最喜歡的畫(huà),程序就會(huì)根據(jù)你的喜好自動(dòng)產(chǎn)生(或者“進(jìn)化出”)一副新畫(huà)供你欣賞。3.生態(tài)系統(tǒng)模擬
如果你去閱讀人工智能方面的在線文檔或教科書(shū),通常會(huì)看到關(guān)于傳統(tǒng)遺傳算法和交互式選擇技術(shù)的講解。
但它們不會(huì)講解如何在程序中模擬現(xiàn)實(shí)世界的進(jìn)化過(guò)程。
本章的最后將探索如何在模擬生態(tài)系統(tǒng)中模擬進(jìn)化過(guò)程。
模擬生態(tài)系統(tǒng)中的對(duì)象會(huì)相遇、結(jié)合,并把基因傳遞給下一代。
這種技術(shù)可以直接應(yīng)用到每一章最后的生態(tài)系統(tǒng)項(xiàng)目中。