2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  畢 業(yè) 設 計(論 文)</p><p>  題目:蟻群算法在車輛路徑優(yōu)化中的應用</p><p>  姓 名 夏彬彬 </p><p>  學 號 0910312134 </p><p>  所在學院 湖北工業(yè)大學 </p&g

2、t;<p>  專業(yè)班級 09計職1班 </p><p>  指導教師 宗欣露 </p><p>  日 期 2013 年 5 月 8 日 </p><p><b>  摘 要</b></p><p>  許多實際工程問題可以抽象

3、為相應的組合優(yōu)化問題,TSP問題是作為所有組合優(yōu)化問題的范例而存在的,它已成為并將繼續(xù)成為測試組合優(yōu)化新算法的標準問題。從理論上講,使用窮舉法可以求解出TSP問題的最優(yōu)解;但是對現有的計算機來說,讓它在如此龐大的搜索空間中尋求最優(yōu)解,幾乎是不可能的。所以,各種求TSP問題近似解的算法應運而生了,本文所描述的蟻群算法(AC)也在其中。</p><p>  目前已出現了很多的啟發(fā)式算法,而蟻群算法作為一種新型的啟發(fā)式

4、算法,已成功地應用于求解TSP問題。螞蟻通過分泌信息素來加強較好路徑上信息素的濃度,同時按照路徑上的信息素濃度來選擇下一步的路徑:好的路徑將會被越來越多的螞蟻選擇,因此更多的信息素將會覆蓋較好的路徑;最終所有的螞蟻都集中到了好的路徑上。螞蟻的這種基于信息素的正反饋原理正是整個算法的關鍵所在。</p><p>  本文介紹了基本蟻群算法概念、原理及蟻群算法的特點,再根據蟻群算法的缺點做出了優(yōu)化。采用輪盤賭選擇代替了

5、基本框架中通過啟發(fā)式函數和信息素選擇路徑,改進蟻群算法的信息素傳遞參數,讓整個算法更快速的找到最優(yōu)解。其次,采用最大最小優(yōu)化系統限制最大值和最小值,讓整個系統更快收斂,得到最優(yōu)解。</p><p>  關鍵字:蟻群算法,TSP問題,啟發(fā)式函數,輪盤算法,最大最小優(yōu)化</p><p><b>  ABSTRACT</b></p><p>  Ma

6、ny practical engineering problems can be abstracted as corresponding combinatorial optimization problem, TSP problem is an example of all as a combinatorial optimization problem, it has become and will continue to be a n

7、ew combinatorial optimization algorithm of standard test problems. In theory, using the exhaustion method can solve the TSP problem optimal solution; But for the existing computer, let it in such a large search space to

8、seek the optimal solution, it is almost impossible. So, al</p><p>  Has appeared a lot of heuristic algorithm and ant colony algorithm as a kind of new heuristic algorithm, has been successfully used in solv

9、ing TSP problems. Ant secretion by pheromones to strengthen the good path pheromone concentration, at the same time according to the path to choose the next path pheromone concentration: good paths will be more and more

10、ants to choose, so that more information will cover good path; Eventually all the ants on a good path. This positive feedback based on the ph</p><p>  This paper introduces the basic concept of ant colony al

11、gorithm, principle and characteristics of ant colony algorithm, according to the disadvantages of ant colony algorithm optimization. Adopting roulette selection instead of the basic framework by heuristic function and ch

12、oose path pheromone, pheromone passing parameters of improved ant colony algorithm, make the whole algorithm find the optimal solution more quickly. Second, limiting the maximum and the minimum maximum minimum optimizati

13、on s</p><p>  Keywords: ant colony algorithm, the TSP problem, a heuristic function, roulette algorithm, maximum_minimum optimization</p><p><b>  目錄</b></p><p><b>

14、  摘 要2</b></p><p>  ABSTRACT3</p><p><b>  第1章 緒論6</b></p><p>  1.1 研究目的和意義6</p><p>  1.2 國內外研究現狀7</p><p>  1.2.1 國外研究現狀7<

15、/p><p>  1.2.2 國內研究現狀8</p><p>  1.3 本文研究內容9</p><p> ?。?) 基本蟻群算法9</p><p>  (2) 蟻群算法的優(yōu)化9</p><p> ?。?) 蟻群算法在TSP問題中的應用9</p><p>  1.4 開發(fā)環(huán)境與工具

16、9</p><p>  1.5 論文的組織結構10</p><p>  第2章蟻群算法10</p><p>  2.1 蟻群算法簡介10</p><p>  2.2 蟻群算法的原理11</p><p>  2.2.1 螞蟻覓食規(guī)則12</p><p>  2.2.2 螞蟻移

17、動規(guī)則12</p><p>  2.2.3 螞蟻避障規(guī)則12</p><p>  2.2.4 螞蟻撒信息素規(guī)則12</p><p>  2.3 蟻群算法的特點及優(yōu)缺點13</p><p>  2.3.1 蟻群算法的特點13</p><p>  2.3.2 蟻群算法的優(yōu)點14</p>

18、<p>  2.3.3 蟻群算法的缺點14</p><p>  2.5 蟻群算法的核心函數15</p><p><b> ?。?)初始化15</b></p><p> ?。?)選擇下一個城市,返回城市編號15</p><p> ?。?)更新環(huán)境信息素17</p><p>

19、; ?。?)檢查終止條件18</p><p> ?。?)輸出最優(yōu)值18</p><p>  2.6 蟻群算法的參數分析19</p><p>  2.6.1 螞蟻數量N_ANT_COUNT19</p><p>  2.6.2 啟發(fā)因子19</p><p>  2.6.3 期望啟發(fā)因子20</p>

20、<p>  2.6.4 信息素揮發(fā)度20</p><p>  2.6.5 總信息量(DBQ)21</p><p>  第3章改進的蟻群算法21</p><p>  3.1 輪盤賭選擇22</p><p>  3.1.1 輪盤賭選擇基本思想22</p><p>  3.1.2 輪盤賭選擇工

