日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

人工鱼群算法解决TSP问题

發(fā)布時(shí)間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人工鱼群算法解决TSP问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、問題詳述

旅行商問題,是數(shù)學(xué)領(lǐng)域中著名問題之一,被證明具有NPC計(jì)算復(fù)雜性。該問題假設(shè)有一個(gè)旅行商人要拜訪N個(gè)城市,他必須選擇所要走的路徑,路徑的限制是每個(gè)城市只能拜訪一次,而且最后要回到原來出發(fā)的城市。路徑的選擇目標(biāo)是要求得的路徑路程為所有路徑之中的最小值。

二、人工魚群算法原理描述

2.1人工魚群算法原理

人工魚群算法(artificial fish-swarm algorithm,AFSA)是一種基于魚群的群智能優(yōu)化算法,群智能指的使“無智能的主體通過合作表現(xiàn)出智能行為的特征”,是一種基于生物群體行為規(guī)律的計(jì)算技術(shù),用來解決分布式問題。人工魚群算法的基本思想是仿照魚群在一片水域當(dāng)中尋找最優(yōu)解的覓食、聚群和追尾等行為,水域中的每一條魚都對(duì)應(yīng)其中的一個(gè)優(yōu)化解,該水域即為被優(yōu)化問題的解空間。通過分析人工魚群的優(yōu)化理念,可得其人工魚群環(huán)境模型。假設(shè)水域中一條魚現(xiàn)時(shí)狀態(tài)是X,其可見范圍為Visual(公式中用Zvisual表示),在某一時(shí)間點(diǎn)對(duì)應(yīng)的視點(diǎn)位置為X k,如果該方位較此時(shí)狀態(tài)更優(yōu),則可往該地點(diǎn)處向前一步,即抵達(dá)X next;若該方位無此時(shí)狀態(tài)更優(yōu),則一直在可見視線內(nèi)找尋其他較優(yōu)地點(diǎn)。

2.2人工魚群算法步驟

1)初始化設(shè)置。對(duì)魚群中的各個(gè)參數(shù)進(jìn)行初始設(shè)置,包括:該人工魚群的群體規(guī)模、視野、最大迭代次數(shù)、每一條魚的最大移動(dòng)步長(zhǎng)Step(公式中用Lstep)等參數(shù)。

2)此時(shí)迭代的次數(shù)是0,由N條魚組成初始魚群,每個(gè)魚表示從初始位置到目標(biāo)位置的一條路徑。

3)對(duì)每一條人工魚都進(jìn)行行為模擬:覓食、追尾、聚群與隨機(jī)移動(dòng)行為,選取其中最優(yōu)的一種行為來操作。

4)聚群行為:魚在游動(dòng)過程中為了保證自身的生存和躲避危害會(huì)自然地聚集成群。人工魚X i X_iXi搜索其視野內(nèi)的伙伴數(shù)目及中心位置,若Y c / n f < δ Y i Y_c/n_f< δY_iYc/nf<δYi,表明伙伴中心位置狀態(tài)較優(yōu)且不太擁擠,則X i X_iXi朝伙伴的中心位置移動(dòng)一步,否則執(zhí)行覓食行為;

5)追尾行為:指魚向其視野區(qū)域內(nèi)的最優(yōu)方向移動(dòng)的一種行為。人工魚X i X_iXi搜索其視野內(nèi)(d i j < v i s u a l d_{ij}<visualdij<visual)適應(yīng)度最高的個(gè)體X j X_jXj,其適應(yīng)度值為Y j Y_jYj,并探索人工魚X j X_jXj視野內(nèi)的伙伴數(shù)目n f n_fnf,若Y j / n f < δ Y i Y_j/n_f< δY_iYj/nf<δYi,表明X j X_jXj狀態(tài)較優(yōu)且不太擁擠,則X i X_iXi朝X j X_jXj位置移動(dòng)一步,否則執(zhí)行覓食行為;

