遺傳演算法真的比窮舉法好嗎?

時間 2021-06-22 08:44:15

1樓:jerry chen

GA屬於一種meta-heuristic演算法。不嚴格的說,對於meta-heuristics演算法,其最重要的是思想,即搜尋過程中如何diversification(搜尋空間多樣化)和intensification(如何強化搜尋),不管哪種元啟發示演算法,都是以一定的方式去實現這兩種思想;次重要的為實現過程,你可以理解為技術性的,比如演算法的實際設計與實現等;最後重要的才是教條式的演算法步驟,比如哪種演算法規定了第一步應該如何,採用什麼方法,第二步應該如何,採用什麼方法等等...這些步驟或操作可以認為是alternative的。

你所說的『重複計算』應該屬於次重要的問題。任何演算法在描述的時候都不可避免地讓讀者'推斷'出其執行過程中會有大量的所謂的『重複計算』,然而在實際中,去實現演算法的時候完合可以技術性的、最大限度地去避免。就如你舉得例子,運算過程中淘汰的個體真的需要被完全摧毀嗎?

還是說可以花一些儲存資源(記憶體)將要摧毀的個體及其適應度備份起來(相信如果採用合適的資料結構應該不會占用太多的記憶體),下一次生成時可以方便的檢索到這些『已被淘汰的個體』,而直接獲得其適應度?

至於GA與窮舉誰好誰不好的問題,舉乙個極端的例子:

對於乙個大規模的問題(小規模不用說了,掰手指窮舉肯定比花時間寫演算法好)

(1)如果你足夠運氣好,你窮舉的第乙個解就是全域性最優解,而GA可能算一年都找不到這個解;此時建議去買彩票;

(2)如果你運氣真的很普通,你蒙頭窮了1小時才獲得解空間0.000000001%的解集,甭說最優解,它包含較好的解的可能性有多大?而GA演算法具有descent的本質 ,其總是可以下降(或收斂)的,收斂1個小時,它包含乙個較好的解的可能性又是多大?

你自己合計合計,對於一般情況下,GA好還是窮舉好?

2樓:

這個問題問得非常好!作為一種通用的優化框架,遺傳演算法肯定不是對於所有優化問題的最優解決方案。比如對於集合覆蓋問題來講,存在非常簡單的啟發式演算法,效能秒殺遺傳演算法。

但要是跟完全隨機窮舉相比,遺傳演算法還是有自己的優勢的。

作者提到了遺傳演算法的一些缺點,比如隨機性浪費時間等,這個的確是存在的。其實有乙個非常好的改進方法,就是把遺傳演算法的框架和一些問題相關的資訊結合,針對特定問題提出特定的基於遺傳演算法的解決方案。一方面對於上面提到的簡單啟發式演算法來講,改進方法可以提高解的精度(以犧牲計算時間為代價);另一方面由於資訊相關運算元的加入,也可以縮短遺傳演算法的計算時間。

蟻群演算法,遺傳演算法,模擬退火演算法等真的是人工智慧嗎?

CYan 模擬退火和人工智慧有什麼關係?人工智慧難道不是機器具有了學習能力?那麼乙個解決旅行商問題的騙分演算法,和人工智慧有半毛錢關係嗎?你怕不是對資訊學奧林匹克競賽和人工智慧有誤解。還有你所說的這些演算法,依我之見,基本都是數學,要麼是離散數學,或者其他。而且這並不高大上,爬山演算法只是貪心,其他...

MATLAB中的遺傳演算法如何實現

渣男自然卷 遺傳演算法 Genetic Algorithm 是模擬自然界生物進化機制的一種演算法,即遵循適者生存 優勝劣汰的法則,也就是尋優過程中有用的保留無用的去除。在科學和生產實踐中表現為,在所有可能的解決方法中找出最符合該題所要求的的條件的解決方法。及找出乙個最優解。遺傳操作就是模擬生物基因的...

遺傳演算法,模擬退火演算法,粒子群演算法,神經網路等智慧型演算法的作用?

哈哈哈 神經網路可以用於旋轉機械的故障診斷。這是因為,故障診斷本質上是一種分類任務,而神經網路最擅長的就是分類。常見故障型別 殘差收縮網路 1 2 就是一種專門用於故障診斷的神經網路。深度殘差收縮網路 同時,如上圖所示,由於殘差收縮網路整合了軟閾值化,因而適合強雜訊資料的特徵學習 3 軟閾值化,其中...