21、作過程22</p><p>  3.2 MAX_MIN ACO24</p><p>  3.2.1 MAX_MIN算法的框架結構24</p><p>  3.2.2 MAX_MIN 算法流程圖26</p><p>  第4章蟻群算法在車輛路徑問題中的應用28</p><p>  4.1 車輛路徑問

22、題簡介28</p><p>  4.1.1 車輛路徑問題定義28</p><p>  4.1.2 車輛路徑問題分類29</p><p>  4.2 車輛路徑問題的求解算法29</p><p>  4.2.1 精確算法29</p><p>  4.2.2 啟發(fā)式算法30</p><

23、;p>  4.3 蟻群算法解決車輛路徑問題31</p><p>  4.4 數值實驗結果及分析33</p><p>  4.4.1 輪盤賭選擇優(yōu)化前后數據對比33</p><p>  4.4.2 MAX_MIN算法改進前后數據對比34</p><p>  第5章總結與展望36</p><p>

24、;<b>  參考文獻36</b></p><p><b>  第1章 緒論</b></p><p>  TSP問題是一種特殊的車輛路徑問題,是作為所有組合優(yōu)化問題的范例而存在的,它已成為并將繼續(xù)成為測試組合優(yōu)化新算法的標準問題。傳統解法對小搜索空間的TSP問題適用,而且有的算法獲得精確解的性質也正是人們所期望的。</p>&l

25、t;p>  于是,許多求TSP問題近似解的新算法應運而生,啟發(fā)式算法便是其中之一。而蟻群算法(AC)是由意大利學者Macro Dorigo等人在20世紀90年代提出來的[1],它是繼模擬退火算法、遺傳算法、禁忌搜索算法、人工神經網絡算法等之后的一種新型的啟發(fā)式算法,已成功地應用于求解TSP問題。</p><p>  蟻群算法在解決TSP問題時具有許多優(yōu)良性質,但也存在著兩個主要的缺陷:收斂速度較慢,并且容易

26、出現停滯。為此,不少研究者提出了一些優(yōu)化策略及改進,如:蟻群系統算法ACS(也稱蟻群優(yōu)化算法ACO)、最大最小蟻群系統算法MMAS等;這些改進在一定程度上提高了算法的有效性,但效果并不明顯。如何進一步地對算法進行優(yōu)化,即優(yōu)化策略的研究,也正是當前蟻群算法研究的最大的熱點。</p><p>  另外,人們也注意到:改進后的蟻群算法在解決大型的TSP問題時,關鍵參數的設置和信息素的更新將花費很長的時間。而由于蟻群算法

27、中螞蟻的個體行為具有內在的并行性,因此可以考慮將算法進行分布式并行處理來縮短算法的運行時間。如何進行并行處理,亦即并行策略的研究,是目前蟻群算法研究的又一個熱點。</p><p>  1.1 研究目的和意義</p><p>  物流是供應鏈中最重要的組成部分,是商品從生產者經過各流通環(huán)節(jié)最終到達消費者手中的過程。物流業(yè)這是專門從事物流活動的行業(yè),從企業(yè)銷售成本和商品價格組成角度考察,物流

28、業(yè)蘊藏著巨大的商機。物流業(yè)被譽為經濟發(fā)展動脈的“加速器”和商業(yè)結果演變的“潤滑劑”,現代企業(yè)的“第三利潤源泉”。</p><p>  通過提高物流管理水平和效率,降低物流成本,可以為企業(yè)及社會帶來可觀的經濟效益,改善國民經濟運行效率,提高國際競爭力。因此,國家和各地政府紛紛定制了各種有利于物流發(fā)展的政策和計劃。在國家“十一五規(guī)劃”中講“大力發(fā)展現代物流”作為今后重點發(fā)展的領域,明確提出“十一五”結束即2010年,

29、全社會物流成本要比2004年的計策上下降2—3個百分點。</p><p>  合理使用優(yōu)化運輸路線,降低企業(yè)物流成本,是物流管理的很重要內容。針對物流管理中對運輸車輛路徑優(yōu)化調配的要求,1959年由Dantzig和Ramser首先提出了車輛路徑問題的數學模型。車輛路徑問題已經是近幾十年來運籌學、應用數學、網絡分析、計算機應用及交通運輸等學科研究一個熱點問題,并且在通訊、身長、國防、生物計算機應用等領域得到了廣泛的

30、應用。</p><p>  1.2 國內外研究現狀</p><p>  車輛路徑問題的研究有著現實的經濟意義和學術意義。自從VRP被Dantzig和Ramser于1959年提出之后,很快就引起了運籌學、應用數學、物流科學、計算機科學等各個學科專家學者與運輸計劃制定者和管理者的極大重視,成為運籌學與組合優(yōu)化領域的前沿問題和研究熱點。許多學者對該問題進行了大量的理論研究及實驗分析,目前己經產

31、生出多種成熟的算法,取得了令人矚目的成果,為后人的繼續(xù)研究提供了極高的參考價值。</p><p>  1.2.1 國外研究現狀</p><p>  1962年,Balinski等人首先提出VRP的集分割,直接考慮可行解集合,在此基礎上進行優(yōu)化,建立了最簡單的VRP模型。</p><p>  1971年,Eilon提出將動態(tài)規(guī)劃法用于固定車輛數的VRP,通過遞歸方法

32、求解。</p><p>  1974年,Wren Gillett等人提出掃描算法,將該算法應用于車輛調度問題,并和當時其它算法進行了比較,證明該算法所求得的解較優(yōu)于其它方法。</p><p>  1981年,Christofides等人提出了k度中心樹和相關算法,對固定車輛數m的m-TSP進行了進行k度中心樹松弛。后來,M.L.Fishe對這種方法做了進一步改進,可求解有134個客戶的VR

