1. 程式人生 > >《本科畢業論文》

《本科畢業論文》

融合 重復 網絡系統 main 發現 network false 轉變 結束

畢業論文

(本 生)

論文題目(中文) 基於螞蟻算法的路由選擇仿真模擬 論文題目(外文) Simulation of routing based on Ant

algorithm

牛維強

導師姓名、職稱 袁永娜 講師

學生所屬學院 信息科學與工程學院

計算機科學與技術

2014級

蘭州大學教務處

誠信責任書

本人鄭重聲明:本人所呈交的畢業論文(設計),是在導師的指導下獨立進行研究所取得的成果。畢業論文(設計)中凡引用他人已經發表或未發表的成果、數據、觀點等,均已明確註明出處。除文中已經註明引用的內容外,不包含任何其他個人或集體已經發表或在網上發表的論文。

本聲明的法律責任由本人承擔。

論文作者簽名:

期:

關於畢業論文(設計)使用授權的聲明

本人在導師指導下所完成的論文及相關的職務作品,知識產權歸屬蘭州大學。本人完全了解蘭州大學有關保存、使用畢業論文的規定,同意學校保存或向國家有關部門或機構送交論文的紙質版和電子版,允許論文被查閱和借閱;本人授權蘭州大學可以將本畢業論文的全部或部分內容編入有關數據庫進行檢索,可以采用任何復制手段保存和匯編本畢業論文。本人離校後發表、使用畢業論文或與該論文直接相關的學術論文或成果時,第一署名單位仍然為蘭州大學。

本畢業論文研究內容:

□可以公開

□不宜公開,已在學位辦公室辦理保密申請,解密後適用本授權書。

(請在以上選項內選擇其中一項打“√”)

論文作者簽名: 導師簽名:

期: 期:

基於螞蟻算法的路由選擇仿真模擬

摘 要

本論文主要講述了現代網絡技術中的網絡路由選擇借助螞蟻算法來尋找最短路徑及其過程的模擬。螞蟻算法自1992年問世以來,就被全世界各地的專家學者們所青睞,在glgoo裏輸入關鍵詞“螞蟻算法”,從1990年開始的就有9890條結果,2017年至今,就有414篇文章與它有關,2018年開年就有28篇文章關於它的研究和應用。從知網來看,在剛剛過去的2017年還有51篇文章是關於螞蟻算法的。分析過去的接近二十年的時間裏,我們可以發現,螞蟻算法在計算機軟件及計算機應用,自動化技術,互聯網技術,電信技術,數學,公路與水路運輸,電力工業,航空航天工程,工業設備,地質學,船舶工業,農業經濟,生物學,化工,交通運輸經濟,輕工業手工業,貿易,資源科學等學科和領域都有很廣泛的應用。本文講述了螞蟻算法在網絡技術方面的一個應用,首先分析了傳統蟻群算法原理,還有網絡技術中路由選擇的原理和存在的一些問題,然後產生了螞蟻算法在路由選擇情景中的模擬應用模型。之後用計算機圖形學的思維進行可視化的模擬和呈現出來,在模擬過程中,分析、設計模擬平臺的功能與基本內容,用JAVA小程序實現了動態模擬過程,接著對模擬的結果進行分析,最後對於螞蟻算法在未來科技中的發展進行了豐富展望。

關鍵詞: 蟻群算法;信息素;可視化;模擬系統;路由選擇;Java小程序

SIMULATION OF ROUTING BASED ON ANT ALGORITHM

Abstract

This thesis mainly describes the network routing in modern network technology. Ant algorithm is used to find the shortest path and the simulation of its process. Since its inception in 1992, ant algorithm has been favored by experts and scholars all over the world. The key word "ant algorithm" has been inputted into glgoo. Since 1990, there have been 9890 results, and in 2017, here are 414 articles about it and 28 articles about its research and application in 2018. There were 51 other articles on ant algorithms in 2017 though. Some network aspects researchers are working hard on study and analyze over the past two decades, ant algorithms have a very wide range of applications in computer software and computer applications, automation technology, Internet technology, telecommunications technology, mathematics, Road and waterway transport, power industry, aerospace engineering, industrial equipment, geology, ship industry, agricultural economy, biology, chemical industry, transportation economy, light industry handicraft industry, trade, Resources science and other disciplines and fields. In this thesis, an application of ant algorithm in network technology is studied. Firstly, the theory of traditional ant colony algorithm and route selection in network technology is analyzed. Then the simulation application model of ant algorithm in routing scenario is presented. In the process of simulation, the functions and basic contents of the simulation platform are analyzed and designed, and the dynamic simulation process is realized with Java applet. Finally the simulation results are analyzed and the development of ant algorithm in the future science and technology is prospected.

