遺傳算法是模擬自然界中按“優勝劣汰”法則進行進化過程而設計的算法。Bagley和Rosengerg于1967年在他們的博士論文中首先提出了遺傳算法的概念。1975年Holland出版的專著奠定了遺傳算法的理論基礎。如今遺傳算法不但給出了清晰的算法描述,而且也建立了一些定量分析的結果,在眾多領域得到了廣泛的應用,如用于控制(煤氣管道的控制)、規劃(生產任務規劃)、設計(通信網絡設計)、組合優化(TSP問題、背包問題)以及圖像處理和信號處理等。
細數遺傳算法有哪些種類
遺傳算法是如此簡單,任何人只要用高中時學過的生物術語就可以理解。以一群個體為例,它們都有自己的DNA。然后衡量每一個個體的適應性(把它看作是適用于個體的DNA的官能來衡量),并且使那些更適應的個體更有可能繁衍。而最不適應的個體將會被滅絕。每個幸存者都會有機會繁衍(重要的是任何幸存者都可能會繁衍,如果不太適應的話,僅僅是降低了可能性)。合并雙親的DNA,對合并后的DNA應用隨機變異以模擬繁衍。理論上說來,新的個體是和雙親一樣適應的,由于變異或增或減會有些微小的變化。然后循環會周而復始。
雖然,有許多變化的因素在影響遺傳算法,包括人群大小、代(算法的迭代)、合并方法、適應性函數,適應性將如何影響繁衍的可能性,以及發生了多少變異。
該算法也存在一些缺陷。如果把應用于DNA的適應性官能看成是一系列的二進制位,效果最好。換句話說,如果DNA是一系列二進制的選項,是還是不是。藍眼睛?黑眼睛?紅頭發?黑頭發?合并雙親的DNA和隨后的變異應當不允許特定的一些位組合出現,因為得出的DNA可能不再是最初的問題的有效解答。請記住,所謂“DNA”僅僅是適應性公式純數學的一種解答。該公式中用到的一些值可能是無效的—例如,除數為零。
另外,遺傳算法不受時間限制。由您來挑選代的數目。您可以確定某個目標比方說,“找一個適應性為0.99999?的個體”,找到后停止。但是,結果是算法永遠也不會結束,因為它沒找到那個個體。如果您制定了不切實際的目標,或者代的數目太小,就會出現問題。嘗試、出錯,以及深入的思考是解決這個問題的最佳途徑。