33、P。</p><p>  1991年,Gendreau等人將禁忌搜索方法應用于VRP,它是比較好的啟發(fā)式算法,可以成功地應用于許多經典的VRP。</p><p>  1996年,J.Lawrence將遺傳算法用于VRP的研究,有效的求解出帶時間窗限制的VRP。</p><p>  1.2.2 國內研究現狀</p><p>  在我國,有關車

34、輛路徑問題的研究是在20世紀90年代以后才逐漸興起的,比國外相對落后。隨著顧客需求的變化,運輸車輛的調度顯得日益重要。近年來,我國理論界逐漸開始關注車輛路徑問題的研究,并已取得初步成果。蟻群算法、啟發(fā)式算法以及一些混合算法被學者們廣泛的利用,代表了較近的研究思想。啟發(fā)式算法作為一種逐次逼近的算法,雖然不一定得到最優(yōu)解,但是可以高效率地得到具有較高精度的解,而且也易于考慮各種實際問題,因此,現已成為解決VRP問題的重要方法。與傳統的啟發(fā)式

35、算法相比,近年來所采用的一些新的啟發(fā)式算法,通過對啟發(fā)式規(guī)則和搜索方式的改進,在求解多節(jié)點、多約束的VRP問題上可以獲得較快的收斂速度和較高質量的全局解。浙江大學蔡延光等人運用模擬退火算法和遺傳算法求解多重車輛調度問題,并將其集成為智能算法庫,作為設計智能運輸調度系統的依據。鞍山鋼鐵學院李大衛(wèi)和東北大學姜大力等分別針對有時間窗和無時間窗約束下的車輛路徑問題用基因編碼遺傳算法求解,結果在較快速度下得到了近優(yōu)解。崔雪麗、馬良和范炳全等人基于

36、近年來出現的新型智能優(yōu)化思想:人工螞蟻系統給出了一種可快速求解VRP的螞蟻搜索算法。通過定義基本的人工螞蟻</p><p>  1.3 本文研究內容</p><p>  本文的研究內容可以概括為三部分:蟻群算法的基礎性理論、蟻群算法的優(yōu)化以及蟻群算法在TSP問題中的應用:</p><p> ?。?) 基本蟻群算法</p><p>  了解基

37、本蟻群算法的概念、原理以及代碼如何實現。</p><p> ?。?) 蟻群算法的優(yōu)化</p><p>  根據蟻群算法的基本原理做出優(yōu)化,避免蟻群算法的缺點,在迭代次數盡量少,迭代結果盡量趨近最優(yōu)解的情況下做出優(yōu)化。本文主要講解輪盤算法和max_min算法在蟻群算法中的優(yōu)化。</p><p>  (3) 蟻群算法在TSP問題中的應用</p><p

38、>  利用蟻群算法的特點以及蟻群算法的優(yōu)化應用到TSP問題中。</p><p>  1.4 開發(fā)環(huán)境與工具</p><p>  計算機:HP ProBook 4416S</p><p>  系統:Microft Windows XP</p><p>  Professinal</p><p><b>

39、  版本2002</b></p><p>  Service Pack3</p><p><b>  內存:2G</b></p><p><b>  開發(fā)語言:C++</b></p><p>  運行環(huán)境:Microsoft Visual C++ 6.0</p><p

40、>  1.5 論文的組織結構</p><p>  第一章 緒論 主要是講解本課題研究內容、目的和意義,國內外對蟻群算法的研究現狀以及本系統開發(fā)環(huán)境的介紹;</p><p>  第二章 蟻群算法 主要是介紹什么是蟻群算法,蟻群算法的原理和思想以及蟻群算法的優(yōu)缺點;</p><p>  第三章 改進的蟻群算法 主要是講解在基本蟻群算法的基礎上對蟻群算

41、法做出優(yōu)化(本文采用了輪盤選擇和MAX-MIN兩種優(yōu)化方式)</p><p>  第四章 蟻群算法在車輛路徑問題中的應用</p><p>  第五章 總結與展望</p><p><b>  第2章蟻群算法</b></p><p>  2.1 蟻群算法簡介</p><p>  蟻群算法(an

42、t colony optimization, ACO),又稱螞蟻算法,是一種用來在圖中尋找優(yōu)化路徑的機率型算法。它由Marco Dorigo于1992年在他的博士論文中提出,其靈感來源于螞蟻在尋找食物過程中發(fā)現路徑的行為。蟻群算法是一種模擬進化算法,初步的研究表明該算法具有許多優(yōu)良的性質。針對PID控制器參數優(yōu)化設計問題,將蟻群算法設計的結果與遺傳算法設計的結果進行了比較,數值仿真結果表明,蟻群算法具有一種新的模擬進化優(yōu)化方法的有效性和

43、應用價值。</p><p>  蟻群算法(Ant Clony Optimization, ACO)是一種群智能算法,它是由一群無智能或有輕微智能的個體(Agent)通過相互協作而表現出智能行為,從而為求解復雜問題提供了一個新的可能性。</p><p>  蟻群算法是一種仿生學算法,是由自然界中螞蟻覓食的行為而啟發(fā)的。在自然界中,螞蟻覓食過程中,蟻群總能夠按照尋找到一條從蟻巢和食物源的最優(yōu)路

44、徑。圖(1)顯示了這樣一個覓食的過程。</p><p><b>  圖(1)螞蟻覓食</b></p><p>  在圖1(a)中,有一群螞蟻,假如A是蟻巢,E是食物源(反之亦然)。這群螞蟻將沿著蟻巢和食物源之間的直線路徑行駛。假如在A和E之間突然出現了一個障 礙物(圖1(b)),那么,在B點(或D點)的螞蟻將要做出決策,到底是向左行駛還是向右行駛?由于一開始路上沒有前