Key words: ant colony algorithm; pheromone; simulation; routing selection; applet

6

1章 緒 論 7

1.1 研究意義 7

1.2 螞蟻算法的研究進展 7

2章 網絡路由選擇原理 9

2.1 路由選擇的意義 9

2.1.1 路由選擇技術的組成 9

2.1.2 路由算法設計目標 9

2.1.3 路由算法的分類 9

2.2. 經典路由算法 10

2.2.1 Dijkstra算法 10

2.2.2 最短路徑算法的不足 10

3章 蟻群算法基本原理 12

4章 平臺開發工具 15

4.1 軟件環境 15

4.2 其他資料 15

4.3 Java 特性 15

4.3.1 簡單 15

4.3.2 面向對象 15

4.3.3 跨平臺 16

4.3.4 支持分布式的網絡應用 16

5章 系統功能結構 17

5.1 系統的總體結構圖 17

5.2 螞蟻算法步驟 17

6章 系統的實現 21

6.1 蟻群算法模擬的實現結果 21

7章 算法的不足思考 25

7.1 算法的不足 25

7.2 螞蟻算法的部分展望 26

結束語 27

參考文獻 28

29

論文(設計)成績 30

大自然才是真正的最偉大的創造者和發明家,是人類的創造力的豐富資源。人類認識事物的能力本質上就是來源於和自然的相互作用過程中的。生物和自然通過自身的演化過程磨合產生了完美的“自然算法”。

最近幾年,信息技術領域的科技發展一如既往的飛速發展,目前在計算機領域比較熱門的技術就是人工智能,大數據,雲計算,在人工只能領域裏有一個很重要的方向就是機器學習,機器學習很多的方法和模型,其中遺傳算法作為仿生算法在實際應用中取得了很大的成果,那麽在本篇論文當中我們提到另外一個仿生優化算法——螞蟻算法。生物學家們長期觀察螞蟻群體發現,雖然每個螞蟻本身的行為極其簡單,但由眾多簡單的個體所組成的大的群體卻能夠表現出令人驚訝的活動。後來的研究發現,螞蟻是通過信息素進行信息傳遞的。螞蟻在運動過程,會在路途上留下該物質,螞蟻他們自己可以感知到它,然後螞蟻會根據這種信息指導接下來的運動策略。在螞蟻群體中運動有這樣一種規律,如果某個路徑上走的螞蟻越多,那麽其他的螞蟻選擇走該路概率會越大.螞蟻之間是通過這種信息交流從而找到它們的目標物,這種信息交換是正反饋性質的。本文就是討論模擬螞蟻的這種活動規律,雖然模擬螞蟻是人工螞蟻,但是它和真實的螞蟻都存在一個群體中個體相互交流通信的機制,都會完成一個相同的任務,都會借助當前信息進行路徑的選擇。這種機制和網絡技術中的路由選擇很類似,因而我們把這種機制運用到網絡的路由選擇算法當中。然後用可視化技術模擬,使之很形象的表現出來,通過可視化技術,不僅增強了科研展示的更好的效果,而且增加了趣味性。

隨著人工智能時代的到來,螞蟻算法未來會與其他的智能算法進行大量的結合,比如遺傳算法,人工神經網絡,情感計算等。比如,在無人車研究方面,螞蟻用無線外激素網絡來確保他們個體之間不會相互碰撞,不管多少螞蟻,它們總是可以保持一種相對恒定的速度和狀態。科學家已經將這些行為融入到了無人駕駛人工智能算法當中,我們期待這未來更加智能的時代。

1章

1.1 研究意義

自從人類歷史進入到信息科技時代,我們每天的生活無時無刻都在被現代科技影響著,改變著。網絡,作為信息科技的重要產物之一,已經每時每刻在參與到我們現代人的生活中。歷史上因特網的真正的誕生,是1969年12月,美國建立的ARPA網。其實,計算機網絡系統比較復雜,用的是分層網絡技術。因為期初的各個機構的分層網絡系統體系結構有不同的標準,這給網絡的發展和應用造成很多的阻礙,後來國際標準化組織ISO在1984年頒布了“開放系統互連基本參考模型”OSI國際標準,由底向上是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。

路由選擇是分級層次裏的網絡層的協議。網絡層路由選擇協議一般而言都是基於典型的兩種分布式算法,分別是距離向量路由算法和鏈路狀態路由算法。

