簡介
遺傳進程是John Koza與
遺傳算法相關的一個技術,在遺傳程式中,籃企灑敬並不是參數最佳化,而是
電腦程式最佳化。遺傳程式一般採用樹型結構表示電腦程式用於進化,而不是遺傳算法中的
列表或者
數組。一般來說,
遺傳進程比遺傳算法慢,但同時也可以燥槳戲解決一些遺傳算法解決不了的問題。
遺傳算法
遺傳算法通常實現方式為一種
計算機模擬。對於一個最最佳化問題,一定數量的候選解(稱為個體)可抽象表示為
染色體,使
種群向更好的解進化。傳統上,解用
二進制表示(即0和1的串),但也可以用其他表示方法。進化從完全
隨機個體的種群開始,之希主殼采後一代一代發生。在每一代中評價整個種群的
適應度,從當前種群中隨機地選擇多個個體(基於它們的適應度),通過自然選擇和突變產生新的生命種群,該種群在算法的下一次疊代中成為當前種群。
遺傳編程
遺傳編程或稱基因編程,簡稱GP,是一種從生物
演化過程得到靈感的自動化生成和選擇
電腦程式來完成用戶定義的任務的技術。從理論上講,人類用遺傳編程己罪乎只需要告訴計算機“需要完成什麼”,而不用告訴它“如何去完成”,最終可能實現真正意義上的
人工智慧:自動化的發明機器。
遺傳編程是一種特殊的利用
進化算法的
機器學習技術祝迎元,它開始於一群由隨機生成的千百萬個電腦程式組成的“人群”,然後根據一個程式完成給定的任務的能力來確定某個程式的
適合度,套用
達爾文的
自然選擇(適者生存)確定勝出的程式,電腦程式間也模擬兩性組合,
變異,
基因複製,基因刪除等代代進化,直到達到預先確定的某箇中止條件為止。
遺傳編程的首批試驗由
史蒂芬·史密斯(1980年)和Nichael·克拉姆(1985年)發表。約翰·Koza(1992年)也寫了一本著名的書,《遺傳編程:用自然選擇讓計算機編程》(ISBN 9780262111706),來介紹遺傳編程。
使用遺傳編程的電腦程式可以用很多種
程式語言來寫成。早期(或者說傳統)的GP實現中,程式的
指令和數據的值使用樹狀結構的組織方式,所以那些本來就提供樹狀組織形式的程式語言最適合與GP,例如Koza使用的
Lisp語言。其他形式的GP也被提倡和實現,例如相對簡單的適合傳統程式語言(例如
Fortran、
BASIC和
C語言)的線性遺傳編程。有商業化的GP軟體把線性遺傳編程和彙編語言結合來獲得更好的性能,也有的實現方法直接生成彙編程式。
遺傳編程所需的計算量非常之大(處理大量候選的電腦程式),以至於在90年代的時候它只能用來解決一些簡單的問題。近年來,隨著遺傳編程技術自身的發展和
中央處理器計算能力的指數級提升,GP開始產生了一大批顯著的結果。例如在2004年左右,GP在多個領域獲取近40項成果:
量子計算、電子設計、遊戲比賽、
排序、
搜尋等等。這些計算機自動生成的程式(算法)中有些與2000年後人工產生的發明十分類似,甚至有兩項結果產生了可以申請專利的新發明。
在90年代,人們普遍認為為遺傳編程發展一個理論十分困難,GP在各種
搜尋技術中也處於劣勢。2000年後,GP的理論獲取重大發展,創建確切的GP
機率模型和
馬爾可夫鏈模型已成為可能。遺傳編程比
遺傳算法適用的範圍更廣(實際上包含了遺傳算法)
除了生成電腦程式,遺傳編程也被用與產生可戶兆請發展的硬體。Juergen Schmidhuber進一步提出了宏遺傳編程,一種使用遺傳編程來生成一個遺傳編程系統的技術。一些評論認為宏遺傳編程在理論上不可行,但是需要更多的研究來確認晚再。
參見
在90年代,人們普遍認為為遺傳編程發展一個理論十分困難,GP在各種
搜尋技術中也處於劣勢。2000年後,GP的理論獲取重大發展,創建確切的GP
機率模型和
馬爾可夫鏈模型已成為可能。遺傳編程比
遺傳算法適用的範圍更廣(實際上包含了遺傳算法)
除了生成電腦程式,遺傳編程也被用與產生可發展的硬體。Juergen Schmidhuber進一步提出了宏遺傳編程,一種使用遺傳編程來生成一個遺傳編程系統的技術。一些評論認為宏遺傳編程在理論上不可行,但是需要更多的研究來確認。
參見