簡介
遺傳編程是一種特殊的利用進化算法的機器學習技術, 它開始於一群由隨機生成的千百萬個電腦程式組成的"人群",然後根據一個程式完成給定的任務的能力來確定某個程式的適合度,套用達爾文的自然選擇(適者生存)確定勝出的程式,電腦程式間也模擬兩性組合,變異,基因複製,基因刪除等代代進化,直到達到預先確定的某箇中止條件為止。
進展
遺傳編程的首批試驗由史蒂芬.史密斯 (1980)和Nichael .克拉姆 (1985)發表。約翰.Koza(1992)也寫了一本著名的書,《遺傳編程:用自然選擇讓計算機編程》,來介紹遺傳編程。
使用遺傳編程的電腦程式可以用很多種程式語言來寫成。早期(或者說傳統)的GP實現中,程式的指令和數據的值使用樹狀結構的組織方式,所以那些本來就提供樹狀組織形式的程式語言最適合與GP,例如Koza使用的Lisp語言。其他形式的GP也被提倡和實現,例如相對簡單的適合傳統程式語言(例如Fortran, BASIC, and C)的線性遺傳編程。有商業化的GP軟體把線性遺傳編程和彙編語言結合來獲得更好的性能,也有的實現方法直接生成彙編程式。
遺傳編程所需的計算量非常之大(處理大量候選的電腦程式),以至於在90年代的時候它只能用來解決一些簡單的問題。近年來,隨著遺傳編程技術自身的發展和中央處理器計算能力的指數級提升,GP開始產生了一大批顯著的結果。例如在2004年左右,GP在多個領域取得近40項成果:量子計算,電子設計,遊戲比賽,排序,搜尋等等。這些計算機自動生成的程式(算法)中有些與2000年後人工產生的發明十分類似,甚至有兩項結果產生了可以申請專利的新發明。
發展
在90年代,人們普遍認為為遺傳編程發展一個理論十分困難,GP在各種搜尋技術中也處於劣勢。2000年後,GP的理論取得重大發展,建立確切的GP機率模型和 馬爾可夫鏈模型已成為可能。遺傳編程比遺傳算法適用的範圍更廣(實際上包含了遺傳算法)
除了生成電腦程式,遺傳編程也被用與產生可發展的硬體。
Juergen Schmidhuber進一步提出了宏遺傳編程,一種使用遺傳編程來生成一個遺傳編程系統的技術。一些評論認為宏遺傳編程在理論上不可行,但是需要更多的研究再確認。