螞蟻算法是人們根據自然界中的螞蟻的群體活動規律的認知而抽象出來的一種特殊的具有自適應性的目標搜索算法,這種算法相比於傳統的搜索算法具有穩定性高,並行性強,更加智能化的優點,所以科學家引入螞蟻算法在網絡路由選擇裏應用。螞蟻算法利用螞蟻尋路中增強信息素的強度進行路徑優化的方式進行搜索目標物,然後本論文就是首先用螞蟻算法找到最短路徑,然後直接成為路由選擇的最短路徑。本論文重點在把這種尋找最短路徑的過程動態呈現出來,更能直觀的感受和觀察尋找最短路徑的過程,增加研究的趣味性和即視感。

1.2 螞蟻算法的研究進展

其實早在20世紀50年代,仿生學家就根據自然的智慧提出了遺傳算法,用進化策略來進行解決復雜的優化問題,然後引起的群體智能理論在一段時間內很火,1992年,dorigo M等人提出了螞蟻系統(Ant system)用來解決旅行商問題(TSP),在1996年後,螞蟻算法才慢慢得到全世界學者的重視,並在各個領域開始應用。1997年德國的學者Stutzle和Hoos H提出最大最小螞蟻系統,對AS系統進行了改進,很具有歷史意義和典型性。1998年開始,在比利時的布魯塞爾每2年舉行ANTS國際學術會議。

國內的研究螞蟻算法及其應用比較晚點,開始於1998年末。從公開發表的相關論文(以投稿日期為標準)庫來講的話,國內最先研究螞蟻算法的是東北大學控制仿真研究中心的張紀會博士與旭心教授(1997年10月)。近幾年,邱秀娟等學者利用偽隨機比例改進了螞蟻算法,趙立東在螞蟻算法裏融入了遺產算法,加快了算法的收斂速度。

進入21世紀的最近十幾年,國際著名頂級學術刊物《Nature》多次對螞蟻算法的研究成果進行過報道,我們可以從中發現,螞蟻算法的研究已經從起初的TSP領域滲透大到了其他的各種智能領域和場景,由解決一維靜態優化問題到解決多維動態組合優化問題,由離散域範圍擴展到了連續域範圍。螞蟻算法的可視化模擬工作更加具有工程性,實踐性,理論性要求並不是很高。作為本科生,因此我選擇進行螞蟻算法的可視化模擬作為我畢業設計的主要內容。

2 網絡路由選擇原理

2.1 路由選擇的意義

因特網其實是TCP/IP網絡,目前世界上最大的網就是TCP/IP網絡。

路由選擇是網絡運作的核心和關鍵,合理而高效的路由選擇不僅要保障全網的正常運行,而且要有高的網絡的接通率。

路由技術是隨著網絡技術的發展而來的,在早期的ISO/ OSI 體系結構中,路由屬於網絡層,路由選擇是分組交換系統裏一個重要階段,是為通往特定節點的數據包找到最短路徑。路由選擇的規則就是路由算法,路由算法要麽運行在網絡主機上,要麽運行在專用的路由設備上,比如路由器。

間接路由有三類:靜態路由,默認路由,動態路由,應用最廣泛和最復雜的且具有研究意義的就是動態路由。網絡路由是由路由表來存儲信息的,網絡中最常用的是用以下兩種路由算法來維護其路由選擇表,它們分別是:距離向量路由算法,鏈路狀態路由算法。

2.1.1 路由選擇技術的組成

路由技術主要包括確定最佳路徑和傳輸數據包這兩個部分,信包的傳遞叫做交換,交換過程簡單,而路徑的選擇過程復雜,所以我們往往重點關註路徑選擇的過程。

2.1.2 路由算法設計目標

(1) 最佳路徑

算法必須有尋找最佳路徑的能力,最佳路徑取決於相對應的衡量標準

(2) 簡單

要求算法簡單,節省開支,減少時延,用節點上最少的運行資源

(3) 穩定

算法必須是穩定。在遇到特殊情況時,算法能夠穩定地運行。

(4)自適應

路由算法要有適應能力,當網絡環境發生變化的時候,能夠較快的新的環境

中運作。還需能適應網絡帶寬,網絡延遲等變化。

2.1.3 路由算法的分類

1.分層路由選擇算法類

將通信網絡中的各子網首先劃分為幾個區,每個節點只在本區內進行路由選擇,然後把各區的結果再聯合統一起來即可。

  1. 分布式路由選擇算法類

網絡中的每個節點要定期的與其相鄰節點交互信息,每個節點都需要存儲一張路由選擇表,然後不斷的更新路由選擇表。典型代表有:距離向量路由算法和鏈路狀態算法。

3.集中式路由選擇算法類

