<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          蟻群算法詳解

          共 2687字,需瀏覽 6分鐘

           ·

          2020-09-23 12:04


          沒有中心化的組織,蟻群何以進(jìn)行高效地搜尋呢?一個(gè)快遞小哥有5個(gè)包裹要送,如何確定一條最短的行進(jìn)路線?

          本文我們一起學(xué)下常用于路徑優(yōu)化的蟻群算法,主要內(nèi)容如下:

          • 蟻群算法簡介
          • 蟻群算法原理
          • 蟻群算法實(shí)例

          1.蟻群算法簡介

          如何尋找一條合適的路徑,幾乎是一個(gè)永恒的話題。每個(gè)人、每天都會(huì)遇到。大到全國列車的運(yùn)行規(guī)劃,小到每個(gè)人的手機(jī)導(dǎo)航。其中一部分是關(guān)于“如何尋找兩個(gè)位置間的最短距離”的,這一部分有較為成熟的理論與確切的解法,還有與之匹配的各種算法。

          蟻群系統(tǒng)(Ant System(AS)Ant Colony System(ACS))是由意大利學(xué)者Dorigo、Maniezzo等人于20世紀(jì)90年代首先提出來的。他們?cè)谘芯课浵佉捠车倪^程中,發(fā)現(xiàn)蟻群整體會(huì)體現(xiàn)一些智能的行為,例如蟻群可以在不同的環(huán)境下,尋找最短到達(dá)食物源的路徑。

          后經(jīng)進(jìn)一步研究發(fā)現(xiàn),這是因?yàn)槲浵仌?huì)在其經(jīng)過的路徑上釋放一種可以稱之為“信息素(pheromone)”的物質(zhì),蟻群內(nèi)的螞蟻對(duì)“信息素”具有感知能力,它們會(huì)沿著“信息素”濃度較高路徑行走,而每只路過的螞蟻都會(huì)在路上留下“信息素”,這就形成一種類似正反饋的機(jī)制,這樣經(jīng)過一段時(shí)間后,整個(gè)蟻群就會(huì)沿著最短路徑到達(dá)食物源了。

          由上述螞蟻找食物模式演變來的算法,即是蟻群算法。這種算法具有分布計(jì)算、信息正反饋和啟發(fā)式搜索的特征,本質(zhì)上是進(jìn)化算法中的一種啟發(fā)式全局優(yōu)化算法。在數(shù)字時(shí)代背景下,蟻群算法在網(wǎng)絡(luò)路由中的應(yīng)用受到越來越多學(xué)者的關(guān)注,并提出了一些新的基于螞蟻算法的路由算法。

          同傳統(tǒng)的路由算法相比較,該算法在網(wǎng)絡(luò)路由中具有信息分布式性、動(dòng)態(tài)性、隨機(jī)性和異步性等特點(diǎn),而這些特點(diǎn)正好能滿足網(wǎng)絡(luò)路由的需要。

          2.蟻群算法原理

          蟻群算法是從自然界中真實(shí)螞蟻覓食的群體行為得到啟發(fā)而提出的,其很多觀點(diǎn)都來源于真實(shí)蟻群,因此算法中所定義的人工螞蟻與真實(shí)螞蟻存在一定的辯證關(guān)系。

          自組織行為特征

          蟻群的自組織行為特征主要有:

          • 高度結(jié)構(gòu)化的組織
            雖然螞蟻的個(gè)體行為極其簡單,但由個(gè)體組成的蟻群卻構(gòu)成高度結(jié)構(gòu)化的社會(huì)組織,螞蟻社會(huì)的成員有分工,有相互的通信和信息傳遞。

          • 自然優(yōu)化
            蟻群在覓食過程中,在沒有任何提示下總能找到從蟻巢到食物源之間的最短路徑;當(dāng)經(jīng)過的路線上出現(xiàn)障礙物時(shí),還能迅速找到新的最優(yōu)路徑。

          • 信息正反饋
            螞蟻在尋找食物時(shí),在其經(jīng)過的路徑上釋放信息素(外激素)。螞蟻基本沒有視覺,但能在小范圍內(nèi)察覺同類散發(fā)的信息素的軌跡,由此來決定何去何從,并傾向于朝著信息素強(qiáng)度高的方向移動(dòng)。

          • 自催化行為
            某條路徑上走過的螞蟻越多,留下的信息素也越多(隨時(shí)間蒸發(fā)一部分),后來螞蟻選擇該路徑的概率也越高。

          算法基本思想

          1. 根據(jù)具體問題設(shè)置多只螞蟻,分頭并行搜索。
          2. 每只螞蟻完成一次周游后,在行進(jìn)的路上釋放信息素,信息素量與解的質(zhì)量成正比。
          3. 螞蟻路徑的選擇根據(jù)信息素強(qiáng)度大?。ǔ跏夹畔⑺亓吭O(shè)為相等),同時(shí)考慮兩點(diǎn)之間的距離,采用隨機(jī)的局部搜索策略。這使得距離較短的邊,其上的信息素量較大,后來的螞蟻選擇該邊的概率也較大。
          4. 每只螞蟻只能走合法路線(經(jīng)過每個(gè)城市1次且僅1次),為此設(shè)置禁忌表來控制。
          5. 所有螞蟻都搜索完一次就是迭代一次,每迭代一次就對(duì)所有的邊做一次信息素更新,原來的螞蟻死掉,新的螞蟻進(jìn)行新一輪搜索。
          6. 更新信息素包括原有信息素的蒸發(fā)和經(jīng)過的路徑上信息素的增加。
          7. 達(dá)到預(yù)定的迭代步數(shù),或出現(xiàn)停滯現(xiàn)象(所有螞蟻都選擇同樣的路徑,解不再變化),則算法結(jié)束,以當(dāng)前最優(yōu)解作為問題的最優(yōu)解。

          了解了基本思想,我們來關(guān)注幾個(gè)必須得知道的問題:上述第2步中,螞蟻完成一次周游后各路徑上的信息素怎么計(jì)算?計(jì)算公式如下:

          其中,為邊上的信息素量,剛開始時(shí),為本次迭代邊上的信息素增量,為第k只螞蟻在本次迭代中留在邊上的信息素量,為信息素?fù)]發(fā)系數(shù)。Q是正常數(shù),m是螞蟻數(shù)量,n是城市數(shù)量,為螞蟻k在本次周游中所走路徑的長度。

          第三步中螞蟻的轉(zhuǎn)移概率計(jì)算公式如下:

          其中為信息素的相對(duì)重要程度,為啟發(fā)式因子的相對(duì)重要程度,而是螞蟻k下一步允許選擇的城市集合。
          為啟發(fā)式因子,反應(yīng)螞蟻由城市i轉(zhuǎn)移到城市j的啟發(fā)程度,為城市之間的距離。

          算法步驟

          我們了解了信息素計(jì)算公式和螞蟻的轉(zhuǎn)移概率之后,看下具體流程圖如下:

          1. 初始化參數(shù):開始時(shí),每條邊的信息素量都相等,即:,.
          2. 將各只螞蟻放置各頂點(diǎn),禁忌表為對(duì)應(yīng)的頂點(diǎn)。
          3. 1只螞蟻,計(jì)算轉(zhuǎn)移概率,按照輪盤賭的方式選擇下一個(gè)頂點(diǎn),更新禁忌表,再計(jì)算概率,再選擇頂點(diǎn),再更新禁忌表,直至遍歷所有頂點(diǎn)一次。
          4. 計(jì)算該只螞蟻留在各邊的信息素量,該螞蟻死去。
          5. 重復(fù)3-4步,直至m只螞蟻都周游完畢。
          6. 計(jì)算各邊的信息素增量和信息素量。
          7. 計(jì)算本次迭代的路徑,更新當(dāng)前的最優(yōu)路徑,清空禁忌表。
          8. 判斷是否達(dá)到預(yù)定的迭代步數(shù),或者是否出現(xiàn)停滯現(xiàn)象,若是則算法結(jié)束,輸出當(dāng)前最優(yōu)路徑,否則轉(zhuǎn)到步驟2,進(jìn)行下一次迭代。

          算法特點(diǎn)

          與其他優(yōu)化算法相比,蟻群算法具有以下幾個(gè)特點(diǎn):

          • 采用正反饋機(jī)制,使得搜索過程不斷收斂,最終逼近最優(yōu)解。
          • 每個(gè)個(gè)體可以通過釋放信息素來改變周圍的環(huán)境,且每個(gè)個(gè)體能夠感知周圍環(huán)境的實(shí)時(shí)變化,個(gè)體間通過環(huán)境進(jìn)行間接地通訊。
          • 搜索過程采用分布式計(jì)算方式,多個(gè)個(gè)體同時(shí)進(jìn)行并行計(jì)算,大大提高了算法的計(jì)算能力和運(yùn)行效率。
          • 啟發(fā)式的概率搜索方式不容易陷入局部最優(yōu),易于尋找到全局最優(yōu)解。

          3.蟻群算法實(shí)例

          該算法應(yīng)用于其他組合優(yōu)化問題,如旅行商問題、指派問題、Job—shop調(diào)度問題、車輛路由問題、圖著色問題和網(wǎng)絡(luò)路由問題等。

          知道了上面的算法原理,我們來看下開頭的那個(gè)問題,一個(gè)快遞小哥有5個(gè)包裹要送,如何確定一條最短的行進(jìn)路線?

          假設(shè)由于某種原因,城市道路均是單行道,即A->BB->A的距離不相同,也就是說這是一個(gè)不對(duì)稱的TSP問題?,F(xiàn)在城市距離信息如下表:

          設(shè)置參數(shù):,為禁忌表,那么第一次迭代第一只螞蟻周游如下:

          第一次迭代第二只螞蟻周游如下:

          依次類推,第一次迭代完成之后,我們得到信息素矩陣如下:

          接著進(jìn)行第二次迭代,第二次迭代第一只螞蟻周游如下:

          依次類推,發(fā)現(xiàn)第二次迭代的時(shí)候,假如五只螞蟻?zhàn)叩氖峭粭l路,那么算法收斂結(jié)束。最優(yōu)路徑為A->E->D->C->B->A,最優(yōu)路徑的距離為9.

          至此,我們從蟻群算法的簡介,原理以及實(shí)例方面對(duì)蟻群算法進(jìn)行了詳細(xì)的闡述,希望對(duì)大家有所幫助。

          ?點(diǎn)個(gè)贊再走唄?

          瀏覽 168
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷综合网站 | 影音先锋av伦理 影音先锋成人A片 | 日韩三级中文字幕电影在线 | 青青草原视频在线 | 麻豆美女操逼 |