我正在實施穩態遺傳算法來執行符號迴歸。在穩態遺傳算法中應用突變
我的問題是關於突變和交叉操作符之間的關係。
在應用突變和錦標賽選擇以根據錯誤選擇父母之前,我總是諮詢突變概率(Pm)。
- 第一個問題:
突變必須僅適用於交叉(或另一遺傳算子)之後獲得的兒童 或者可以直接施加到1個父生成一個新的個人?
- 第二個問題:(與PM的課程)交叉操作後必須嘗試的突變
孩子?
謝謝大家提前。
我正在實施穩態遺傳算法來執行符號迴歸。在穩態遺傳算法中應用突變
我的問題是關於突變和交叉操作符之間的關係。
在應用突變和錦標賽選擇以根據錯誤選擇父母之前,我總是諮詢突變概率(Pm)。
突變必須僅適用於交叉(或另一遺傳算子)之後獲得的兒童 或者可以直接施加到1個父生成一個新的個人?
孩子?
謝謝大家提前。
在每種情況下,您都可以做。不同的交叉和變異方案可能適用於不同的問題;爲你的問題嘗試各種各樣的事情,看看他們的表現如何。 (但是,當然,如果你(1)說變異只適用於交叉後的孩子,並且(2)說交叉後的孩子不變異,那麼結果就是你沒有變異:-),所以組合是可能不是一個好的。)
通常交配過程包括交叉和突變,所以回答你的問題這樣做的一個標準方法是採取父母,申請交叉,然後變異最終結果(在稱之爲小孩之前)。
其原因是,如果您將突變應用於父母,基本上會出現「太多突變」(假設突變率相同,則可能使得突變的機率翻倍)。即使我從來沒有見過這樣做,當然,你可以做到這一點,但你必須'重新調整'突變,以便它不會破壞進化過程(太多的突變 - >隨機遊走)。
我曾經用作參考的所有標準進化速率都在孩子身上給出,所以這是另一個理由。
正如在其他答案中已經提到的那樣,任何一種方法都是可用的,而且我已經在實踐中看到了兩種方法的實現。這是一個設計選擇。但是,話雖如此,我想說服你們,一次只進行一次遺傳手術是可取的。
大多數時候,高度「地點」的特性對於遺傳算子是理想的。局部性是指運營商對個體的影響是如何本地化的 - 它是從根本上改變它,還是隻做一個小的調整,將個體推向搜索空間中的相鄰位置。位置較低的運營商會在搜索空間中創建大量無關的跳轉,這使得難以逐步推進,而只能依靠幸運罷工。如果您要在一個步驟中應用交叉和變異,那麼這些變化就會有效地結合在一起,從而創造出比單獨應用更低位置的操作。
有時您可能希望通過選擇,但通常只有在健身環境如此崎嶇以致進化算法可能是錯誤的方法的情況下。