首先設置一個路由選擇控制中心,每個節點要定期地向控制中心發送各自的狀態信息。

4.孤立式路由選擇算法類

節點決定分組路由時,僅僅是依據節點本身的信息而不會與其他節點有任何交互。

5.擴展式路由選擇算法類

又稱之為宏泛式算法,當節點收到不是發給自己的分組時,會復制若幹個副本發給自己相鄰的節點。這樣肯定會有一個路徑到達目標節點,但是這樣的策略有點資源浪費,不利於大流量的情況。

2.2. 經典路由算法

2.2.1 Dijkstra算法

1959 年提出的,該算法的結果就是始點到各頂點的最短路徑。

Dijkstra 算法的步驟一般如下:

第一步:需要初始化V={1 2 N} S = {F} D [I ] = L[F I ] Y[ I ] = F 其中I=1,2 ,…N 。

F 表示路徑的始點,I 表示某一頂點N 表示網絡中所有頂點的數目,V 是所有頂點的集合L[F I]表示從F 點到I 點的距離S 是頂點的集合,D N 個元素的數組用來存儲頂點F 到其它頂點的最短距離,Y N 個元素的數組用來存儲最短路徑中在頂點I 之前經過的最近頂點。

第二步:從V S 集合中找一個頂點T 使得D[T] 是最小值並將T 加入到S 集合中如果V S 是空集合則結束運算

第三步:調整Y D 數組中的值在V S 集合中對於頂點T 的鄰接各頂點I 如果D[I ]> D[T]+L[I T] 那麽令Y[I]=T D[I] = D[T]+L[I T]

重復執行第二步,直到程序結束。

2.2.2 最短路徑算法的不足

該算法的數據結構實現起來比較復雜,當網絡拓撲結構比較復雜的時候,其實就已經難以對付。主要表現在如下方面:

1)數據結構中復雜網絡是用圖來表示的,圖的存儲表示一般是無向圖,用鄰接矩陣和十字鏈表表示,復雜網絡圖的存儲消費太多空間。

(2) 算法時間長,當遇到復雜網絡結構時,Dijkstra 算法來計算路徑時間花費很長。

3)遇到的復雜的網絡結構運行效率大大降低。

3 蟻群算法基本原理

3.1 螞蟻算法的產生

螞蟻是大自然最為常見的一種昆蟲,地球上除了在南極洲外的其他地方都有它的存在,它形體小,但是具有群體社會性,央視《自然傳奇》螞蟻帝國裏講到,當螞蟻聯合起來時候,個體就會消失,群體就會變成一個存在的整體,由原先的小小的個體變成一只巨大的野獸。隨著近代仿生學的發展,這種似乎微不足道的小東西越來越多地受到學者們的關註,1992年Marco Dorigo這位博士生首次公布了這個提法,在此基礎上一個很好的優化算法逐漸發展起來。

3.2 螞蟻算法的思想

螞蟻算法具有並行性,這種並行,就是所有不同方向在同時探索,不同方向的掃描的深度和速度並不一樣,是階梯式的層次化的,會根據狀態的信息不斷重新計算。它是過程導向的而不是結果導向的算法,從微觀上看,他很簡單,但和一般的算法又有區別:

第一,它是全方位的掃描,每個角度都有螞蟻在搜尋食物,不帶主觀偏見的。

第二,因為它是全方位的,所以蟻群這個復雜系統裏,就會與各種機會橫向比較,比較之後才會選擇最好的機會,這個比較不斷微調的。

第三,這種算法具有穩定性,也不存在過度用杠桿的問題的可能性。所以某個方向的蟻群遇到意想不到的災害時,總有其它方向的螞蟻可以備用。

3.3 蟻群算法原理

信息素可以被其他的螞蟻感知到,然後繼續不斷的感知遞推,自然地當之前的螞蟻留下的信息素和後來的螞蟻的信息素重合的時候,信息素形成一種疊加的效果,並循環下去。這樣,經過螞蟻越多的位置,後面的螞蟻就會越多的去走,在一段時間內,那些被識別為短的路徑會被更大概率地訪問,積累的信息素也就越多,在下一個時間段內被其他的螞蟻選擇走的可能性就越大。持續一段時間後,螞蟻就會都走那條最短路徑,這就是具有正反饋效應的螞蟻搜索法。(如圖)