45、面螞蟻留下的信息素 (pheromone),螞蟻朝著兩個方向行進的概率是相等的。但是當有螞蟻走過時,它將會在它行進的路上釋放出信息素,并且這種信息素會議一定的速率散 發(fā)掉。信息素是螞蟻之間交流的工具之一。它后面的螞蟻通過路上信息素的濃度,做出決策,往左還是往右。很明顯,沿著短邊的的路徑上信息素將會越來越濃(圖 1(c)),從而吸引了越來越多的螞蟻沿著這條路徑行駛。</p><p>  2.2 蟻群算法的原理&l

46、t;/p><p>  設想,如果我們要為螞蟻設計一個人工智能的程序,那么這個程序要多么復雜呢?首先,你要讓螞蟻能夠避開障礙物,就必 須根據適當的地形給它編進指令讓他們能夠巧妙的避開障礙物,其次,要讓螞蟻找到食物,就需要讓他們遍歷空間上的所有點;再次,如果要讓螞蟻找到最短的路 徑,那么需要計算所有可能的路徑并且比較它們的大小,而且更重要的是,你要小心翼翼的編程,因為程序的錯誤也許會讓你前功盡棄。這是多么不可思議的程序!

47、 太復雜了,恐怕沒人能夠完成這樣繁瑣冗余的程序。</p><p>  然而,事實并沒有你想得那么復雜,上面這個程序每個螞蟻的核心程序編碼不過100多行!為什么這么簡單的程序會讓螞 蟻干這樣復雜的事情?答案是:簡單規(guī)則的涌現。事實上,每只螞蟻并不是像我們想象的需要知道整個世界的信息,他們其實只關心很小范圍內的眼前信息,而且根 據這些局部信息利用幾條簡單的規(guī)則進行決策,這樣,在蟻群這個集體里,復雜性的行為就會凸現出來

48、。這就是人工生命、復雜性科學解釋的規(guī)律!那么,這些簡單規(guī)則是什么呢?</p><p>  2.2.1 螞蟻覓食規(guī)則</p><p>  在每只螞蟻能感知的范圍內尋找是否有食物,如果有就直接過去。否則看是否有信息素,并且比較在能感知的范圍內哪一點的信息素最多,這樣,它就朝信息素多的地 方走,并且每只螞蟻都會以小概率犯錯誤,從而并不是往信息素最多的點移動。螞蟻找窩的規(guī)則和上面一樣,只不過它對

49、窩的信息素做出反應,而對食物信息素沒反應。</p><p>  2.2.2 螞蟻移動規(guī)則</p><p>  每只螞蟻都朝向信息素最多的方向移,并且,當周圍沒有信息素指引的時候,螞蟻會按照自己原來運動的方向慣性的運動下去,并且,在運動的方向有一個隨機的小的擾動。為了防止螞蟻原地轉圈,它會記住剛才走過了哪些點,如果發(fā)現要走的下一點已經在之前走過了,它就會盡量避開。</p>&

50、lt;p>  2.2.3 螞蟻避障規(guī)則</p><p>  如果螞蟻要移動的方向有障礙物擋住,它會隨機的選擇另一個方向,并且有信息素指引的話,它會按照覓食的規(guī)則行為。</p><p>  2.2.4 螞蟻撒信息素規(guī)則</p><p>  每只螞蟻在剛找到食物或者窩的時候撒發(fā)的信息素最多,并隨著它走遠的距離,播撒的信息素越來越少。</p>&l

51、t;p>  根據這幾條規(guī)則,螞蟻之間并沒有直接的關系,但是每只螞蟻都和環(huán)境發(fā)生交互,而通過信息素這個紐帶,實際上把各個螞蟻之間關聯起來了。比如,當一只螞蟻找到了食物,它并沒有直接告訴其它螞蟻這兒有食物,而是向環(huán)境播撒信息素,當其它的螞蟻經過它附近的時候,就會感覺到信息素的存在,進而根據信息素的指引找到了食物。</p><p>  2.3 蟻群算法的特點及優(yōu)缺點</p><p>  

52、2.3.1 蟻群算法的特點</p><p> ?。?)蟻群算法是一種自組織的算法</p><p>  在系統論中,自組織和它組織是組織的兩個基本分類,其區(qū)別在于組織力或組織指令是來自于系統的內部還是來自于系統的外部,來自于系統內部的是自組織,來自于系統外部的是他組織。如果系統在獲得空間的、時間的或者功能結構的過程中,沒有外界的特定干預,我們便說系統是自組織的。在抽象意義上講,自組織就是在

53、沒有外界作用下使得系統熵增加的過程(即是系統從無序到有序的變化過程)。蟻群算法充分體現了這個過程,以螞蟻群體優(yōu)化為例子說明。當算法開始的初期,單個的人工螞蟻無序的尋找解,算法經過一段時間的演化,人工螞蟻間通過信息激素的作 用,自發(fā)的越來越趨向于尋找到接近最優(yōu)解的一些解,這就是一個無序到有序的過程。</p><p> ?。?)蟻群算法是一種本質上并行的算法</p><p>  每只螞蟻搜索的

54、過程彼此獨立,僅通過信息激素進行通信。所以蟻群算法則可以看作是一個分布式的多agent系統,它在問題空間的多點同時開始進行獨立的解搜索,不僅增加了算法的可靠性,也使得算法具有較強的全局搜索能力。</p><p> ?。?)蟻群算法是一種正反饋的算法</p><p>  從真實螞蟻的覓食過程中我們不難看出,螞蟻能夠最終找到最短路徑,直接依賴于最短 路徑上信息激素的堆積,而信息激素的堆積卻是一

55、個正反饋的過程。對蟻群算法來說,初始時刻在環(huán)境中存在完全相同的信息激素,給予系統一個微小擾動,使得各 個邊上的軌跡濃度不相同,螞蟻構造的解就存在了優(yōu)劣,算法采用的反饋方式是在較優(yōu)的解經過的路徑留下更多的信息激素,而更多的信息激素又吸引了更多的螞 蟻,這個正反饋的過程使得初始的不同得到不斷的擴大,同時又引導整個系統向最優(yōu)解的方向進化。因此,正反饋是螞蟻算法的重要特征,它使得算法演化過程得以進行。</p><p> 

