遺傳算法
編輯在計算機科學和運籌學中,遺傳算法(GA)是一種元啟發式的自然選擇過程,屬于較大的進化算法(EA)。遺傳算法通常被用來生成高質量的優化和搜索問題的解決方案,依靠的是受生物啟發的運算符,如變異、交叉和選擇。遺傳算法的一些應用實例包括優化決策樹以提高性能,解決數獨謎題,超參數優化等。
方法論
編輯優化問題
在遺傳算法中,一個優化問題的候選解決方案的群體(稱為個體、生物、生物體或表型)向更好的解決方案進化。每個候選解決方案都有一組屬性(它的染色體或基因型),這些屬性可以被變異和改變;傳統上,解決方案以二進制表示為0和1的字符串,但其他編碼也是可能的。進化通常從一個隨機生成的個體群體開始,是一個迭代過程,每次迭代的群體稱為一代。在每一代中,對種群中每個個體的適應性進行評估;適應性通常是正在解決的優化問題中的目標函數值。更適合的個體被隨機地從當前種群中選出,每個個體的基因組被修改(重新組合并可能隨機變異)以形成新的一代。新一代的候選解決方案然后被用于算法的下一次迭代。通常情況下,當產生了xxx的代數,或者群體達到了令人滿意的健身水平時,算法就會終止。一個典型的遺傳算法需要。解域的遺傳表示,評估解域的健身函數。每個候選解的標準表示是一個比特數組(也叫比特集或比特串)。其他類型和結構的數組可以以基本相同的方式使用。使這些遺傳表示法變得方便的主要屬性是,由于其固定的大小,其部分很容易對齊,這有利于簡單的交叉操作。可變長度的表示法也可以使用,但在這種情況下,交叉操作的實現更為復雜。在遺傳編程中探索了樹狀表示法,在進化編程中探索了圖狀表示法;在基因表達編程中探索了線性染色體和樹的混合。一旦定義了遺傳表示法和健身函數,GA就開始初始化解決方案的群體,然后通過重復應用變異、交叉、反轉和選擇操作符來改進它。
初始化
編輯群體大小取決于問題的性質,但通常包含幾百或幾千個可能的解決方案。通常,初始群體是隨機產生的,允許整個可能的解決方案(搜索空間)的范圍。偶爾,解決方案可以在可能找到最優解決方案的區域被播種。
遺傳算法的選擇
編輯在每一個連續的世代中,現有種群的一部分被選擇來繁殖新的世代。個別解決方案是通過一個基于健身的過程來選擇的,其中更適合的解決方案(由健身函數衡量)通常更可能被選中。某些選擇方法對每個解決方案的適用性進行評級,并優先選擇最佳解決方案。其他方法只對群體的隨機樣本進行評級,因為前一個過程可能非常耗時。健身函數是在遺傳表示上定義的,并衡量表示的解決方案的質量。健身函數總是取決于問題。例如,在背包問題中,人們希望xxx限度地提高可以放在某個固定容量的背包中的物體的總價值。一個解決方案的代表可能是一個比特數組,其中每個比特代表一個不同的物體,而比特的值(0或1)代表該物體是否在背包中。
不是每一個這樣的表示都是有效的,因為物體的大小可能超過背包的容量。如果表示是有效的,解決方案的適用性是背包中所有對象的值之和,否則就是0。在一些問題中,很難甚至不可能定義適配性表達式;在這些情況下,可以用模擬來確定表征的適配性函數值(例如,用計算流體力學來確定車輛的空氣阻力,其形狀被編碼為表征),甚至可以使用交互式遺傳算法。
遺傳算子
編輯下一步是從那些被選中的解決方案中產生第二代種群,通過一個com
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/175661/