1中有一條螞蟻經過的路徑,其中a是食物,e是巢穴,如圖1 a)所示。當螞蟻遇到障礙物,從e點到a點的是螞蟻的目標原則路線,但是在d點遇到了障礙物,出現了分叉路口,每只螞蟻就必須在d點做出向左還是向右的決策。當返回的時候,從a點到e點的螞蟻也必須在b點做出向哪邊走的決定。具體的選擇概率是會受到信息素的影響。如果向右的路徑上的信息素量大,則選擇向右走的概率大。需要註意的是,剛開始時候,對障礙出現後第一個到達b點或d點的螞蟻而言,此時因為沒有信息素的存在,所以它們的選擇是任意的,如圖1 b)所示。本文我們以從e點到a點也就是去找食物的這一過程的螞蟻活動舉例說明原理,對於從a 點到e點的返回過程的螞蟻活動而言規律是一致的。從圖中我們顯然看見,路徑d-h-b是比路徑d-c-b要短,我們假定的每只螞蟻的運動速度是一定的也是相同的,不會出現時而快時而慢的情況,這樣的話,選擇d-h-b路徑的第一只螞蟻肯定要比選擇d-c-b的第一只螞蟻早到達b點。此時,從d點向b點看,指向路徑d-h-b的信息素量要比指向路徑d-c-b的信息素大。因此從下一時刻開始,從e點經d點達到a點的螞蟻選擇d-h-b路徑比選擇d-c-b路徑的概率要大得多。從而使路徑d-h-b(或b-h-d)信息素與路徑d-c-b(或b-c-d)上的信息素量的差變大。信息素量差大直觀的表現出來就是選擇路徑d-h-b(或b-h-d)路徑的螞蟻進一步增加,越來越多的螞蟻走d-h-b路線,最終d-c-b路線幾乎不會出現螞蟻的蹤跡。

我們如何模擬螞蟻算法呢?首先,你要讓螞蟻能夠避開障礙物,其次,要讓螞蟻找到食物,就要遍歷空間上的所有點;再次,如果要讓螞蟻找到最短的路徑,那麽需要計算所有可能的路徑並且比較它們的大小。
實現這些功能,雖然看起來很復雜,但是把它分解分析,其實還是比較簡單的,因為我們模擬的是簡單的原理。每只螞蟻感知和相應的是很小範圍內的眼前的局部信息,根據這些局部信息利用幾條簡單的規則進行決策和響應,然而,在蟻群這個大型的群體裏,復雜性的行為就會奇妙地凸現出來。其簡單規則可以概括為以下幾個大的方面:

1.範圍:
螞蟻活動的範圍是方形的空間,螞蟻的速度半徑VR(一般是3),也就是說它可以感知和活動的範圍是VR*VR整個方形區域。
2.環境:
模擬虛擬界面,裏面有螞蟻,障礙物,窩,食物。另外有信息素(信息素存活時間有一定限度,是具有生命周期的)
3.覓食規則:
每個螞蟻感知自身一定的小範圍內(這種小範圍精度很小,人肉眼是無法感知的)是否有目標物的存在,如果有,當然是最好的情況,就直接到達。如果沒有就看信息素,看哪個信息素多就走哪兒。回窩的過程和上面的一樣,不過信息素變成了窩方向信息素。

4.移動規則:
每只螞蟻都朝向信息素最多的方向移,當自己附近沒有信息素時,螞蟻具有運動的慣性, 和隨機性,允許一定的方向錯誤,這樣它單個的運動既有目的性,又有隨機性。為防止螞蟻原地踏步,要標記已經走過的點,如果發現要走的下一點已經在最近走過了,會盡量避開。
5.避障規則:
當螞蟻運動過程中遇到障礙物了,就會馬上隨機產生新的方位前行,而此時如果還感知到了信息素的話,其接下來的運動方位還會受到信息素的引導因素。

6.播撒信息素規則:
每只螞蟻在剛找到食物或者窩的時候會釋放一定的信息素,但是信息素的生命周期時有時間限定的,當過了一段時間後就會消失。體現在直觀的觀察者感受就是當螞蟻遠離目標物的時候,我們看到隨著逐漸遠離,信息素是越來越少的。

遵循以上這些規則,我們其實已經發現,螞蟻之間不會有直接的交互,但是通過環境其實在進行間接的交互,整個模擬系統裏的元素形成了一個整體,穩定運行,達到了真實螞蟻的活動原理一致的效果。

4 平臺開發工具

4.1 軟件環境

裝有JDK的JAVA環境的個人計算機,並且設置好了classpath環境變量,安裝有eclipse即可。

4.2 其他資料

《Java面向對象編程》孫衛琴,電子工業出版社.

Java程序員教程》Paul J.deitel

Deitel &associates,inc.

Harvey M.deitel

Deitel &associates,inc.著,

電子工業出版社.

