在計算機科學和運籌學中,基因演算法(GA)是一種受自然選擇過程啟發的元啟發式演算法,它屬於更大的進化演算法類別。基因演算法通常用於通過生物啟發的操作(如選擇、交叉和突變)來生成高品質的優化和搜索問題解決方案。無論是優化決策樹的性能、解決數獨謎題、超參數優化,還是因果推斷,基因演算法的應用可謂廣泛。
基因演算法通過演化候選解的種群(稱為個體、實體或表型)來尋找更好的解。在這個過程中,每個候選解擁有一組屬性(其染色體或基因型),這些屬性可以經過突變和修改。傳統上,解決方案以 0 和 1 的二進位字串表示,但其他編碼方式也是可行的。演化通常始於隨機生成的個體種群,並且是一個迭代過程,每次迭代所代表的種群稱為一代。在每一代中,會評估種群中每個個體的適應度,適應度通常是所解決的優化問題的目標函數的值。適應度較高的個體會被隨機選中,並且每個個體的基因組會進行修改(重組和可能的隨機突變)以形成新一代候選解。
「基因演算法的成功在於它能夠有效識別並重組那些較短且具備高適應度的基因模式。」
種群的大小視問題性質而定,通常包含數百或數千個可能的解。通常,初始種群是隨機生成,以涵蓋可能解的全部範圍(搜索空間)。有時,解決方案可能在最有可能找到最優解的區域進行「播種」。
在每一代中,會選擇現有個體的一部分進行繁殖,產生新一代。個別解決方案是通過基於適應度的過程選中的,其中適應度較高的解決方案通常更有可能被選中。某些選擇方法會評估每個解的適應度,並優先選擇最佳的解決方案。
接下來的步驟是通過一組基因操作生成第二代解決方案。這些操作包括交叉(重組)和突變。每生產出一個新解,會從前面選出的解決方案中選擇一對「父母」來進行繁殖。通過上述的交叉和突變產生一個「子代」解決方案,這個新解決方案通常會共享其「父母」的許多特徵。雖然基於兩個父母的繁殖方法更具「生物啟發性」,但是一些研究表明,超過兩個「父母」可能會生成更高質量的染色體。
除了上述主要操作外,還可以採用其他啟發式方法來加速計算或增加其穩定性。例如,物種分化啟發式會對過於相似的候選解之間的交叉進行懲罰,這將促進種群的多樣性,並有助於防止提前收斂到次優解。
這種代際過程將重複進行,直至達到終止條件。常見的終止條件包括:找到符合最小標準的解、達到固定的代數、所分配的預算用盡、或最高排名的解的適應度達到一個平穩狀態。
「基因演算法之所以能成功,部分原因是在面對複雜問題時,其能夠自動進行自我調整和優化。」
基因演算法雖然容易實現,但其行為卻難以理解,特別是當應用於實際問題時,為何這些演算法往往能成功生成具有高適應度的解決方案仍是一個謎。建設性假說認為:基因演算法通過識別和重組「建設塊」來進行適應,這些建設塊是具有上述平均適應度的低秩、低定義長度的模式。
基因演算法的實際應用仍存在一些限制,尤其是與其他優化算法相比,反覆評估適應度函數往往是限制其效率的主要原因。對於複雜的高維度、多模態問題,尋找最優解的過程常常需要代價高昂的評估。
基因演算法的變體包括不同的染色體表示、精英選擇、平行實現及自適應基因演算法等。這些變體各有其優勢,可在特定問題上提高效率。
基因演算法的優勢在於其能夠通過使用隨機生成的解決方案來探索建模空間,提供高度適應的解,在現今快速變化的技術環境中,這種方法能否真正提供有效且可行的解決方案?