56、 (4)蟻群算法具有較強的魯棒性</p><p>  相對于其它算法,蟻群算法對初始路線要求不高,即蟻群算法的求解結果不依賴子初始路線的選擇,而且在搜索過程中不需要進行人工的調整。其次,蟻群算法的參數數目少,設置簡單,易于蟻群算法應用到其它組合優(yōu)化問題的求解。</p><p>  2.3.2 蟻群算法的優(yōu)點</p><p>  蟻群算法的成果運用激起了人們的極大

57、興趣,并吸引了一批研究人員從事蟻群算法的研究。研究表明,蟻群算法是一種有效的隨機搜素算法,具有如下優(yōu)點:</p><p> ?。?)較強的魯棒性:無中心控制,不會由于某一個或者某幾個個體的故障而影響整個問題的求解;</p><p> ?。?)本質并行性:蟻群在問題空間的多點不同時開始進行獨立的解搜素,增強了算法的全局搜素能力;</p><p> ?。?)正反饋性:蟻

58、群算法能夠最終找到最短路徑,直接依賴于最短路徑上的信息素的堆積,而信息素的堆積就是一個正反饋的過程;</p><p> ?。?)易于與其他方法結合:蟻群算法很容易與多種啟發(fā)式算法結合,以改善算法的性能。</p><p> ?。?)自組織性:算法初期,單個的人工螞蟻無序地尋找解,經過一段時間的煙花,螞蟻間通過信息素的作用,自發(fā)地越來越趨向于尋找到接近最優(yōu)解的一些解,是個從無序到有序的過程;&

59、lt;/p><p>  2.3.3 蟻群算法的缺點</p><p>  雖然蟻群算法有許多優(yōu)點,但同時也存在一些缺陷,如:</p><p>  (1)與其他方法相比,該算法一般需要較長的搜索時間,計算量較大,蟻群算法的復雜度可以反映這一點;</p><p> ?。?)該方法容易出現停滯現象(stagnation behaviour),即搜索進

60、行到一定程度后,所有個體所發(fā)現的解完全一致,不能對解空間進一步進行搜索,不利于發(fā)現更好的解。</p><p>  2.5 蟻群算法的核心函數</p><p><b>  (1)初始化</b></p><p>  將所有城市設置為沒有去過,清空螞蟻走過的路徑編號(置0),螞蟻走過長度設置0,并隨機選取一個出發(fā)點,以及標識改點走過。</p&