6)綜上,算法在運(yùn)算過程中,會(huì)同時(shí)進(jìn)行聚群和追尾行為。而覓食行為屬于這兩種行為中發(fā)現(xiàn)聚群對(duì)象或者追尾對(duì)象附近擁擠度過大時(shí),人工魚選擇的行為方式,若在覓食過程中,未發(fā)現(xiàn)比自身適應(yīng)度高的人工魚,則按步長(zhǎng)step隨機(jī)移動(dòng)。最后對(duì)聚群行為和追尾行為得到的適應(yīng)度值進(jìn)行比較,選擇優(yōu)秀的人工魚作為下一代的個(gè)體。

圖1 人工魚群算法流程圖

三、重要參數(shù)分析

1)魚群規(guī)模:人工魚群算法的實(shí)現(xiàn)是建立在大量的人工魚基礎(chǔ)之上,人工魚的總數(shù)增多,促使收斂的速度和精度有明顯提高,并減少陷入局部最優(yōu)解的可能性。但是,人工魚的數(shù)量過多會(huì)導(dǎo)致計(jì)算量劇增,算法運(yùn)行時(shí)耗時(shí)過大。因此,在具體優(yōu)化應(yīng)用中,應(yīng)適當(dāng)?shù)卦O(shè)置人工魚的數(shù)目。

2)視野visual:人工魚群的聚群、追尾、覓食、隨機(jī)行為都是在視野內(nèi)執(zhí)行的,所以參數(shù)視野的設(shè)置對(duì)算法的效果有著很大影響。根據(jù)經(jīng)驗(yàn)判斷,當(dāng)視野范圍較小時(shí)往往更加突出覓食行為和隨機(jī)行為在算法中的作用,人工魚在較小的視野范圍有更強(qiáng)的搜索能力,而在一定程度上限制了聚群行為和追尾行為的作用;在視野較大時(shí),算法更加突出了聚群行為和追尾行為的作用,一定程度上減少覓食行為和隨機(jī)行為的發(fā)生。通常,視野越大,人工魚在發(fā)現(xiàn)全局極值的能力和收斂的能力越突出。

3)步長(zhǎng)step:在一定范圍內(nèi),步長(zhǎng)越大收斂速度越快,步長(zhǎng)越小收斂速度越慢。但是,當(dāng)步長(zhǎng)過大超出范圍后,收斂的速度會(huì)明顯下降,甚至?xí)谷斯~在局部極值點(diǎn)來回震蕩,從而降低速度和收斂精度。當(dāng)設(shè)置較小的步長(zhǎng)時(shí),收斂速度會(huì)下降,而算法的收斂精度會(huì)提高。

4)嘗試次數(shù)try_number:經(jīng)研究,人工魚在執(zhí)行覓食行為時(shí),嘗試次數(shù)對(duì)執(zhí)行效果的影響是十分重要的,隨著嘗試次數(shù)增大,人工魚覓食行為的能力越強(qiáng),收斂的效率越高,但是嘗試次數(shù)的增多會(huì)降低人工魚避開局部極值的能力,從而不能收斂全局極值點(diǎn)。所以,較大的嘗試次數(shù),更為突出覓食行為,加快收斂速度,但容易陷入局部極值;較小的嘗試次數(shù),更為突出隨機(jī)行為,降低收斂速度,避免陷入局部極值。在解決一些局部極值不是很突出的問題上,可以增加嘗試次數(shù)提高收斂的效率。

5)擁擠度δ:在聚群行為和追尾行為中引入擁擠度算子δ是為了避免人工魚過度聚集在局部極值點(diǎn)。

四、算法改進(jìn)思路

4.1算法參數(shù)的改進(jìn)

人工魚群算法中的參數(shù)較多,其中有人工魚群的個(gè)體數(shù)目N,擁擠度因子δ,視野和步長(zhǎng),前面兩個(gè)參數(shù)通??梢圆捎脭?shù)值實(shí)驗(yàn)的方法來確定它的大致范圍.后兩個(gè)參數(shù)直接影響人工魚運(yùn)行的軌跡,因此對(duì)算法的效果有著更直接的影響,對(duì)于這兩個(gè)參數(shù)的選擇研究得更多一些。

