技術篇:蟻群算法實例解析

2021-02-20 軌道車輛


在我們做研究的的時候會用到很多群智能算法用於尋優,比如遺傳算法、魚群算法、粒子群算法、還有咱們今天要講的蟻群算法。將蟻群算法應用於解決尋優問題的基本思路為:用螞蟻的行走路徑表示待優化問題的可行解,整個螞蟻群體的所有路徑構成待優化問題的解空間。路徑較短的螞蟻釋放的信息素量較多,隨著時間的推進,較短的路徑上累積的信息素濃度逐漸增高,選擇該路徑的螞蟻個數也愈來愈多。最終,整個螞蟻會在正反饋的作用下集中到最佳的路徑上,此時對應的便是待優化問題的最優解。

螞蟻找到最短路徑要歸功於信息素和環境,假設有兩條路可從蟻窩通向食物,開始時兩條路上的螞蟻數量差不多,當螞蟻到達終點之後會立即返回,距離短的路上的螞蟻往返一次時間短,重複頻率快,在單位時間裡往返螞蟻的數目就多,留下的信息素也多,會吸引更多螞蟻過來,會留下更多信息素。而距離長的路正相反,因此越來越多的螞蟻聚集到最短路徑上來,我們下圖可以形象的表示蟻群算法的中心思想。

在蟻群算法中,螞蟻的眼睛觀察到的範圍是一個方格世界,相關參數為速度半徑,一般為3,可觀察和移動的範圍為3x3方格。螞蟻在感知範圍內尋找食物,如果感知到就會過去,否則朝信息素多的地方走,每隻螞蟻會以很小的可能性犯錯,並非都往信息素最多的方向移動。螞蟻朝信息最多的方向爬行,當周圍沒有指引時,會按照原來預設的規則行走。而且聰明的螞蟻會記住最近走過的地方,防止原地轉圈。當螞蟻遇到障礙物時,將按照設定隨機選擇其行走的方向。當有指引時,將按照覓食規則移動。在剛找到食物或者窩時,螞蟻散發的信息素最多,當隨著走遠時,散發的信息素將逐漸減少。在使用蟻群算法進行尋優時,蟻群算法基本工作流程是:

接下來我們舉一個實例進行蟻群算法的功能測試,我們做一個城市之間最優旅行方式的計算,為了體現算法強大,我們選擇31個城市的坐標,隨機選擇一個城市作為始發地。我們先看看31個城市的坐標,呈現無規則狀態,這為計算增加了不少難度。

在這31所城市中,我們會有31×30×29×28×…×2×1種選擇,如果靠人工計算幾乎是不可能的事情,就算是計算機也不是一時半刻就可以完成的,但是我們利用魚群算法,不用挨個計算,可以迅速的找到最合適的旅行路線。我們設置螞蟻的數量為50個,信息素重要因子為1,啟發函數重要因子為5,初次迭代次數為1,最大迭代次數為200。接下來隨機產生各個螞蟻的起點城市,逐個螞蟻路徑選擇,逐個城市路徑選擇,將已訪問的城市和沒訪問的城市以及待訪問城市找出來,並採用輪盤賭法選擇下一個城市。然後計算各個螞蟻的路徑距離,取出每個螞蟻的路徑,計算最短路徑距離和平均距離,更新信息素,逐個螞蟻計算,逐個城市計算,我們採用MATLAB編程去實現。

通過編輯程序得出運算結果:

我們可以看出計算出來的最短路徑為15601.9195km,隨機選擇第14個編號作為初始位置:14、12、13、11、23、16、5、6、7、2、4、8、9、10、3、18、17、19、24、25、20、21、22、26、28、27、30、31、29、1、15、14。旅行的路線圖如下圖所示:

從上面的迭代圖可以看出,第一代蟻群計算的距離約為1.8萬km,大約經過80代循環之後,基本上找到了最優旅行路線。除了本文的應用,蟻群算法應用廣泛,也可以應用於其他組合優化問題,如線性最優解問題、指派問題、Job—shop調度問題、車輛路由問題、圖著色問題和網絡路由問題等。最近幾年,該算法在網絡路由中的應用受到越來越多學者的關注,並提出了一些新的基於蟻群算法的路由算法。同傳統的路由算法相比較,該算法在網絡路由中具有信息分布式性、動態性、隨機性和異步性等特點,而這些特點正好能滿足網絡路由的需要。