61、gt;<p>  void CAnt::Init()</p><p><b>  {</b></p><p>  for (int i=0;i<N_CITY_COUNT;i++)</p><p><b>  {</b></p><p>  m_nAllowedCity[i]=1;

62、 //設置全部城市為沒有去過</p><p>  m_nPath[i]=0; //螞蟻走的路徑全部設置為0</p><p><b>  }</b></p><p>  //螞蟻走過的路徑長度設置為0</p><p>  m_dbPathLength=0.0; </p><p>  //隨機選擇一個

63、出發(fā)城市</p><p>  m_nCurCityNo=rnd(0,N_CITY_COUNT);</p><p><b>  //設置出發(fā)城市</b></p><p>  m_nPath[0]=m_nCurCityNo;</p><p>  //標識出發(fā)城市為已經去過了</p><p>  m_n

64、AllowedCity[m_nCurCityNo]=0; </p><p>  //已經去過的城市數量設置為1</p><p>  m_nMovedCityCount=1; </p><p><b>  }</b></p><p> ?。?)選擇下一個城市,返回城市編號</p><p>  int

65、 CAnt::ChooseNextCity()</p><p><b>  {</b></p><p>  int nSelectedCity=-1; //返回結果,先暫時把其設置為-1</p><p>  //計算當前城市和沒去過的城市之間的信息素總和</p><p>  double dbTotal=0.0;<

66、;/p><p>  double prob[N_CITY_COUNT]; // 保存城市被選中的概率</p><p>  for (int i=0;i<N_CITY_COUNT;i++)</p><p><b>  {</b></p><p>  if (m_nAllowedCity[i] == 1) //城市沒去過&

67、lt;/p><p><b>  {</b></p><p>  prob[i]=pow(g_Trial[m_nCurCityNo][i],ALPHA)*pow(1.0/g_Distance[m_nCurCityNo][i],BETA); //該城市和當前城市間的信息素</p><p>  dbTotal=dbTotal+prob[i]; //累加信

68、息素,得到總和</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  prob[i]=0.0;</p><p><b>  }</b><

69、;/p><p><b>  }</b></p><p>  //直接選擇概率最大的點</p><p>  double temp_max=-1;</p><p>  for(int ii=0;ii<N_CITY_COUNT;ii++){</p><p>  if(temp_max<prob

70、[ii]){</p><p>  temp_max=prob[ii];</p><p>  nSelectedCity=ii;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (nSelectedCity == -1

71、)</p><p><b>  {</b></p><p>  for (int i=0;i<N_CITY_COUNT;i++)</p><p><b>  {</b></p><p>  if (m_nAllowedCity[i] == 1) //城市沒去過</p><p

72、><b>  {</b></p><p>  nSelectedCity=i;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

73、<b>  }</b></p><p><b>  //返回結果</b></p><p>  return nSelectedCity;</p><p><b>  }</b></p><p> ?。?)更新環(huán)境信息素</p><p>  //更新環(huán)境信

74、息素,基本算法</p><p><b>  //*</b></p><p>  void CTsp::UpdateTrial()</p><p><b>  {</b></p><p><b>  //臨時保存信息素</b></p><p>  doub

75、le dbTempAry[N_CITY_COUNT][N_CITY_COUNT];</p><p>  memset(dbTempAry,0,sizeof(dbTempAry)); //先全部設置為0</p><p>  //計算新增加的信息素,保存到臨時數組里</p><p><b>  int m=0;</b></p><

76、;p><b>  int n=0;</b></p><p>  for (int i=0;i<N_ANT_COUNT;i++) //計算每只螞蟻留下的信息素</p><p><b>  {</b></p><p>  for (int j=1;j<N_CITY_COUNT;j++)</p>

77、<p><b>  {</b></p><p>  m=m_cAntAry[i].m_nPath[j];</p><p>  n=m_cAntAry[i].m_nPath[j-1];</p><p>  dbTempAry[n][m]=dbTempAry[n][m]+DBQ/m_cAntAry[i].m_dbPathLength;&l

78、t;/p><p>  dbTempAry[m][n]=dbTempAry[n][m];</p><p><b>  }</b></p><p>  //最后城市和開始城市之間的信息素</p><p>  n=m_cAntAry[i].m_nPath[0];</p><p>  dbTempAry[n]

79、[m]=dbTempAry[n][m]+DBQ/m_cAntAry[i].m_dbPathLength;</p><p>  dbTempAry[m][n]=dbTempAry[n][m];</p><p><b>  }</b></p><p><b>  //更新環(huán)境信息素</b></p><p&g

80、t;  for (i=0;i<N_CITY_COUNT;i++)</p><p><b>  {</b></p><p>  for (int j=0;j<N_CITY_COUNT;j++)</p><p><b>  {</b></p><p>  g_Trial[i][j]=g_Tr

81、ial[i][j]*ROU+dbTempAry[i][j]; //最新的環(huán)境信息素 = 留存的信息素 + 新留下的信息素</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

82、 ?。?)檢查終止條件</b></p><p>  如果達到最大迭代次數,算法終止,輸出最終最優(yōu)解;否則,執(zhí)行(5),輸出當前迭代最優(yōu)解,重新初始化所有的螞蟻的路徑矩陣所有元素初始化為0,禁忌表表清空,允許表表中加入所有的城市節(jié)點。隨機選擇它們的起始位置(也可以人工指定)。在路徑矩陣中加入起始節(jié)點,允許表中去掉該起始節(jié)點,重復執(zhí)行(2),(3),(4)步。</p><p>&l

83、t;b> ?。?)輸出最優(yōu)值</b></p><p>  每次迭代結束,輸出當前迭代編號以及本次迭代中最優(yōu)解螞蟻的路徑長度。</p><p>  2.6 蟻群算法的參數分析</p><p>  從蟻群算法的模型中可以看出,蟻群算法的參數空間龐大,合適的參數組合能夠過有全局收喲能力和較快的瘦臉術的,不合適的參數組合則會使得算法收斂較慢或者達到局部最

84、優(yōu)解。然而,目前對各參數該如何選擇也沒有嚴格的理論依據,只是根據經驗和實驗來選取合適的參數值?;诖?,國內外許多研究人員在蟻群算法的參數分析和優(yōu)化組合方面做了大量的工作。對、、、N_ANT_COUNT(N_ANT_COUNT,螞蟻數量)等參數的選擇進行了初步研究;</p><p>  2.6.1 螞蟻數量N_ANT_COUNT</p><p>  螞蟻算法是通過多個候選解組成的群體進化過程

85、來搜索最優(yōu)解,所以螞蟻的數目N_ANT_COUNT對一群算法有一定的影響。N_ANT_COUNT大,會提高蟻群算法的全局搜索能力和穩(wěn)定性,但數量過大會導致大量曾被搜索過的路徑上的信息素變化趨于平均,信息正反饋作用減弱,隨機性增強,收斂速度減慢。反之,N_ANT_COUNT小,會使從來未被搜索到的解上的信息素減小到接近于0,全局搜索的隨機性減弱,雖然收斂速度加快,但是會使算法的全局性能降低,穩(wěn)定性變差,出現過早停滯現象。經大量的仿真試驗獲

86、得:</p><p>  當N_ANT_COUNT屬于【0.6*N_CITY_COUNT,09*N_CITY_COUNT】時(N_CITY_COUNT為城市數量),蟻群算法的全局收斂性和收斂速度都比較好。</p><p>  2.6.2 啟發(fā)因子</p><p>  啟發(fā)銀子 是表示螞蟻在運動過程中所積累的信息素在知道蟻群搜索中的相對重要程度,其大小反映了螞蟻在路徑

87、搜索中隨機因素作用強弱。</p><p>  越大,螞蟻選擇以前走過的路徑可能性就越大,實現自催化過程,但搜索的隨機性減弱;</p><p>  越小,易使蟻群算法過早陷入局部最優(yōu)。</p><p>  而已有研究證明:對于小規(guī)模的TSP問題,在蟻群算法的三種模型中=1時,解的質量和穩(wěn)定性都是最好的。</p><p>  2.6.3 期望啟發(fā)

88、因子 </p><p>  期望啟發(fā)因子是表示能見度相對重要程度的參數。的大小反映了螞蟻在路徑搜索過程中確定性因素作用的強弱。</p><p>  而已有研究表明:過小,講導致螞蟻群體陷入純粹的隨機搜索,在此情況下很難找到最優(yōu)解;過大,螞蟻在局部點上選擇局部最短路徑的可能性越大,雖然加快了收斂速度,但減弱了隨機性,易陷入局部最優(yōu)。</p><p>  對于TSP問題

89、,不同城市規(guī)模,的具體取值各有不同。一般 【2,5,8】時,算法的綜合性比較好。</p><p>  2.6.4 信息素揮發(fā)度 </p><p>  在蟻群算法中,人工螞蟻是具有人類記憶功能的,隨著時間的推移,以前留下的信息將要逐漸消失。如前所述,在算法模型中,參數表示信息素揮發(fā)度,其大小直接關系到蟻群算法的全局搜索能力及其收斂速度;1-信息素殘留印子,反映了螞蟻個體之間相互影響的強弱

90、。研究表明:</p><p>  在其它參數相同的情況下,信息素揮發(fā)度的大小對一群算法的收斂性影響非常大,與循環(huán)次數近似成反比關系。當極小時,路徑上殘留信息占主導地位,信息正反饋作用相對較弱,手術的隨機性增強,因而蟻群算法的收斂速度很慢。若較大時,正反饋作用占主導地位,搜素的隨機性減弱,導致收斂速度快,但易陷入局部最優(yōu)狀態(tài)。對于TSP問題,不同的問題規(guī)模,的曲子也不盡相同。一般來說, 【0.1,0.5】時,性能的

91、算法較好。</p><p>  2.6.5 總信息量(DBQ)</p><p>  總信息量DBQ為螞蟻循環(huán)一周時釋放在所經路徑上的信息素總量,在基本一群算法中他是一個產量。一般的理解是:總信息量DBQ越大,則在螞蟻已經走過的路徑上信息素的累積越快,可以加強蟻群搜素時的正反饋性能,有助于算法的快速收斂。DBQ過小,則信息素濃度增長太慢,正反饋信息太少,使算法難以收斂。研究表明:</p

92、><p>  在蟻周模型中,由于TSP的規(guī)模不同,路徑長度各不相同,如果讀不通的TSP使用相同的DBQ值,則信息素總量更新尺度是不同的,最終修改信息素的程度存在很大不穩(wěn)定性。DBQ的取值應與說處理的TSP的規(guī)模相對應,確保信息素總量更新在可控制范圍內。在小規(guī)模TSP問題中,DBQ=100是大多數研究學者認為所公認的較好值。</p><p>  第3章改進的蟻群算法</p>&l

93、t;p> ?。?)采用輪盤賭選擇代替了基本框架中通過啟發(fā)式函數和信息素選擇路徑,改進蟻群算法的信息素傳遞參數,讓整個算法更快速的找到最優(yōu)解。</p><p> ?。?)最大最小優(yōu)化主要作了如下改進:</p><p>  A:每次迭代結束后,只有最優(yōu)解所屬路徑上的信息被更新,從而更好地利用了歷史信息;</p><p>  B:為了避免算法過早收斂于并非全局最優(yōu)的

94、解,將各條路徑可能的外激素濃度限制于【T_min,T_max】,超出這個范圍的值被強制設為T_min或者是T_max,可以有效的避免某條路徑上的信息量遠大于其余路徑,使得所有螞蟻都集中到同一條路徑上,從而使算法不再擴散;</p><p>  C:初始時刻,各條路徑上外激素的其實濃度設為T_max,在算法的初始時刻,P(0<p<1,信息素政法系數)取較小值時,算法有更好的發(fā)現較好解的能力。所有螞蟻完成一

95、次迭代后,按下式對路徑上的信息作全局更新:</p><p>  (t+1)=(1-) (t)+ (t), (0,1)</p><p><b>  = </b></p><p>  允許更新的路徑可以全局最優(yōu)解,或本次迭代的最優(yōu)解。實踐證明,逐漸增加全局最優(yōu)解的使用頻率,會使該算法獲得較好的性能。</p><p

96、>  3.1 輪盤賭選擇</p><p>  3.1.1 輪盤賭選擇基本思想</p><p>  個體被選中的概率與其適應度函數值成正比。設群體大小為n,個體i的適應度為Fi,則個體i被選中遺傳到下一代群體的概率為:</p><p><b>  = / </b></p><p>  3.1.2 輪盤賭選擇工作

97、過程</p><p>  設想群體全部個體的適當性分數由一張餅圖來代表 (見圖)。</p><p>  群體中每一染色體指定餅圖中一個小塊。塊的大小與染色體的適應性分數成比例,適應性分數愈高,它在餅圖中對應的小塊所占面積也愈大。為了選取一個染色體,要做的就是旋轉這個輪子,直到輪盤停止時,看指針停止在哪一塊上,就選中與它對應的那個染色體。</p><p><b&

98、gt;  舉例:</b></p><p>  輪盤賭選擇法的選擇概率計算表</p><p>  若產生隨機數為0.81,則6號個體被選中。</p><p><b>  實現代碼:</b></p><p>  //*//輪盤選擇,選擇第一個大于隨機數的點</p><p>  double

99、 dbTemp=0.0;</p><p>  if (dbTotal > 0.0) //總的信息素值大于0</p><p><b>  {</b></p><p>  dbTemp=rnd(0.0,dbTotal); //取一個隨機數</p><p>  for (int i=0;i<N_CITY_COUNT

100、;i++)</p><p><b>  {</b></p><p>  if (m_nAllowedCity[i] == 1) //城市沒去過</p><p><b>  {</b></p><p>  dbTemp=dbTemp-prob[i]; //這個操作相當于轉動輪盤</p>

101、<p>  if (dbTemp < 0.0) //輪盤停止轉動,記下城市編號,直接跳出循環(huán)</p><p><b>  {</b></p><p>  nSelectedCity=i;</p><p><b>  break;</b></p><p><b>  }<

102、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  3.2 MAX_MIN ACO</p><p>  3.2.1 MAX_MIN算法的框架結

103、構</p><p>  Max-Min算法非常類似于Min-Min算法。同樣要計算每一任務在任一可用機器上的最早完成時間,不同的是Max-Min算法改進了信息素更新策略,增加了限制條件:</p><p><b> ?。?)信息素更新</b></p><p>  在蟻群算法中,對所有螞蟻走過的路徑都進行信息素更新;而在MAX_MIN螞蟻算法中,只