Java面向對象程序設計》馬俊 範枚編著.清華大學出版社.

《Java與模式》.閻宏.電子工業出版社.

4.3 Java 特性

4.3.1 簡單

(1) 舍棄C++的不足之處和一些不用的冗雜功能, 例如操作符過載、多級繼承性和各種自動強制性等。

(2) 增加了自動垃圾回收機制, 使程序員在開發過程中不考慮存儲器管理,減少編程錯誤的發生率,大大提高編程效率。

(3) 減小程序規模, 提出了小應用程序applet

4.3.2 面向對象

Java 是面向對象的, C++是強制面向對象語言,Java 語言中, 除了原始數據類型外, 其余的成分均屬Java 的對象,Java支持靜態和動態風格的代碼重用。

4.3.3 跨平臺

Java 是一種解釋執行語言, 運行在Java 虛擬機上的, 而虛擬機是獨立於硬件的, 只要裝有虛擬機的平臺都可以運行Java程序。除上述優點以外, Java 有多線程動態性。

4.3.4 支持分布式的網絡應用

Java核心類庫包括一個支持HTTP,SMTP,FTP等基於TCP/IP協議的類庫,Java程序可以用URL打開和訪問網絡對象。在網絡應用中,Java堪稱完美。

5 系統功能結構

5.1 系統的總體結構圖

5.2 螞蟻算法步驟

第一步:首先看螞蟻是否找到了目標點(在還沒有找到食物時,目標點是食物,找到食物後,目標點換成窩)

實現代碼:

if(Judged==false){

if(JudgeEnd()){

//看螞蟻是否到了目標點,如果到了,則退出該函數

Judged=true;

return; }

}

第二步:計算螞蟻主方向,當沒有信息素做指導的時螞蟻默認主方向運動

第三步:搜索周圍信息,包括信息素信息,障礙物信息

6 系統的實現

6.1 蟻群算法模擬的實現結果

程序執行結果圖:

程序運行說明

淺藍色點是食物,黃點是窩,霧狀點是螞蟻信息素,紅點是障礙物,白點代表螞蟻(該截圖中是因為程序還沒有開始執行,所以就暫時無白色點)。另外,我們可以按設置更改算法的變量。

預期的結果
螞蟻各自相互獨立的在找食物。當某一只找到食物以後,便會釋放信息素,讓其他同伴能夠感知,每個螞蟻都這樣做,那麽越來越多的螞蟻會找到食物。當某個螞蟻意外的走出新路,如果新的路徑比原來的其他路更短,根據信息素原理,其他螞蟻就會被吸引到這條更短的路上來。經過一段時間運行,一條最短路徑很顯然的出現了。

下面是程序運行的部分截圖:

上圖是剛執行時,白色的螞蟻從黃窩中出來,按隨機分配的方向跑,所以看上去像是個圈。

上圖中有只螞蟻找到了食物,然後將窩作為目標點,回窩,並也留下信息素(藍色的軌跡)

從上圖中發現,其他螞蟻找到了食物,在回窩路上,根據其他螞蟻留下的信息素找到了回路。

圖中,一只螞蟻在找到事物回窩中路上,遇到了障礙,因為此時周圍也沒有其他的信息素,就根據主方向走,若隨機變換後的方向上還有障礙物,那螞蟻就再隨機變換方位,直到沒有障礙物時候。

在此圖中,我們觀察那只遇見障礙的螞蟻(白圈標記),因為在運動中遇到了信息素,所以選擇走信息素引導的路徑。

上圖是程序執行1小時後的截圖,信息素有一個特性就是會在釋放後保留一段時間。大多數螞蟻都集中到了一條比較短的明顯的路徑上,位於這條路徑上留下的信息素最多,由於其他的路徑不是最優解,走過的螞蟻比較少,留下的信息素也少。此時,程序運行結果趨於穩定。

7章 算法的不足和思考

7.1 算法的不足

任何事物必然都是兩面性,螞蟻算法有它優良的一面,在面對具體問題的時候當然也不免有些不足。

  1. 僅限於局部最優解。

2. 尋找過程中有停滯現象。當叠代到一定次數後,在某個或些局部最優解附近的小範圍內發生了停滯現象。

3. 算法的運行時間長。盡管和其他算法相比,蟻群算法在叠代次數和路徑結果上都有一定的優勢,但是在尋找最優路徑過程中花費的時間還是不太理想,如果遇到大型的網絡結構,那麽花費的時間會更長,雖然它有時候是比傳統最短路徑算法先進。

4. 通過不斷的測試,我們發現螞蟻的數目對於算法的運行過程和運行結果都有很大的影響。