1)基于視野的改進(jìn)
???? ?由于視野對(duì)算法中各行為都有較大的影響,因此,它的變化對(duì)收斂性能的影響也是比較復(fù)雜的。當(dāng)視野范圍較小時(shí),人工魚群的覓食行為和隨機(jī)游動(dòng)比較突出;視野范圍較大時(shí),人工魚的追尾行為和聚群行為將變得較突出。總體來看,視野越大,越容易使人工魚發(fā)現(xiàn)全局極值并收斂。因此對(duì)人工魚的視野進(jìn)行適當(dāng)?shù)母倪M(jìn),是提高人工魚群算法優(yōu)化性能的一種方法。
???? ??魚群的覓食行為在解決離散型優(yōu)化問題時(shí)有很重要的作用。在魚群覓食的過程中,其視野范圍是固定不變的。當(dāng)人工魚逐漸逼近最優(yōu)解時(shí),X僅僅有一個(gè)或兩個(gè)變量不同于最優(yōu)解,因此人工魚在最優(yōu)解附近以原始的視野進(jìn)行覓食是盲目的,這種情況將增加算法的計(jì)算復(fù)雜性。另外,收斂速度的快慢和最后尋優(yōu)結(jié)果的質(zhì)量都依靠視野值。如果視野范圍太大,收斂速度將很慢;另一方面,如果視野范圍太小,人工魚群算法可能導(dǎo)致陷入局部最優(yōu)解。為了克服這些缺點(diǎn),可選用如下的改進(jìn)策略:在人工魚群算法的初始階段,每條人工魚以一個(gè)大的視野尋找解,這樣能擴(kuò)大尋優(yōu)的范圍。隨著算法的運(yùn)行,魚群的視野范圍將適當(dāng)?shù)臏p小以加快收斂的速度。

2)基于步長(zhǎng)的改進(jìn)
????在人工魚群算法中,人工魚個(gè)體的三個(gè)行為:覓食、聚群和追尾都依賴于一定的可視域和步長(zhǎng)范圍。為了進(jìn)一步提高人工魚群算法的尋優(yōu)能力,一方面可以通過改進(jìn)視野范圍來施行:另一方面,也可以通過改進(jìn)步長(zhǎng)范圍對(duì)原有算法進(jìn)行了改進(jìn)?;舅悸肪褪菍⑷斯~群算法的實(shí)際步長(zhǎng)改為參數(shù)定義域內(nèi)的隨機(jī)數(shù),以保證更好的全局搜索能力。

4.2覓食行為優(yōu)化

正弦余弦算法 ( sine and cosine algoritm,SCA)是由Mirjalili教授提出的一種新型群體智能優(yōu)化算法,依靠正弦函數(shù)和余弦函數(shù)具有周期性和波動(dòng)性的特點(diǎn)保證魚群個(gè)體具有“全局搜索” 和“局部開發(fā)”的特點(diǎn),在保證算法在大范圍內(nèi)進(jìn)行結(jié)果更新的全面性,同時(shí)在局部范圍內(nèi)能夠有效的避免算法陷入局部最優(yōu)的問題,其表達(dá)式如式(1 )

(1)

( 1) 式中,xt+1 i 表示當(dāng)前種群中的個(gè)體 i 在使用更新 方式之后在第 t + 1 次循環(huán)更新后的位置,xti 和 xtk 分 別表示種群中的任意 2 個(gè)個(gè)體 i,k 在第 t 次循環(huán)更 新時(shí)的具體位置,r1,r2,r3 和 r4 為搜索方向、搜素距離、隨機(jī)選擇和正余弦切換的 4 個(gè)控制參數(shù)。其中r1 = a - a × t/ tmax ( tmax 為最大迭代次數(shù),t 為迭代次數(shù),a 為常數(shù)值) ,r2 ~ U[0,2π],r3 ∈ ( 0,+ ∞ ) ,r4 控 制這正弦余弦的更新切換且 r4 ~ U[0,1]正弦余弦 優(yōu)化策略的嵌入。通過這樣的處理方式一定程度上 能夠彌補(bǔ)個(gè)體在位置更新時(shí)候出現(xiàn)的缺陷,通過正 弦機(jī)制或者余弦機(jī)制,能夠使得個(gè)體魚群個(gè)體與食 物源進(jìn)行交流,促進(jìn)位置信息的共享,使得魚群個(gè)體向著位置更好的前進(jìn),促進(jìn)個(gè)體向著最優(yōu)解移動(dòng); 同 時(shí),無論正弦還是余弦機(jī)制都能夠進(jìn)行相互的彌補(bǔ),正弦算法減少個(gè)體陷入局部最優(yōu),余弦算法提高探 索能力,加快算法收斂。

