蟻群演算法 遺傳演算法 模擬退火演算法介紹

2021-07-05 07:36:58 字數 2687 閱讀 3904

蟻群演算法、遺傳演算法、模擬退火演算法介紹

窮舉法

列舉所有可能,然後乙個個去,得到最優的結果。如圖一,需要從a點一直走到g點,才能知道,f是最高的(最優解)。這種演算法得到的最優解肯定是最好的,但也是效率最低的。

窮舉法雖然能得到最好的最優解,但效率是極其低下的。為了能提高效率,可以不要列舉所有的結果,只列舉結果集中的一部分,如果某個解在這部分解中是最優的,那麼就把它當成最優解。顯然這樣有可能不能得到真正的最優解,但效率卻比窮舉法高很多。

只列舉部分解的方法很多。

貪心法

在列舉所有解時,當遇到的解在當前情況下是最優時,就認為它是最優解。如圖一,當從a點到b點時,由於b點比a點的解更優,所以會認為b點是最優解。

顯然這樣的效率很高,但得到的最優解質量也很差。

爬山法

貪心法是只和前面的乙個比較,為了提高最優解的質量,可以不僅和前乙個解比較,也和後乙個解比較,如果比前面和後面的解都優,那麼就認為它是最優解。如圖一,當到c點時,發現它比前面的b和後面的d點的解都好,所以認為它是最優解。

模擬退火演算法

爬山演算法實現很簡單,其主要缺點是會陷入區域性最優解,而不一定能搜尋到全域性最優解。

如圖一,搜尋到a點後就停止了搜尋。如果能跳出區域性最優解,那麼得到的最優解的質量相對就會好很多。如當搜尋到a點時以一定的概率跳轉到另外乙個地方。這樣就有可能跳出區域性最優解a。如果經過一定次數的跳躍,跳到了e點,那麼就會找到全域性的最優解了。

如果這個概率不變,那麼就會一直跳躍下去,不會結束。可以讓這個概率逐漸變小,到最後趨於穩定。這裡的概率逐漸減小類似於金屬冶煉的退火過程,所以稱之為模擬退火演算法。

模擬退火演算法(simulated annealing,sa)最早由kirkpatrick等應用於組合優化領域,它是基於mente-carlo迭代求解策略的一種隨機尋優演算法,其出發點是基於物理中固體物質的退火過程與一般組合優化問題之間的相似性。模擬退火演算法從某一較高初溫出發,伴隨溫度引數的不斷下降,結合概率突跳特性在解空間中隨機尋找目標函式的全域性最優解,即在區域性最優解能概率性地跳出並最終趨於全域性最優。

模擬退火演算法的關鍵在於控制溫度(概率)降低快慢的引數r,這個引數範圍是0模擬退火演算法不能保證得到真正的最優解,但它能在效率不錯的情況下得到質量較高的最優解。

遺傳演算法

遺傳演算法是計算數學中用於解決最優化的搜尋演算法,是進化演算法的一種。進化演算法最初是借鑑了進化生物學中的一些現象而發展起來的,生物在繁衍發展的過程,會通過繁殖,發生基因交叉,基因突變,適應度低的個體會被逐步淘汰,而適應度高的個體會越來越多。那麼經過n代的自然選擇後,儲存下來的個體都是適應度很高的。

遺傳演算法初始是乙個較差解的解集種群,通過遺傳交叉繁殖出下一代的解集種群。在交叉的過程中,有一定的概率發生基因突變。在下一代的解集種群中,通過適者生存的自然選擇,淘汰那些較差的解(個體),只讓較好的解(個體)繁殖後代,這樣產生出代表新的解集的種群。這個過程將導致種群像自然進化一樣的後生代種群比前代更加適應於環境。經過許多代的繁殖和自然選擇後,就能得到接近於真正最優解的解。

可以用精英主義原則來對基本遺傳演算法進行優化。所謂精英主義原則,就是為了防止進化過程中產生的最優解被交叉和變異所破壞,可以將每一代中的最優解原封不動的複製到下一代中。

蟻群演算法

蟻群演算法antcolonyoptimization,aco),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。它由marco dorigo於2023年在他的博士**中提出,其靈感**於螞蟻在尋找食物過程中發現路徑的行為。

螞蟻在路徑上前進時會根據前邊走過的螞蟻所留下的分泌物選擇其要走的路徑。其選擇一條路徑的概率與該路徑上分泌物的強度成正比。因此,由大量螞蟻組成的群體的集體行為實際上構成一種學習資訊的正反饋現象:某一條路徑走過的螞蟻越多,後面的螞蟻選擇該路徑的可能性就越大。螞蟻的個體間通過這種資訊的交流尋求通向食物的最短路徑。

蟻群演算法就是根據這一特點,通過模仿螞蟻的行為,從而實現尋優。當程式最開始找到目標的時候,路徑幾乎不可能是最優的,甚至可能是包含了無數錯誤的選擇而極度冗長的。但是,程式可以通過螞蟻尋找食物的時候的資訊素原理,不斷地去修正原來的路線,使整個路線越來越短,最終找到最佳路線。

這種優化過程的本質在於:

選擇機制:資訊素越多的路徑,被選擇的概率越大。

更新機制:路徑上面的資訊素會隨螞蟻的經過而增長,而且同時也隨時間的推移逐漸揮發消失。

協調機制:螞蟻間實際上是通過分泌物來互相通訊、協同工作的。通過個體之間的資訊交流與相互協作最終找到最優解,使它具有很強的發現較優解的能力。

出錯機制:顯然如果螞蟻都往資訊素多的地方移動,會導致區域性最優解的問題。可是,總有些具有叛逆精神的螞蟻,會不往資訊素較多的地方移動,從而可以跳出區域性最優解,找到全域性的最優解。

總結:遺傳演算法:優點是能很好的處理約束,能很好的跳出區域性最優,最終得到全域性最優解,全域性搜尋能力強;缺點是收斂較慢,區域性搜尋能力較弱,執行時間長,且容易受引數的影響.

模擬退火:優點是區域性搜尋能力強,執行時間較短;缺點是全域性搜尋能力差,容易受引數的影響.

爬山演算法:顯然爬山演算法較簡單,效率高,但是處理多約束大規模問題時力不從心,往往不能得到較好的解.

啟發式演算法之蟻群演算法 模擬退火演算法

啟發式演算法 heuristic algorithm 是相對於最優化演算法提出的。乙個問題的最優演算法求得該問題每個例項的最優解。啟發式演算法可以這樣定義 乙個基於直觀或經驗構造的演算法,在可接受的花費 指計算時間和空間 下給出待解決組合優化問題每乙個例項的乙個可行解,該可行解與最優解的偏離程度一般...

模擬遺傳演算法

遺傳演算法的手工模擬計算示例 為更好地理解遺傳演算法的運算過程,下面用手工計算來簡單地模擬遺傳演算法的各 個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種 符號串。本題中,用無符號二進位制整數來表示。因 x1,x...

粒子群 遺傳 蟻群 模擬退火和鯨魚演算法優缺點比較

1 遺傳演算法 ga 2 粒子群演算法 pso 3 蟻群演算法 4 模擬退火演算法 5 魚群演算法 6 鯨魚優化演算法 優化演算法是一種給定方向的遍歷 群體智慧型優化演算法主要模擬了昆蟲 獸群 鳥群和魚群的群體行為,這些群體按照一種合作的方式尋找食物,群體中的每個成員通過學習它自身的經驗和其他成員的...