實驗條件: 其他的參數值都不變

1 螞蟻的數量為10 2 螞蟻的數量為50

實驗結果說明,螞蟻數量越多,算法的性能會更好,但是相應的其運行的時間更多。螞蟻的數量的選擇成為算法性能的重要因素。蟻群算法真正的應用於網絡路由實踐中,還是需要很多的因素需要去研究,本論文只是對通過實驗選取一些比較簡單的不穩定因素對算法的性能做了簡要的分析。另外,蟻群算法中信息素的調整也是一個很重要的因素,這需要更加深入的實驗設計和研究。這也是以後關於螞蟻算法學者們研究的一個方向。還有一點需要說明的是,螞蟻的活動機制可能還有更加復雜的原理,信息素只是一個因素之一,這些都是後來人需要探索的,去更深入的研究螞蟻活動的秘密。

7.2 螞蟻算法部分展望

螞蟻算法是自然界給予我們的智慧啟迪,它既代表了社會組織的歷史,也在一定程度上代表了我們人類世界計算機的未來。 它作為拉馬克搜索方式之一,當一只螞蟻在自己的活動中發現了最新的最短路徑的時,立馬會產生信息素把信息傳遞給其他的個體螞蟻,單只螞蟻畢生所學就間接地很巧妙轉變為螞蟻群體信息總和的一部分,這樣單個螞蟻把它學習到的知識自然地傳播給自己的群體。從而表現出群體驚人的搜索能力。

螞蟻投入“傳播”的信息可以說是很少的單個個體傳播的範圍也很小,信號也比較弱。但是將弱傳播機制引入進化思想後產生的提法相當具有有吸引力的,這給我們連接分布式計算機方式帶來了很好的解決思路。

隨著人工智能時代越來越離我們生活接近,螞蟻算法未來會與其他的智能算法結合,比如遺傳算法,人工神經網絡,情感計算等。

螞蟻算法本身具有並行性,單只螞蟻在活動中是不受其他螞蟻的影響,是相互獨立的,但是他們之間又是通過信息傳遞的機制進行交互,從而達到整個狀態的穩定。所以說螞蟻算法應該是以分布式的協同優化計算方式為特征的,在串行計算機上對螞蟻算法的進行模擬並不能真正的體現出螞蟻算法並行性要求,螞蟻算法的模擬研究在未來會借助並行機的實現來進行,而無疑這也將會推進並行機的研究和發展,這會對智能計算機體系結構產生促進作用。正所謂,科學的發展就是在相互的發展中不斷成全各個領域,不斷螺旋上升的過程。

最近的研究發現,人體免疫系統中的淋巴細胞,在掃描抵禦外來病原體時,似乎也是采取類似的算法規律。另外,螞蟻在群體運動中的導航系統也可以幫助無人機和無人駕駛車輛避免交通事故,可以說,螞蟻算法在未來的智能時代其前景一定是具有生命力的。

結束語

蟻群算法通過模擬真實蟻群之間相互作用的行為而隨機搜索,它與目前其他的比如遺傳算法、粒子群算法、模擬退火算法、禁忌算法等啟發式算法一樣是用來求解組合優化問題時一般考慮的具有啟發特性的搜索算法。群體智能領域,蟻群算法是其研究熱點之一。這種機制和網絡技術中的路由選擇很類似,因而我們把這種機制運用到網絡的路由選擇算法當中。然後用可視化技術模擬,使之很形象的表現出來,通過可視化技術,不僅增強了科研展示的更好的效果,而且增加了趣味性。

本文說明了螞蟻算法的原理,研究現狀,網絡路由的原理和技術,模擬平臺的設計,模擬的結果分析,以及最後的對這一研究領域的未來展望。

通過老師的指導,基本完成了模擬平臺的設計,設計了一套可以使用的螞蟻算法路由選擇模擬的平臺。但是裏面還是有很多的問題,有很多的不足,因為螞蟻算法是人工智能,機器學習的一些知識,由於知識水平還不夠,一些更加細節的方面有待進一步深入的研究。

另外,可視化技術和理念和技術都是發生著巨大的變化,Java小程序雖然具有很好的展示效,但是目前而言顯然已經過時,本文之所以用小程序主要原因就是作為本科生練習Java語言的駕馭能力,之後我還會進行版本的更新,用最新的可視化技術進行更好的模擬,以求得更好的界面效果和體驗。

參考文獻

[1] Dorigo M,Gambardella L M.Ant colony system: A cooperative learning approach to the traveling salesman problem,IEEE Trans[J]. Evolutionary Computation,1997,1(1):53-66.