相關焦點

  • 蟻群啟發人類工程算法設計:結構精妙效率高
    美國史丹福大學的一個研究組發現沙漠螞蟻們在外出覓食時採用的組織方式與人類社會在計算機網絡方面所採用的,旨在規範數據傳輸的TCP協議之間存在算法方面的高度相似性——螞蟻網絡和人類使用的信息網絡算法設計都採用了正反饋機制:在TCP傳輸協議中,一個數據包的抵達確認信號會激發下一個數據包的發送開始,而一隻滿載而歸的螞蟻個體則會觸發下一隻覓食的螞蟻個體出發繼續覓食的工作。
  • 蟻群算法即相關代碼實現詳解—matlab之智能算法
    蟻群算法即相關代碼實現詳解 一.算法背景 蟻群算法是近年來剛剛誕生的隨機優化方法,它是一種源於大自然的新的仿生類算法.由義大利學者Dorigo最早提出,螞蟻算法主要是通過螞蟻群體之間的信息傳遞而達到尋優的目的,最初又稱蟻群優化方法(Ant Colony
  • 基於蟻群算法求解函數的最大最小值的Matlab源碼「肥波貓」
    基於蟻群算法求解函數的最大最小值的Matlab源碼「肥波貓」上一篇基於遺傳算法求解函數的最大最小值的Matlab源碼「肥波貓」,本次用蟻群算法同樣可以解決。蟻群算法最早是由Marco Dorigo等人在1991年提出,他們在研究新型算法的過程中,發現蟻群在尋找食物時,通過分泌一種稱為信息素的生物激素交流覓食信息從而能快速的找到目標,據此提出了基於信息正反饋原理的蟻群算法。
  • 資料|MATLAB優化算法案例分析與應用(進階篇)
    from=leiphonecolumn_res0817內容簡介 · · · · · ·《MATLAB優化算法案例分析與應用(進階篇)》是深受廣大讀者歡迎的《MATLAB優化算法案例分析與應用》一書的姊妹篇,即進階篇。本書全面、系統、深入地介紹了MATLAB算法及案例應用。
  • 性能提升30%以上,實時實例分割算法SOLOv2實現產業SOTA
    本文介紹了產業 SOTA 的實時實例分割算法 SOLOv2。目標檢測無法精細獲得目標邊界形狀和面積,語義分割無法區分不同目標個體,並分別獲得位置。小夥伴們可能會疑惑,以上動圖展示的實例分割效果顯然兼具了目標檢測和語義分割二者的能力,是通過什麼技術實現的呢?下面給大家介紹的這類相當牛氣的方法:實時實例分割算法 SOLOv2!
  • 解讀騰訊優圖ICCV2017 12篇論文:全球首個AI卸妝效果的算法等
    今年,即將於2017年11月8日在北京國家會議中心舉辦的AI World 2017世界人工智慧大會上,我們請到了騰訊優圖實驗室傑出科學家賈佳亞教授發表演講。 想了解更多關於騰訊優圖和計算機視覺的前沿動態?點擊文末閱讀原文,馬上參會!
  • 騰訊光影研究室憑GYSeg算法斬獲MIT場景解析評測第一
    近日,騰訊光影研究室(Tencent GYLab)憑藉自研語義分割算法GYSeg,在MIT Scene Parsing Benchmark 場景解析任務中刷新世界紀錄拔得頭籌,領先商湯科技、亞馬遜、復旦、北大、MIT等國內外研究機構和高校。
  • 《Python程式設計師面試算法寶典》PDF超清版開源了文末附下載方式
    、分類歸納,提煉出算法面試的各種應對技巧,是一本Python程式設計師算法面試的圖書寶典。這裡,不僅介紹了程式設計師算法面試中的「萬能公式」,而且通過具體的實例從多角度剖析各類算法面試題,為讀者建立了一個完整的算法面試的方案資料庫,讓讀者快速理解全書內容、做到胸有成竹應對面試的同時,也為未來的職業發展鋪平道路。
  • 回歸算法及SOC估計實例
    回歸算法,是一種應用比較廣泛的機器算法。智能算法中,回歸算法往往與其他算法結合使用。在鋰電池SOC估計中,開路電壓估計SOC的方法,就是一種典型的回歸算法應用形式。詳細過程在本文最後一部分說明。1 什麼是回歸算法簡單的理解回歸,就是找到模型函數中未知係數的方法。
  • Kmeans算法精簡版(無for loop循環)
    大家在學習算法的時候會學習到關於Kmeans的算法,但是網絡和很多機器學習算法書中關於Kmeans的算法理論核心一樣,但是代碼實現過於複雜,效率不高,不方便閱讀。這篇文章首先列舉出Kmeans核心的算法過程,並且會給出如何最大限度的在不用for循環的前提下,利用numpy, pandas的高效的功能來完成Kmeans算法。
  • 【關注】自動駕駛技術與實例最全解析
    (2)高精度地圖,提供的環境信息中相對固定、更新周期較長的信息,比如車道標記、路緣、交通信號燈等; (3)信息識別單元,對傳感器接收到信息,利用深度學習等手段,對信息進行識別,目前對外界事物進行準確識別基本算法和技術有:誤差反向傳播算法和先進的數字攝像技術。
  • 卡爾曼濾波算法解析(一)
    在工程領域,只要涉及到信號處理問題,都繞不開一個人,那就是卡爾曼,雖然卡爾曼提出的估計理論已經過去八九十年之久,但是在如今的資訊時代,卡爾曼濾波依舊是機器人導航中最為常見的一種算法卡爾曼濾波是一種最小方差無偏估計,要求噪聲誤差滿足正態分布,而實際環境中,大部分噪聲誤差都可以近似為正態分布,這也是為什麼卡爾曼濾波能夠很好地發揮作用的原因,卡爾曼濾波的最大缺陷是只適用於線性系統,而實際對象中大部分都是非線性系統,對於非線性系統,在卡爾曼濾波的基礎上衍生出了擴展卡爾曼濾波算法,兩者在原理上基本相同,關於擴展卡爾曼濾波算法有時間再做論述。
  • 【乾貨】人工智慧:5種存在於大自然的技術及其應用
    這種監督學習算法既支持回歸問題,也能用於分類問題,且其應用的實例可以在日常的消費類產品中找到,包括智慧型手機及聯網家庭設備。 3.群體/集體智能(SWARM/COLLECTIVE INTELLIGENCE) 蟻群優化實例, 一種集體智能算法 算法類型
  • 深度學習變革視覺實例搜索
    本文主要對基於深度學習的實例搜索算法(下面簡稱為「深度實例搜索算法」)進行剖析和總結,文章分為四個部分:第一部分總結了經典視覺實例搜索算法的一般流程;第二部分和第三部分分別從兩個方面去介紹近些年主要的深度實例搜索算法;端到端的特徵學習方法和基於CNN特徵的特徵編碼方法;第四部分將通過總結在2015年首屆阿里巴巴大規模圖像大賽(Alibaba Large-scale Image Search Challenge
  • 機器學習新書-《貝葉斯算法分析技術第三版》免費分享
    本書旨在講解3個主題,並服務於相關的讀者:一是介紹貝葉斯推理的算法原理,二是介紹關於統計和相關領域的貝葉斯建模和計算的有效性相關技術,三是做為應用統計學的貝葉斯方法手冊,適用於應用統計學的一般讀者和研究人員。儘管這本書最初一些章節是介紹性的,但從統計學的第一篇文章的意義上來說,它絕對不是初級的。本書中使用的數學知識包括基本概率和統計學、初等微積分和線性代數。
  • ICLR,利用深度展開算法尋找RNA的二級結構,詳細實例乾貨哦
    對於這一問題,傳統的解決方法是將它看做一個類似於字符串匹配的問題,並用類似動態規劃一類的算法解決。而這篇ICLR文章採用深度學習和優化問題相結合的方式設計模型,其效果遠超傳統方法。下面就讓我們一起來學習一下文中解決問題的具體方法和設計思路。
  • 幾種常見的車輛路徑規划算法
    蟻群算法 蟻群算法是由義大利學者 M.Dorigo 等於 1991 年提出的,它是一種隨機搜索算法 , 是在對大自然中蟻群集體行為的研究基礎上總結歸納出的一種優化算法,具有較強的魯棒性,而且易於與其他方法相結合,蟻群算法的複雜度要優於 Dijkstra 算法。
  • 無人機集群——航跡規劃你不知道的各種算法優缺點
    其算法可分可行性方向算法、通用動態算法及實時優化算法。根據規劃範圍可分為全局規划算法及局部尋優算法。如Dynapath算法是一種前向鏈動態規劃技術,在大的任務區域內進行航線規劃是典型的大範圍優化問題,Dynapath 算法可以得到問題的全局最優解。但該算法具有維數爆炸特性的缺陷。
  • 在C語言中,核心是指針,靈魂是算法,本篇用源碼解析十大基礎算法原理!
    算法是一個程序和軟體的靈魂,作為一名優秀的程式設計師,只有對一些基礎的算法有著全面的掌握本文是近百個C語言算法系列的第二篇,包括了經典的Fibonacci數列、簡易計算器、回文檢查、質數檢查等算法。也許他們能在你的畢業設計或者面試中派上用場。
  • 騰訊優圖的 ICCV 2017:12篇論文入選 CV 頂會,3篇Oral|ICCV 2017
    被譽為計算機視覺領域三大頂級會議之一的ICCV(另外兩個為CVPR、ECCV)近日揭曉收錄論文名單,騰訊優圖共有12篇論文入選,其中3篇被選做口頭報告(Oral),該類論文僅佔總投稿數的2.1%(45/2143)。本屆 ICCV 共收到2143篇論文投稿,其中621篇被選為大會論文,錄用比例29%。