104、對在當前循環(huán)中找到最優(yōu)解或是自實驗以來找到的最優(yōu)解的螞蟻進行信息素更新,更新公式為:</p><p>  = (a)</p><p>  = (b)</p><p>  在公式(a)(b)中, 表示迭代最優(yōu)解或全局最優(yōu)解。在本文的所講解的內容,所采用的是每次迭代的全局最優(yōu)解。</p><p> ?。?)信息素

105、大小的限制</p><p>  在每個解元素上的信息被限定在一個區(qū)間( , )內,在更新信息素的時候,信息素的量如果超過了這個范圍,就要做相應的限制:</p><p>  如果 >= ,,則設置 = ;</p><p>  如果 <= ,則設置 = ;</p><p>  和 的值可以分別由以下公式得到:</p>

106、<p><b>  = </b></p><p>  其中: 是得到的最優(yōu)解路徑長度。</p><p>  螞蟻完成一次搜索,即為一次迭代。設迭代次數為n<=2時,取 = /20;當迭代次數n>2時,則由以下公式來計算:</p><p><b>  = </b></p><p&

107、gt;  式中 =n/2, =0.5</p><p>  (3)信息素初始值設為 </p><p>  3.2.2 MAX_MIN 算法流程圖</p><p>  MAX_MIN改進算法與基本的蟻群算法的其他地方一致,僅僅是更新信息素的策略不同,以下是MAX_MIN更新信息素的函數流程圖:</p><p><b>  是<