[2] Minjie Zhang,Jianmin Xu,Yanguang Cai. Heuristic Ant Algorithm for Road Network Traffic Coordination Control[J]. Journal of Intelligent Systems,2013,21(4).

[3] Mohammad H. Afshar,Miguel A. Marino. Application of an ant algorithm for layout optimization of tree networks[J]. Engineering Optimization,2006,38(3).

[4] Li Xiong,Jiang Wen. Method for generating multiple risky barcodes of complex diseases using ant colony algorithm.[J]. Theoretical biology & medical modelling,2017,14(1).

[5] Viktor Danchuk,Olena Bakulich,Vitaliy Svatko. An Improvement in ant Algorithm Method for Optimizing a Transport Route with Regard to Traffic Flow[J]. Procedia Engineering,2017,187.

[6] S. Madadgar,A. Afshar. An Improved Continuous Ant Algorithm for Optimization of Water Resources Problems[J]. Water Resources Management,2009,23(10).

[7] Guan-Chun Luh,Chun-Yi Lin. Optimal design of truss structures using ant algorithm[J]. Structural and Multidisciplinary Optimization,2008,36(4).

[8] Yuanzhi Wang. Research of Multi-Depot Vehicle Routing Problem by Cellular Ant Algorithm[J]. Journal of Computers,2013,8(7).

[9]祁彪. 無線移動Ad Hoc網絡螞蟻路由算法的研究[D]. 華中科技大學. 2004.

[10]段海濱,螞蟻算法原理及其應用[M].北京:科學出版社,2005.

[11]嚴偉, 潘愛民,計算機網絡(第六版)[M].北京:清華大學出版社,2011.

[12]王誌中.基於改進蟻群算法的移動機器人路徑規劃研究[J].《機械設計與制造》,2018,1期.

[13] 樊瑋,朱軍.軟件Agent技術的研究[J].航空計算技術,1999,第29卷第4期.

[14]楊麗錦. 淺析蟻群算法的原理及應用方向[J]. 電腦知識與技術. 2009(06):185-186.

[15]賀長玲. 柔性制造系統的蟻群調度算法研究[D].西安交通大學.2010.

[16]劉正雷.基於petri網和蟻群算法的並行測試系統任務調度問題研究[D].重慶大學.2015.

[17]劉建芳. 蟻群算法的研究及其應用[D].重慶大學.2015.

[18]宋錦娟, 白艷萍. 一種改進的蟻群算法及其在TSP中的應用[J].數學的實踐與認識,2012.(18).

[19]王雲飛. 基於蟻群算法的武警巡邏路徑優化問題研究[D]. 國防科學技術大學,2014.

[20]賈文剛. 基於遺傳—蟻群融合算法的聚類算法研究[D].內蒙古大學,2017.

[21]劉建芳. 蟻群算法的研究及其應用[D].重慶大學,2015.

[22]劉聞. 蟻群算法及其應用研究[D].北京郵電大學,2014.

[23]孫駿. 基於蟻群優化算法的TSP問題研究[D]. 武漢理工大學. 2005.

[24]井大軍. 螞蟻算法的Java設計與實現[J]. 電腦編程技巧與維護. 2008(08):18-19-27.

自2017年11月開始做畢業設計以來,時間真的很快,轉眼間近半年已過。期間進行了課題的選定,開題時候的文獻查閱,老師的敦促和指導。這半年在論文寫作方面我學到了很多東西,即使我是計算機專業,但是在平時的學習的中對通信方面的東西也有所接觸。我們學過計算機網絡,但對通信方面一些專業的知識並不是很熟悉,所以在剛開始的時候,我所遇到的問題與其他人相比可能就多一點,但是在導師的不倦教誨之下,我還是按時完成了設計要求,在此要感謝袁永娜老師,本課題從調研、開題到方案的設計和實現始終是在袁老師的細心指導下進行的,她在繁重的科研和教學中抽出時間總是監督我,指導我,給出很多有價值的建議。她認真嚴格的科研態度,使我在學習生活上都取得了很多收益,使我學會了分析和解決問題的基本思路。另外,我感謝父母,是他們在一直默默的付出辛勤的汗水,支持我,鼓勵我。

最後,我感謝蘭州大學信息學院的各個老師和同學們,和你們在一起的四年時光我會永遠記得。在離開母校之際,祝母校全體老師、同學身體健康,事業有成!祝母校的一流大學之路,越來越精彩!

論文(設計)成績

導師評語

建議成績 指導教師(簽字)

答辯小組意見

答辯委員會負責人(簽字)

成績 學院(蓋章)

年 月 日

《本科畢業論文》