遺傳程式

遺傳程式是John Koza與遺傳算法相關的一個技術,在遺傳程式中,並不是參數最佳化,而是電腦程式最佳化。

基本介紹

  • 中文名:遺傳程式
  • 領域:最最佳化理論
簡介,遺傳算法,遺傳編程,參見,

簡介

遺傳程式是John Koza與遺傳算法相關的一個技術,在遺傳程式中,並不是參數最佳化,而是電腦程式最佳化。遺傳程式一般採用樹型結構表示電腦程式用於進化,而不是遺傳算法中的列表或者數組。一般來說,遺傳程式比遺傳算法慢,但同時也可以解決一些遺傳算法解決不了的問題。

遺傳算法

遺傳算法(英語:genetic algorithm (GA))是計算數學中用於解決最最佳化的搜尋算法,是進化算法的一種。進化算法最初是借鑑了進化生物學中的一些現象而發展起來的,這些現象包括遺傳突變自然選擇以及雜交等。
遺傳算法通常實現方式為一種計算機模擬。對於一個最最佳化問題,一定數量的候選解(稱為個體)可抽象表示為染色體,使種群向更好的解進化。傳統上,解用二進制表示(即0和1的串),但也可以用其他表示方法。進化從完全隨機個體的種群開始,之後一代一代發生。在每一代中評價整個種群的適應度,從當前種群中隨機地選擇多個個體(基於它們的適應度),通過自然選擇和突變產生新的生命種群,該種群在算法的下一次疊代中成為當前種群。

遺傳編程

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

參見

相關詞條

熱門詞條

聯絡我們