五、系統(tǒng)方案設(shè)計(jì)

5.1 功能分析

此次課程設(shè)計(jì)旨在使用人工魚群優(yōu)化算法解決旅行商問題,求解最優(yōu)化路線。此方案通過人工魚群算法及其優(yōu)化算法來求解最優(yōu)化路線,交互界面可輸入初始參數(shù)等。

5.2?總體方案設(shè)計(jì)

1)初始化設(shè)置,包括種群規(guī)模、每條人工魚的初始位置、人工魚的視野、步長(zhǎng)、擁擠度因子、重復(fù)次數(shù);

2) 計(jì)算初始魚群各個(gè)體的適應(yīng)值,取最優(yōu)人工魚狀態(tài)及其值賦予給公告牌;

3)對(duì)每個(gè)個(gè)體進(jìn)行評(píng)價(jià),對(duì)其要執(zhí)行的行為進(jìn)行選擇,包括覓食、聚群、追尾和隨機(jī)行為;

4)執(zhí)行人工魚的行為,更新自己,生成新魚群;

5)評(píng)價(jià)所有個(gè)體。若某個(gè)體優(yōu)于公告牌,則將公告牌更新為該個(gè)體;

6)當(dāng)公告牌上最優(yōu)解達(dá)到滿意誤差界內(nèi)或者達(dá)到迭代次數(shù)上限時(shí)算法結(jié)束,

否則轉(zhuǎn)步驟3。

6圖2 總體方案結(jié)構(gòu)圖

5.3?GUI界面設(shè)計(jì)

5.3.1登錄界面設(shè)計(jì)

系統(tǒng)登錄界面為人機(jī)交互界面的第一部分,用戶需輸入用戶名和密碼方可登錄操作界面。

圖3 人工魚群算法登錄界面

5.3.2系統(tǒng)界面設(shè)計(jì)

圖4所示的GUI界面包括:參數(shù)設(shè)置版塊、運(yùn)行狀態(tài)顯示版塊、路線圖與迭代圖版塊以及開始與退出。參數(shù)設(shè)置版塊可對(duì)人工魚群算法的各種參數(shù)進(jìn)行修改;運(yùn)行狀態(tài)顯示版塊可顯示此次算法的運(yùn)行時(shí)間、最短路徑以及最短距離;路線圖與迭代圖版塊可顯示此次算法運(yùn)行后的城市路線圖與迭代曲線圖。

圖4 人工魚群算法可視化界面

六、實(shí)現(xiàn)結(jié)果及分析

