遺傳規劃是用進化算法為基礎的方法,用一個計算機程序編寫另一個計算機程序的過程。這個過程常被比作線性規劃,在這種語言中,程序員編寫特定的指令供計算機執行。LISP和Scheme是這類工作中最常用的編程語言,因為它們具有較...
遺傳規劃是用進化算法為基礎的方法,用一個計算機程序編寫另一個計算機程序的過程。這個過程常被比作線性規劃,在這種語言中,程序員編寫特定的指令供計算機執行。LISP和Scheme是這類工作中最常用的編程語言,因為它們具有較高的功能性和靈活性。由于其概念上與生物進化相似,遺傳程序設計常被作為生物啟發計算的一個例子。

一種計算機編程算法遺傳程序(GPs)通過生成和運行數千個程序來工作,并選擇最有效的程序來使用。例如,GP可以用來創建一個程序來繪制一張照片的草圖。GP要做的第一件事是創建一組程序,這些程序以隨機組合的方式使用各種計算機繪圖功能。然后GP將按順序運行這些程序,并將每個程序的結果輸出到圖像文件中GP的下一步是從集合中選出最好的程序。這個過程通常是遺傳程序設計中最困難的部分。在繪圖程序中,GP將使用圖像比較軟件來確定哪個隨機繪制的圖形與軟件試圖繪制的圖像最相似,在隨機生成的程序中,GP將選擇前幾個并丟棄其余的選擇過程被稱為適應度評估,通常被認為是遺傳程序設計中最困難的部分。一旦前幾個程序被選中,GP將把它們作為新一批程序的基礎。每一批新程序被稱為一代。產生新一代的兩種方法是變異和交叉。變異的工作方式是從現有的程序中選取一個,然后對其進行隨機更改,希望能變得更好。交叉,也稱為育種,通過取兩個在創建一批新程序后,GP重復運行和評估這些程序的過程,然后重復選擇、刪除和生成過程。GPs在找到一個結果令人滿意的單一程序之前,通常會運行數百代。盡管有這個局限性,遺傳編程是解決某些類型的計算難題的常用方法,包括機器人工程和人工智能問題。