-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
灰狼算法和粒子群算法(灰狼算法和粒子群算法比較)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于灰狼算法和粒子群算法的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來(lái)看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、什么是粒子群算法?
粒子群算法介紹(摘自http://blog.sina.com.cn/newtech)
優(yōu)化問題是工業(yè)設(shè)計(jì)中經(jīng)常遇到的問題,許多問題最后都可以歸結(jié)為優(yōu)化問題. 為了解決各種各樣的優(yōu)化問題,人們提出了許多優(yōu)化算法,比較著名的有爬山法、遺傳算法等.優(yōu)化問題有兩個(gè)主要問題:一是要求尋找全局最小點(diǎn),二是要求有較高的收斂速度. 爬山法精度較高,但是易于陷入局部極小. 遺傳算法屬于進(jìn)化算法( Evolutionary Algorithms) 的一種,它通過模仿自然界的選擇與遺傳的機(jī)理來(lái)尋找最優(yōu)解. 遺傳算法有三個(gè)基本算子:選擇、交叉和變異. 但是遺傳算法的編程實(shí)現(xiàn)比較復(fù)雜,首先需要對(duì)問題進(jìn)行編碼,找到最優(yōu)解之后還需要對(duì)問題進(jìn)行解碼,另外三個(gè)算子的實(shí)現(xiàn)也有許多參數(shù),如交叉率和變異率,并且這些參數(shù)的選擇嚴(yán)重影響解的品質(zhì),而目前這些參數(shù)的選擇大部分是依靠經(jīng)驗(yàn).1995 年Eberhart 博士和kennedy 博士提出了一種新的算法;粒子群優(yōu)化(Partical Swarm Optimization -PSO) 算法 . 這種算法以其實(shí)現(xiàn)容易、精度高、收斂快等優(yōu)點(diǎn)引起了學(xué)術(shù)界的重視,并且在解決實(shí)際問題中展示了其優(yōu)越性.
粒子群優(yōu)化(Partical Swarm Optimization - PSO) 算法是近年來(lái)發(fā)展起來(lái)的一種新的進(jìn)化算法( Evolu2tionary Algorithm - EA) .PSO 算法屬于進(jìn)化算法的一種,和遺傳算法相似,它也是從隨機(jī)解出發(fā),通過迭代尋找最優(yōu)解,它也是通過適應(yīng)度來(lái)評(píng)價(jià)解的品質(zhì). 但是它比遺傳算法規(guī)則更為簡(jiǎn)單,它沒有遺傳算法的“交叉”(Crossover) 和“變異”(Mutation) 操作. 它通過追隨當(dāng)前搜索到的最優(yōu)值來(lái)尋找全局最優(yōu) .
粒子群算法
1. 引言
粒子群優(yōu)化算法(PSO)是一種進(jìn)化計(jì)算技術(shù)(evolutionary computation),有Eberhart博士和kennedy博士發(fā)明。源于對(duì)鳥群捕食的行為研究
PSO同遺傳算法類似,是一種基于疊代的優(yōu)化工具。系統(tǒng)初始化為一組隨機(jī)解,通過疊代搜尋最優(yōu)值。但是并沒有遺傳算法用的交叉(crossover)以及變異(mutation)。而是粒子在解空間追隨最優(yōu)的粒子進(jìn)行搜索。詳細(xì)的步驟以后的章節(jié)介紹
同遺傳算法比較,PSO的優(yōu)勢(shì)在于簡(jiǎn)單容易實(shí)現(xiàn)并且沒有許多參數(shù)需要調(diào)整。目前已廣泛應(yīng)用于函數(shù)優(yōu)化,神經(jīng)網(wǎng)絡(luò)訓(xùn)練,模糊系統(tǒng)控制以及其他遺傳算法的應(yīng)用領(lǐng)域
2. 背景: 人工生命
"人工生命"是來(lái)研究具有某些生命基本特征的人工系統(tǒng). 人工生命包括兩方面的內(nèi)容
1. 研究如何利用計(jì)算技術(shù)研究生物現(xiàn)象
2. 研究如何利用生物技術(shù)研究計(jì)算問題
我們現(xiàn)在關(guān)注的是第二部分的內(nèi)容. 現(xiàn)在已經(jīng)有很多源于生物現(xiàn)象的計(jì)算技巧. 例如, 人工神經(jīng)網(wǎng)絡(luò)是簡(jiǎn)化的大腦模型. 遺傳算法是模擬基因進(jìn)化過程的.
現(xiàn)在我們討論另一種生物系統(tǒng)- 社會(huì)系統(tǒng). 更確切的是, 在由簡(jiǎn)單個(gè)體組成的群落與環(huán)境以及個(gè)體之間的互動(dòng)行為. 也可稱做"群智能"(swarm intelligence). 這些模擬系統(tǒng)利用局部信息從而可能產(chǎn)生不可預(yù)測(cè)的群體行為
例如floys 和 boids, 他們都用來(lái)模擬魚群和鳥群的運(yùn)動(dòng)規(guī)律, 主要用于計(jì)算機(jī)視覺和計(jì)算機(jī)輔助設(shè)計(jì).
在計(jì)算智能(computational intelligence)領(lǐng)域有兩種基于群智能的算法. 蟻群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是對(duì)螞蟻群落食物采集過程的模擬. 已經(jīng)成功運(yùn)用在很多離散優(yōu)化問題上.
粒子群優(yōu)化算法(PSO) 也是起源對(duì)簡(jiǎn)單社會(huì)系統(tǒng)的模擬. 最初設(shè)想是模擬鳥群覓食的過程. 但后來(lái)發(fā)現(xiàn)PSO是一種很好的優(yōu)化工具.
3. 算法介紹
如前所述,PSO模擬鳥群的捕食行為。設(shè)想這樣一個(gè)場(chǎng)景:一群鳥在隨機(jī)搜索食物。在這個(gè)區(qū)域里只有一塊食物。所有的鳥都不知道食物在那里。但是他們知道當(dāng)前的位置離食物還有多遠(yuǎn)。那么找到食物的最優(yōu)策略是什么呢。最簡(jiǎn)單有效的就是搜尋目前離食物最近的鳥的周圍區(qū)域。
PSO從這種模型中得到啟示并用于解決優(yōu)化問題。PSO中,每個(gè)優(yōu)化問題的解都是搜索空間中的一只鳥。我們稱之為“粒子”。所有的例子都有一個(gè)由被優(yōu)化的函數(shù)決定的適應(yīng)值(fitness value),每個(gè)粒子還有一個(gè)速度決定他們飛翔的方向和距離。然后粒子們就追隨當(dāng)前的最優(yōu)粒子在解空間中搜索
PSO 初始化為一群隨機(jī)粒子(隨機(jī)解)。然后通過疊代找到最優(yōu)解。在每一次疊代中,粒子通過跟蹤兩個(gè)"極值"來(lái)更新自己。第一個(gè)就是粒子本身所找到的最優(yōu)解。這個(gè)解叫做個(gè)體極值pBest. 另一個(gè)極值是整個(gè)種群目前找到的最優(yōu)解。這個(gè)極值是全局極值gBest。另外也可以不用整個(gè)種群而只是用其中一部分最為粒子的鄰居,那么在所有鄰居中的極值就是局部極值。
在找到這兩個(gè)最優(yōu)值時(shí), 粒子根據(jù)如下的公式來(lái)更新自己的速度和新的位置
v[] = v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a)
present[] = persent[] + v[] (b)
v[] 是粒子的速度, persent[] 是當(dāng)前粒子的位置. pbest[] and gbest[] 如前定義 rand () 是介于(0, 1)之間的隨機(jī)數(shù). c1, c2 是學(xué)習(xí)因子. 通常 c1 = c2 = 2.
程序的偽代碼如下
For each particle
____Initialize particle
END
Do
____For each particle
________Calculate fitness value
________If the fitness value is better than the best fitness value (pBest) in history
____________set current value as the new pBest
____End
____Choose the particle with the best fitness value of all the particles as the gBest
____For each particle
________Calculate particle velocity according equation (a)
________Update particle position according equation (b)
____End
While maximum iterations or minimum error criteria is not attained
在每一維粒子的速度都會(huì)被限制在一個(gè)最大速度Vmax,如果某一維更新后的速度超過用戶設(shè)定的Vmax,那么這一維的速度就被限定為Vmax
4. 遺傳算法和 PSO 的比較
大多數(shù)演化計(jì)算技術(shù)都是用同樣的過程
1. 種群隨機(jī)初始化
2. 對(duì)種群內(nèi)的每一個(gè)個(gè)體計(jì)算適應(yīng)值(fitness value).適應(yīng)值與最優(yōu)解的距離直接有關(guān)
3. 種群根據(jù)適應(yīng)值進(jìn)行復(fù)制
4. 如果終止條件滿足的話,就停止,否則轉(zhuǎn)步驟2
從以上步驟,我們可以看到PSO和GA有很多共同之處。兩者都隨機(jī)初始化種群,而且都使用適應(yīng)值來(lái)評(píng)價(jià)系統(tǒng),而且都根據(jù)適應(yīng)值來(lái)進(jìn)行一定的隨機(jī)搜索。兩個(gè)系統(tǒng)都不是保證一定找到最優(yōu)解
但是,PSO 沒有遺傳操作如交叉(crossover)和變異(mutation). 而是根據(jù)自己的速度來(lái)決定搜索。粒子還有一個(gè)重要的特點(diǎn),就是有記憶。
與遺傳算法比較, PSO 的信息共享機(jī)制是很不同的. 在遺傳算法中,染色體(chromosomes) 互相共享信息,所以整個(gè)種群的移動(dòng)是比較均勻的向最優(yōu)區(qū)域移動(dòng). 在PSO中, 只有g(shù)Best (or lBest) 給出信息給其他的粒子,這是單向的信息流動(dòng). 整個(gè)搜索更新過程是跟隨當(dāng)前最優(yōu)解的過程. 與遺傳算法比較, 在大多數(shù)的情況下,所有的粒子可能更快的收斂于最優(yōu)解
5. 人工神經(jīng)網(wǎng)絡(luò) 和 PSO
人工神經(jīng)網(wǎng)絡(luò)(ANN)是模擬大腦分析過程的簡(jiǎn)單數(shù)學(xué)模型,反向轉(zhuǎn)播算法是最流行的神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法。進(jìn)來(lái)也有很多研究開始利用演化計(jì)算(evolutionary computation)技術(shù)來(lái)研究人工神經(jīng)網(wǎng)絡(luò)的各個(gè)方面。
演化計(jì)算可以用來(lái)研究神經(jīng)網(wǎng)絡(luò)的三個(gè)方面:網(wǎng)絡(luò)連接權(quán)重,網(wǎng)絡(luò)結(jié)構(gòu)(網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),傳遞函數(shù)),網(wǎng)絡(luò)學(xué)習(xí)算法。
不過大多數(shù)這方面的工作都集中在網(wǎng)絡(luò)連接權(quán)重,和網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)上。在GA中,網(wǎng)絡(luò)權(quán)重和/或拓?fù)浣Y(jié)構(gòu)一般編碼為染色體(Chromosome),適應(yīng)函數(shù)(fitness function)的選擇一般根據(jù)研究目的確定。例如在分類問題中,錯(cuò)誤分類的比率可以用來(lái)作為適應(yīng)值
演化計(jì)算的優(yōu)勢(shì)在于可以處理一些傳統(tǒng)方法不能處理的例子例如不可導(dǎo)的節(jié)點(diǎn)傳遞函數(shù)或者沒有梯度信息存在。但是缺點(diǎn)在于:在某些問題上性能并不是特別好。2. 網(wǎng)絡(luò)權(quán)重的編碼而且遺傳算子的選擇有時(shí)比較麻煩
最近已經(jīng)有一些利用PSO來(lái)代替反向傳播算法來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的論文。研究表明PSO 是一種很有潛力的神經(jīng)網(wǎng)絡(luò)算法。PSO速度比較快而且可以得到比較好的結(jié)果。而且還沒有遺傳算法碰到的問題
這里用一個(gè)簡(jiǎn)單的例子說(shuō)明PSO訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過程。這個(gè)例子使用分類問題的基準(zhǔn)函數(shù)(Benchmark function)IRIS數(shù)據(jù)集。(Iris 是一種鳶尾屬植物) 在數(shù)據(jù)記錄中,每組數(shù)據(jù)包含Iris花的四種屬性:萼片長(zhǎng)度,萼片寬度,花瓣長(zhǎng)度,和花瓣寬度,三種不同的花各有50組數(shù)據(jù). 這樣總共有150組數(shù)據(jù)或模式。
我們用3層的神經(jīng)網(wǎng)絡(luò)來(lái)做分類?,F(xiàn)在有四個(gè)輸入和三個(gè)輸出。所以神經(jīng)網(wǎng)絡(luò)的輸入層有4個(gè)節(jié)點(diǎn),輸出層有3個(gè)節(jié)點(diǎn)我們也可以動(dòng)態(tài)調(diào)節(jié)隱含層節(jié)點(diǎn)的數(shù)目,不過這里我們假定隱含層有6個(gè)節(jié)點(diǎn)。我們也可以訓(xùn)練神經(jīng)網(wǎng)絡(luò)中其他的參數(shù)。不過這里我們只是來(lái)確定網(wǎng)絡(luò)權(quán)重。粒子就表示神經(jīng)網(wǎng)絡(luò)的一組權(quán)重,應(yīng)該是4*6+6*3=42個(gè)參數(shù)。權(quán)重的范圍設(shè)定為[-100,100] (這只是一個(gè)例子,在實(shí)際情況中可能需要試驗(yàn)調(diào)整).在完成編碼以后,我們需要確定適應(yīng)函數(shù)。對(duì)于分類問題,我們把所有的數(shù)據(jù)送入神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)的權(quán)重有粒子的參數(shù)決定。然后記錄所有的錯(cuò)誤分類的數(shù)目作為那個(gè)粒子的適應(yīng)值。現(xiàn)在我們就利用PSO來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)來(lái)獲得盡可能低的錯(cuò)誤分類數(shù)目。PSO本身并沒有很多的參數(shù)需要調(diào)整。所以在實(shí)驗(yàn)中只需要調(diào)整隱含層的節(jié)點(diǎn)數(shù)目和權(quán)重的范圍以取得較好的分類效果。
6. PSO的參數(shù)設(shè)置
從上面的例子我們可以看到應(yīng)用PSO解決優(yōu)化問題的過程中有兩個(gè)重要的步驟: 問題解的編碼和適應(yīng)度函數(shù)
PSO的一個(gè)優(yōu)勢(shì)就是采用實(shí)數(shù)編碼, 不需要像遺傳算法一樣是二進(jìn)制編碼(或者采用針對(duì)實(shí)數(shù)的遺傳操作.例如對(duì)于問題 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接編碼為 (x1, x2, x3), 而適應(yīng)度函數(shù)就是f(x). 接著我們就可以利用前面的過程去尋優(yōu).這個(gè)尋優(yōu)過程是一個(gè)疊代過程, 中止條件一般為設(shè)置為達(dá)到最大循環(huán)數(shù)或者最小錯(cuò)誤
PSO中并沒有許多需要調(diào)節(jié)的參數(shù),下面列出了這些參數(shù)以及經(jīng)驗(yàn)設(shè)置
粒子數(shù): 一般取 20 – 40. 其實(shí)對(duì)于大部分的問題10個(gè)粒子已經(jīng)足夠可以取得好的結(jié)果, 不過對(duì)于比較難的問題或者特定類別的問題, 粒子數(shù)可以取到100 或 200
粒子的長(zhǎng)度: 這是由優(yōu)化問題決定, 就是問題解的長(zhǎng)度
粒子的范圍: 由優(yōu)化問題決定,每一維可是設(shè)定不同的范圍
Vmax: 最大速度,決定粒子在一個(gè)循環(huán)中最大的移動(dòng)距離,通常設(shè)定為粒子的范圍寬度,例如上面的例子里,粒子 (x1, x2, x3) x1 屬于 [-10, 10], 那么 Vmax 的大小就是 20
學(xué)習(xí)因子: c1 和 c2 通常等于 2. 不過在文獻(xiàn)中也有其他的取值. 但是一般 c1 等于 c2 并且范圍在0和4之間
中止條件: 最大循環(huán)數(shù)以及最小錯(cuò)誤要求. 例如, 在上面的神經(jīng)網(wǎng)絡(luò)訓(xùn)練例子中, 最小錯(cuò)誤可以設(shè)定為1個(gè)錯(cuò)誤分類, 最大循環(huán)設(shè)定為2000, 這個(gè)中止條件由具體的問題確定.
全局PSO和局部PSO: 我們介紹了兩種版本的粒子群優(yōu)化算法: 全局版和局部版. 前者速度快不過有時(shí)會(huì)陷入局部最優(yōu). 后者收斂速度慢一點(diǎn)不過很難陷入局部最優(yōu). 在實(shí)際應(yīng)用中, 可以先用全局PSO找到大致的結(jié)果,再有局部PSO進(jìn)行搜索.
另外的一個(gè)參數(shù)是慣性權(quán)重, 由Shi 和Eberhart提出, 有興趣的可以參考他們1998年的論文(題目: A modified particle swarm optimizer)
二、優(yōu)化算法筆記(五)粒子群算法(3)
(已合并本篇內(nèi)容至粒子群算法(1))
上一節(jié)中,我們看到小鳥們聚集到一個(gè)較小的范圍內(nèi)后,不會(huì)再繼續(xù)集中。這是怎么回事呢?
猜測(cè):
1.與最大速度限制有關(guān),權(quán)重w只是方便動(dòng)態(tài)修改maxV。
2.與C1和C2有關(guān),這兩個(gè)權(quán)重限制了鳥兒的搜索行為。
還是上一節(jié)的實(shí)驗(yàn), ?,F(xiàn)在我們將maxV的值有5修改為50,即maxV=50,其他參數(shù)不變。參數(shù)如下
此時(shí)得到的最優(yōu)位值的適應(yīng)度函數(shù)值為0.25571,可以看出與maxV=5相比,結(jié)果差了很多而且小鳥們聚集的范圍更大了。
現(xiàn)在我們?cè)O(shè)置maxV=1,再次重復(fù)上面的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如下:
這次最終的適應(yīng)度函數(shù)值為,比之前的結(jié)果都要好0.00273。從圖中我們可以看出,小鳥們?cè)谙蛞粋€(gè)點(diǎn)集中,但是他們飛行的速度比之前慢多了,如果問題更復(fù)雜,可能無(wú)法等到它們聚集到一個(gè)點(diǎn),迭代就結(jié)束了。
為什么maxV會(huì)影響鳥群的搜索結(jié)果呢?
我們依然以maxV=50為例,不過這次為了看的更加清晰,我們的鳥群只有2只鳥,同時(shí)將幀數(shù)放慢5倍以便觀察。
思路一:限制鳥的最大飛行速率,由于慣性系數(shù)W的存在,使得控制最大速率和控制慣性系數(shù)的效果是等價(jià)的,取其一即可。
方案1:使慣性系數(shù)隨著迭代次數(shù)增加而降低,這里使用的是線性下降的方式,即在第1次迭代,慣性系數(shù)W=1,最后一次迭代時(shí),慣性系數(shù)W=0,當(dāng)然,也可以根據(jù)自己的意愿取其他值。
實(shí)驗(yàn)參數(shù)如下:
小鳥們的飛行過程如上圖,可以看到效果很好,最后甚至都聚集到了一個(gè)點(diǎn)。再看看最終的適應(yīng)度函數(shù)值8.61666413451519E-17,這已經(jīng)是一個(gè)相當(dāng)精確的值了,說(shuō)明這是一個(gè)可行的方案,但是由于其最后種群過于集中,有陷入局部最優(yōu)的風(fēng)險(xiǎn)。
方案2:給每只鳥一個(gè)隨機(jī)的慣性系數(shù),那么鳥的飛行軌跡也將不再像之前會(huì)出現(xiàn)周期性。每只鳥的慣性系數(shù)W為(0,2)中的隨機(jī)數(shù)(保持W的期望為1)。
實(shí)驗(yàn)參數(shù)如下:
可以看到小鳥們并沒有像上一個(gè)實(shí)驗(yàn)一樣聚集于一個(gè)點(diǎn),而是仍在一個(gè)較大的范圍內(nèi)進(jìn)行搜索。其最終的適應(yīng)度函數(shù)為0.01176,比最初的0.25571稍有提升,但并不顯著。什么原因造成了這種情況呢?我想可能是由于慣性系數(shù)成了期望為1的隨機(jī)數(shù),那么小鳥的飛行軌跡的期望可能仍然是繞著一個(gè)四邊形循環(huán),只不過這個(gè)四邊形相比之前的平行四邊形更加復(fù)雜,所以其結(jié)果也稍有提升,當(dāng)然對(duì)于概率算法,得到這樣的結(jié)果可能僅僅是因?yàn)檫\(yùn)氣不好
我們看到慣性系數(shù)W值減小,小鳥們聚攏到一處的速度明顯提升,那么,如果我們?nèi)サ魬T性系數(shù)這個(gè)參數(shù)會(huì)怎么樣呢。
方案3:取出慣性系數(shù),即取W=0,小鳥們只向著那兩個(gè)最優(yōu)位置飛行。
可以看見鳥群們迅速聚集到了一個(gè)點(diǎn),再看看得到的結(jié)果,最終的適應(yīng)度函數(shù)值為2.9086886073362966E-30,明顯優(yōu)于之前的所有操作。
那么問題來(lái)了,為什么粒子群算法需要一個(gè)慣性速度,它的作用是什么呢?其實(shí)很明顯,當(dāng)鳥群迅速集中到了一個(gè)點(diǎn)之后它們就喪失了全局的搜索能力,所有的鳥會(huì)迅速向著全局最優(yōu)點(diǎn)飛去,如果當(dāng)前的全局最優(yōu)解是一個(gè)局部最優(yōu)點(diǎn),那么鳥群將會(huì)陷入局部最優(yōu)。所以,慣性系數(shù)和慣性速度的作用是給鳥群提供跳出局部最優(yōu)的可能性,獲得這個(gè)跳出局部最優(yōu)能力的代價(jià)是它們的收斂速度減慢,且局部的搜索能力較弱(與當(dāng)前的慣性速度有關(guān))。
為了平衡局部搜索能力和跳出局部最優(yōu)能力,我們可以人為的干預(yù)一下慣性系數(shù)W的大小,結(jié)合方案1和方案2,我們可以使每只鳥的慣性系數(shù)以一個(gè)隨機(jī)周期,周期性下降,若小于0,則重置為初始值。
這樣結(jié)合了方案1和方案2的慣性系數(shù),也能得到不錯(cuò)的效果,大家可以自己一試。
思路二:改變小鳥們向群體最優(yōu)飛行和向歷史最優(yōu)飛行的權(quán)重。
方案4:讓小鳥向全局最優(yōu)飛行的系數(shù)C2線性遞減。
小鳥們的飛行過程與之前好像沒什么變化,我甚至懷疑我做了假實(shí)驗(yàn)??纯醋罱K結(jié)果,0.7267249621552874,這是到目前為止的最差結(jié)果。看來(lái)這不是一個(gè)好方案,讓全局學(xué)習(xí)因子C2遞減,勢(shì)必會(huì)降低算法的收斂效率,而慣性系數(shù)還是那么大,小鳥們依然會(huì)圍繞歷史最優(yōu)位置打轉(zhuǎn),畢竟這兩個(gè)最優(yōu)位置是有一定關(guān)聯(lián)的。所以讓C1線性遞減的實(shí)驗(yàn)也不必做了,其效果應(yīng)該與方案4相差不大。
看來(lái)只要是慣性系數(shù)不變?cè)趺葱薷腃1和C2都不會(huì)有太過明顯的效果。為什么實(shí)驗(yàn)都是參數(shù)遞減,卻沒有參數(shù)遞增的實(shí)驗(yàn)?zāi)兀?/p>
1.慣性系數(shù)W必須遞減,因?yàn)樗鼤?huì)影響鳥群的搜索范圍。
2.如果C1和C2遞增,那么小鳥的慣性速度V勢(shì)必會(huì)跟著遞增,這與W遞增會(huì)產(chǎn)生相同的效果。
上面我們通過一些實(shí)驗(yàn)及理論分析了粒子群算法的特點(diǎn)及其參數(shù)的作用。粒子群作為優(yōu)化算法中模型最簡(jiǎn)單的算法,通過修改這幾個(gè)簡(jiǎn)單的參數(shù)也能夠改變算法的優(yōu)化性能可以說(shuō)是一個(gè)非常優(yōu)秀的算法。
上述實(shí)驗(yàn)中,我們僅分析了單個(gè)參數(shù)對(duì)算法的影響,實(shí)際使用時(shí)(創(chuàng)新、發(fā)明、寫論文時(shí))也會(huì)同時(shí)動(dòng)態(tài)改變多個(gè)參數(shù),甚至是參數(shù)之間產(chǎn)生關(guān)聯(lián)。
實(shí)驗(yàn)中,為了展現(xiàn)實(shí)驗(yàn)效果,maxV取值較大,一般取值為搜索空間范圍的10%-20%,按上面(-100,100)的范圍maxV應(yīng)該取值為20-40,在此基礎(chǔ)上,方案1、方案2效果應(yīng)該會(huì)更好。
粒子群算法是一種概率算法,所以并不能使用一次實(shí)驗(yàn)結(jié)果來(lái)判斷算法的性能,我們需要進(jìn)行多次實(shí)驗(yàn),然后看看這些實(shí)驗(yàn)的效果最終來(lái)判斷,結(jié)果必須使用多次實(shí)驗(yàn)的統(tǒng)計(jì)數(shù)據(jù)來(lái)說(shuō)明,一般我們都會(huì)重復(fù)實(shí)驗(yàn)30-50次,為了發(fā)論文去做實(shí)驗(yàn)的小伙伴們不要偷懶哦。
粒子群算法的學(xué)習(xí)目前告一段落,如果有什么新的發(fā)現(xiàn),后面繼續(xù)更新哦!
以下指標(biāo)純屬個(gè)人yy,僅供參考
目錄
上一篇 優(yōu)化算法筆記(四)粒子群算法(2)
下一篇 優(yōu)化算法筆記(六)遺傳算法
三、粒子群優(yōu)化算法
粒子群算法 的思想源于對(duì)鳥/魚群捕食行為的研究,模擬鳥集群飛行覓食的行為,鳥之間通過集體的協(xié)作使群體達(dá)到最優(yōu)目的,是一種基于Swarm Intelligence的優(yōu)化方法。它沒有遺傳算法的“交叉”(Crossover) 和“變異”(Mutation) 操作,它通過追隨當(dāng)前搜索到的最優(yōu)值來(lái)尋找全局最優(yōu)。粒子群算法與其他現(xiàn)代優(yōu)化方法相比的一個(gè)明顯特色就是所 需要調(diào)整的參數(shù)很少、簡(jiǎn)單易行 ,收斂速度快,已成為現(xiàn)代優(yōu)化方法領(lǐng)域研究的熱點(diǎn)。
設(shè)想這樣一個(gè)場(chǎng)景:一群鳥在隨機(jī)搜索食物。已知在這塊區(qū)域里只有一塊食物;所有的鳥都不知道食物在哪里;但它們能感受到當(dāng)前的位置離食物還有多遠(yuǎn)。那么找到食物的最優(yōu)策略是什么呢?
1. 搜尋目前離食物最近的鳥的周圍區(qū)域
2. 根據(jù)自己飛行的經(jīng)驗(yàn)判斷食物的所在。
PSO正是從這種模型中得到了啟發(fā),PSO的基礎(chǔ)是 信息的社會(huì)共享
每個(gè)尋優(yōu)的問題解都被想像成一只鳥,稱為“粒子”。所有粒子都在一個(gè)D維空間進(jìn)行搜索。
所有的粒子都由一個(gè)fitness function 確定適應(yīng)值以判斷目前的位置好壞。
每一個(gè)粒子必須賦予記憶功能,能記住所搜尋到的最佳位置。
每一個(gè)粒子還有一個(gè)速度以決定飛行的距離和方向。這個(gè)速度根據(jù)它本身的飛行經(jīng)驗(yàn)以及同伴的飛行經(jīng)驗(yàn)進(jìn)行動(dòng)態(tài)調(diào)整。
粒子速度更新公式包含三部分: 第一部分為“慣性部分”,即對(duì)粒子先前速度的記憶;第二部分為“自我認(rèn)知”部分,可理解為粒子i當(dāng)前位置與自己最好位置之間的距離;第三部分為“社會(huì)經(jīng)驗(yàn)”部分,表示粒子間的信息共享與合作,可理解為粒子i當(dāng)前位置與群體最好位置之間的距離。
第1步 在初始化范圍內(nèi),對(duì)粒子群進(jìn)行隨機(jī)初始化,包括隨機(jī)位置和速度
第2步 根據(jù)fitness function,計(jì)算每個(gè)粒子的適應(yīng)值
第3步 對(duì)每個(gè)粒子,將其當(dāng)前適應(yīng)值與其個(gè)體歷史最佳位置(pbest)對(duì)應(yīng)的適應(yīng)值作比較,如果當(dāng)前的適應(yīng)值更高,則用當(dāng)前位置更新粒子個(gè)體的歷史最優(yōu)位置pbest
第4步 對(duì)每個(gè)粒子,將其當(dāng)前適應(yīng)值與全局最佳位置(gbest)對(duì)應(yīng)的適應(yīng)值作比較,如果當(dāng)前的適應(yīng)值更高,則用當(dāng)前位置更新粒子群體的歷史最優(yōu)位置gbest
第5步 更新粒子的速度和位置
第6步 若未達(dá)到終止條件,則轉(zhuǎn)第2步
【通常算法達(dá)到最大迭代次數(shù)或者最佳適應(yīng)度值得增量小于某個(gè)給定的閾值時(shí)算法停止】
粒子群算法流程圖如下:
以Ras函數(shù)(Rastrigin's Function)為目標(biāo)函數(shù),求其在x1,x2∈[-5,5]上的最小值。這個(gè)函數(shù)對(duì)模擬退火、進(jìn)化計(jì)算等算法具有很強(qiáng)的欺騙性,因?yàn)樗蟹浅6嗟木植孔钚≈迭c(diǎn)和局部最大值點(diǎn),很容易使算法陷入局部最優(yōu),而不能得到全局最優(yōu)解。如下圖所示,該函數(shù)只在(0,0)處存在全局最小值0。
四、什么是粒子群算法?
Eberhart和Kennedy于1995年提出了粒子群優(yōu)化算法(PSO)[66]。PSO與GA有很多共同之處
以上就是關(guān)于灰狼算法和粒子群算法相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
灰狼優(yōu)化算法介紹和背景(灰狼優(yōu)化算法介紹和背景怎么寫)
灰狼算法畢業(yè)設(shè)計(jì)(灰狼算法python)
灰狼算法和粒子群算法哪個(gè)好(灰狼算法和粒子群算法哪個(gè)好用)
如何統(tǒng)計(jì)詞頻(如何統(tǒng)計(jì)詞頻python)