6.1初始化環(huán)境數(shù)據(jù)

  • 步長(zhǎng):step = 0.2
  • 視野:visual = 1
  • 魚群數(shù)目:fishCluster = 50
  • 擁擠度因子:crowdFac = 0.3
  • 最優(yōu)解搜索次數(shù):tryNumber = 100
  • 6.2初始算法運(yùn)行結(jié)果統(tǒng)計(jì)數(shù)據(jù)

    表 2?10次獨(dú)立實(shí)驗(yàn)的運(yùn)行結(jié)果統(tǒng)計(jì)(距離:米)

    第1次

    第2次

    第3次

    第4次

    第5次

    AFSA

    34830

    34258

    34607

    34663

    33976

    第6次

    第7次

    第8次

    第9次

    第10次

    AFSA

    33465

    34258

    34513

    34418

    34642

    表 3實(shí)驗(yàn)運(yùn)行結(jié)果的統(tǒng)計(jì)(距離:米)

    AFSA算法

    Max

    Min

    Mean

    Var

    距離

    34830

    33465

    34363

    685942.5

    6.3初始算法程序運(yùn)行過程展示

    圖5 初始參數(shù)算法運(yùn)行圖

    6.4關(guān)鍵參數(shù)重要性對(duì)比

    人工魚群算法中的參數(shù)較多,其中有人工魚群的群規(guī)模N,擁擠度因子δ,視野和步長(zhǎng),前面兩個(gè)參數(shù)通常可以采用數(shù)值實(shí)驗(yàn)的方法來確定它的大致范圍.后兩個(gè)參數(shù)直接影響人工魚運(yùn)行的軌跡,因此對(duì)算法的效果有著更直接的影響。在控制其他關(guān)鍵參數(shù)不變的情況下,更改視野與步長(zhǎng)的數(shù)值,來觀察最終的結(jié)果。實(shí)驗(yàn)測(cè)試結(jié)果如表4與表5。

    1)通過固定人工魚群的群規(guī)模N,擁擠度因子δ和步長(zhǎng)step,改變視野visual的數(shù)值,通過重復(fù)實(shí)驗(yàn)觀察視野對(duì)于整體算法的重要程度。

    表 4 改變視野

    群規(guī)模

    嘗試次數(shù)

    擁擠度因子

    步長(zhǎng)

    視野

    距離

    50

    100

    0.3

    0.2

    1

    33872

    2

    33588

    3

    34210

    4

    34513

    5

    34250

    6

    34393

    7

    34385

    實(shí)驗(yàn)結(jié)果表明,如果視野visual取值范圍在[1,2]內(nèi)中的時(shí)候,其visual =2左右的時(shí)候可以取到最優(yōu)解,visual = 2 為本次所采用的人工魚群算法的一個(gè)最優(yōu)參考數(shù)值。

    2)通過固定人工魚群的群規(guī)模N,擁擠度因子δ和視野visual,改變步長(zhǎng)step的數(shù)值,通過重復(fù)實(shí)驗(yàn)觀察視野對(duì)于整體算法的重要程度。

    表 5 改變步長(zhǎng)

    群規(guī)模

    嘗試次數(shù)

    擁擠度因子

    視野

    步長(zhǎng)

    距離

    50

    100

    0.3

    1

    0.2

    33831

    0.4

    33791

    0.6

    34197

    0.8

    34334

    1.0

    34207

    1.2

    34071

    1.4

    34358

    實(shí)驗(yàn)結(jié)果表明,步長(zhǎng)step在0.4左右的時(shí)候表現(xiàn)出了較好的效果,在一定范圍內(nèi),步長(zhǎng)越大收斂速度越快,步長(zhǎng)越小收斂速度越慢。但是,當(dāng)步長(zhǎng)過大超出范圍后,收斂的速度會(huì)明顯下降,甚至?xí)谷斯~在局部極值點(diǎn)來回震蕩,從而降低速度和收斂精度。當(dāng)設(shè)置較小的步長(zhǎng)時(shí),收斂速度會(huì)下降,而算法的收斂精度會(huì)提高。

    6.5實(shí)驗(yàn)結(jié)論

    通過對(duì)比初始值與修改參數(shù)后算法運(yùn)行情況,我們發(fā)現(xiàn)當(dāng)視野visual = 2,步長(zhǎng)為0.4時(shí)可以取得一個(gè)較好的結(jié)果。同時(shí),通過比較數(shù)據(jù)結(jié)果,我們得出以下結(jié)論:

    1)通常,視野越大人工魚在發(fā)現(xiàn)全局極值的能力和收斂的能力越突出。當(dāng)視野范圍較小時(shí)往往更加突出覓食行為和隨機(jī)行為在算法中的作用,人工魚在較小的視野范圍有更強(qiáng)的搜索能力,而在一定程度上限制了聚群行為和追尾行為的作用;在視野較大時(shí),算法更加突出了聚群行為和追尾行為的作用,一定程度上減少覓食行為和隨機(jī)行為的發(fā)生。

    2)在一定范圍內(nèi),步長(zhǎng)越大收斂速度越快,步長(zhǎng)越小收斂速度越慢。但是,當(dāng)步長(zhǎng)過大超出范圍后,收斂的速度會(huì)明顯下降,甚至?xí)谷斯~在局部極值點(diǎn)來回震蕩,從而降低速度和收斂精度。當(dāng)設(shè)置較小的步長(zhǎng)時(shí),收斂速度會(huì)下降,而算法的收斂精度會(huì)提高。

    總結(jié)

    以上是生活随笔為你收集整理的人工鱼群算法解决TSP问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。