遺傳演算法中的每一步都不可少嗎?
如題,遺傳演算法必須這麼麻煩嗎,只要讓適應度高的個體在後代中出現的概率高不就行了嗎,這樣只要讓適應度高的個體產生下一代的概率高就能保證了,需要這麼多步嗎。這是一個遺傳演算法的例子非常好的理解遺傳演算法的例子 是這個例子太簡單沒能反映出更多的東西,或者設置這麼多步驟有更深的考慮?
遺傳演算法解決的是這類問題叫做優化問題。優化問題的一般形式為:有一組變數,有一個objective function(或者適應度),尋找這組變數的最優解,使得objective function的值最小(適應度最高)。對於遺傳演算法來說,每個個體對應一組變數取值。不管是進行變異還是交配操作,都是在這組變數空間里隨機取點,希望在採樣足夠多的情況下,出現適應度最高的個體。
遺傳演算法的最大問題在於它是一種啟發式演算法。對於啟發式演算法來說,不管你如何優化,或增加代數,沒有找到適應度最高個體(最優解)的保證。對於沒有更好解決方案的問題來說,使用遺傳演算法時,就需要加大採樣量,這樣漏掉最優解的可能就會變小。而加大採樣量無非就是增大每代裡面個體的個數和增加代數。
例外一點,你最開始找到的較優解(適應度高的個體),有可能和最優解(適應度最高的個體)相差很遠,如果只是在較優解附近尋找,而不繼續大範圍採樣的話,很有可能會漏掉最優解。
本質上:交叉是一種local search行為,變異是global search。
題主你好。
你理解的也是對了,「只要讓適應度高的個體在後代中出現的概率高不就行了嗎」,的確是這樣,我們是會儘可能的保留適應度高的值,然後以此為父代,繼續進化。
遺傳演算法中最主要的優化操作 (optimal operation)是 :
1.交叉。
2.突變。
這也是遺傳演算法這個名字的由來。
對於這個例子 f(x)=x1^2+x2^2。
按照題主的思想,是正確的,因為它太簡單了,所以用不上這些複雜的步驟。
但是在處理大量的複雜的問題的時候,交叉和變異操作的好處就體現出來了。
i.e.,
比如這些的問題
對於一個複雜的問題來說,它或許存在多個局部最優解,和一個全局最優解。
例如:
圖中黑色的部分都是局部最優解,而只有藍色的圓圈才是全局最優解。
遺傳演算法中交叉和突變的作用,即使對決策變數X進行巨大的變形,使其能夠有機會隨意的找到全局最優解附近的解。
你可以把遺傳演算法理解為不知道任何條件的,隨意的算的。就像你考試不會做選擇題,隨機選擇ABDC一樣。 不過遺傳算參考了達爾文生物進化的規律,將所謂了隨機進行了一定的優化。所以這種演算法在工程上的應用還是不錯的。(當然和具有先驗條件的演算法相比(如牛頓迭代,擬牛頓法),其迭代次數和花銷是十分巨大的。
遺傳演算法有著廣闊的前景,在遺傳演算法的基礎上,科研人員們又提出了進化演算法,蟻群演算法,免疫演算法,粒子群演算法等優化演算法。。。
簡單的回答了一下,拋磚引玉。
以上。
參考文獻:[1] Deb K, Pratap A, Agarwal S, et al. A fast and elitist multi-objective genetic algorithm: NSGA II[J]. IEEE Transactions on Evolutionary Computation, 2002, 6(2):182-197.
[2] 公茂果, 焦李成, 楊咚咚,等. 進化多目標優化演算法研究[J]. 軟體學報, 2009, 20:271-289.
變異有助於勘探能力,交叉有助於開採能力
最近在玩遺傳演算法的人來強行回答一發 :) 其實呢,遺傳演算法算是進化演算法的一個小分支,而進化演算法 裡面operation of evolution 至少包括遺傳變異以及 estimation of distribution 三種,然後進化演算法中的另一個小分支 rvolution of strategie 就是沒交叉只有變異噠。實際操作中,針對大量不同問題,各種operation 的使用要分情況看啊。。。。
推薦閱讀:
※如何評價筆記本吧?
※買電腦需要注意哪些問題?
※程序員購買筆記本電腦時,更注重電腦的哪些方面?
※如何評價浙江大學教務網新版選課系統?
※為什麼外國人寫的書裡面介紹人物時總要提到對應人物父親的職業?