108、/b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p>  第4章蟻群算法在車輛路徑問題中的應用</p><p>  4.1 車輛路徑問題簡介</p&g

109、t;<p>  4.1.1 車輛路徑問題定義</p><p>  車輛路徑問題(VRP)是Dantzig和Ramser于1959年提出的,它是指一定數量的客戶,各自有不同數量的貨物需求,配送中心向客戶提供貨物,由一個車隊負責分送貨物,組織適當的行車路線,目標是使得客戶的需求得到滿足,并能在一定的約束下,達到諸如路程最短、成本最小、耗費時間最少等目的。</p><p>  車

110、輛路線問題自1959年提出以來,一直是網絡優(yōu)化問題中最基本的問題之一,由于其應用的廣泛性和經濟上的重大價值,一直受到國內外學者的廣泛關注。車輛路線問題可以描述如下(如圖): </p><p><b>  VRP示意圖</b></p><p>  設有一場站(depot),共有M 輛貨車,車輛容量為Q,有N位顧客(customer),每位顧客有其需求量D。車輛從場站出發(fā)

111、對客戶進行配送服務最后返回場站,要求所有顧客都被配送,每位顧客一次配送完成,且不能違反車輛容量的限制,目的是所有車輛路線的總距離最小。車輛路線的實際問題包括配送中心配送、公共汽車路線制定、信件和報紙投遞、航空和鐵路時間表安排、工業(yè)廢品收集等。</p><p>  4.1.2 車輛路徑問題分類</p><p>  根據研究的重點不同,VRP存在多種分類方式:</p><p

112、> ?。╝)按一直信息的特征,可分為確定性VRP和不確定性VRP,其中不確定性VRP可進一步分為隨機車輛路徑問題(SVRP)和模糊車輛路徑(PVRP);</p><p> ?。╞)按約束條件,可以分為帶有容量限制的車輛路徑問題(CVRP),帶有時間距離約束的車輛路徑問題(DVRP)以及帶有時間窗的車輛路徑問題(VRPTW);</p><p> ?。╟)按需求是否可以分割,可以分為可分

113、割的車輛路徑問題和不可分割的車輛路徑問題;</p><p> ?。╠)按每個顧客需求量是否超過車的容量來分,可以分為滿載車輛路徑和非滿載車輛路徑問題;</p><p> ?。╡)按配送中心的多少來分可以分為但車場車輛路徑問題(SVRP)。即一般車輛路徑問題(VRP),以及多車場車輛路徑問題(MVRP),其中MVRP又可以根據是否每輛車都有固定的重點車場分為重點車場固定的車輛路徑問題和重點車

114、場不固定的開放式車輛路徑問題(OVRP);按優(yōu)化目標分,又可以分為單目標問題和多目標問題;按路由過程中相關信息是否改變,又可以分為動態(tài)VRP和靜態(tài)VRP。</p><p>  4.2 車輛路徑問題的求解算法</p><p>  由于情況不同,VRP數學模型夠早及求解算法也有較大的差別。目前有關VRP模型的研究已經取得了較大的成果。綜合過去的相關研究,VRP模型基本可以分為圖模型、數學模型

115、和仿真模型。VRP的求解算法非常豐富,基本可以分為緊缺算法和iq法師算法兩大類。求解VRP的啟發(fā)式算法有不同的分類方法。</p><p>  4.2.1 精確算法</p><p>  精確算法指可求出最優(yōu)解的算法。到目前為止,已提出的精確算法種類較多,有分支定界法、割平面法、整數規(guī)劃算法和動態(tài)規(guī)劃算法等。</p><p>  另外,還有的認為精確算法指股東認購配

116、股,可認購數量不足1股的部分按照精確算法原則處理。即先按照配售比例和每個賬戶股數計算出可認購數量 的整數部分;對于計算出不足1股的部分(尾數保留三位小數),將所有賬戶按照尾數從大到小的順序進位(尾數相同則隨機排序),直至每個賬戶獲得的可配股數 量加總與可配售總量一致。</p><p>  另外關于精確算法原則取整,其實舉個例子就明白了: </p><p>  假設有共有100手債券發(fā)行,四

117、個人認購 :</p><p>  第1人認購25.8手,第2人認購25.6手,第3人認購25.4手,第4人認購25.2手 ,結果是每人25手。 </p><p>  再假設有共有101手債券發(fā)行,四個人認購 :</p><p>  第1人認購25.8手,第2人認購25.6手,第3人認購25.4手,第4人認購25.2手,結果是第1人26手,其他人25手。 </p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論