HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    灰狼算法和粒子群算法(灰狼算法和粒子群算法比較)

    發(fā)布時(shí)間:2023-04-22 07:20:31     稿源: 創(chuàng)意嶺    閱讀: 104        

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于灰狼算法和粒子群算法的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    開(kā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)化問(wèn)題是工業(yè)設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,許多問(wèn)題最后都可以歸結(jié)為優(yōu)化問(wèn)題. 為了解決各種各樣的優(yōu)化問(wèn)題,人們提出了許多優(yōu)化算法,比較著名的有爬山法、遺傳算法等.優(yōu)化問(wèn)題有兩個(gè)主要問(wèn)題:一是要求尋找全局最小點(diǎn),二是要求有較高的收斂速度. 爬山法精度較高,但是易于陷入局部極小. 遺傳算法屬于進(jìn)化算法( Evolutionary Algorithms) 的一種,它通過(guò)模仿自然界的選擇與遺傳的機(jī)理來(lái)尋找最優(yōu)解. 遺傳算法有三個(gè)基本算子:選擇、交叉和變異. 但是遺傳算法的編程實(shí)現(xiàn)比較復(fù)雜,首先需要對(duì)問(wèn)題進(jìn)行編碼,找到最優(yōu)解之后還需要對(duì)問(wèn)題進(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í)際問(wèn)題中展示了其優(yōu)越性.

    粒子群優(yōu)化(Partical Swarm Optimization - PSO) 算法是近年來(lái)發(fā)展起來(lái)的一種新的進(jìn)化算法( Evolu2tionary Algorithm - EA) .PSO 算法屬于進(jìn)化算法的一種,和遺傳算法相似,它也是從隨機(jī)解出發(fā),通過(guò)迭代尋找最優(yōu)解,它也是通過(guò)適應(yīng)度來(lái)評(píng)價(jià)解的品質(zhì). 但是它比遺傳算法規(guī)則更為簡(jiǎn)單,它沒(méi)有遺傳算法的“交叉”(Crossover) 和“變異”(Mutation) 操作. 它通過(guò)追隨當(dāng)前搜索到的最優(yōu)值來(lái)尋找全局最優(yōu) .

    粒子群算法

    1. 引言

    粒子群優(yōu)化算法(PSO)是一種進(jìn)化計(jì)算技術(shù)(evolutionary computation),有Eberhart博士和kennedy博士發(fā)明。源于對(duì)鳥(niǎo)群捕食的行為研究

    PSO同遺傳算法類似,是一種基于疊代的優(yōu)化工具。系統(tǒng)初始化為一組隨機(jī)解,通過(guò)疊代搜尋最優(yōu)值。但是并沒(méi)有遺傳算法用的交叉(crossover)以及變異(mutation)。而是粒子在解空間追隨最優(yōu)的粒子進(jìn)行搜索。詳細(xì)的步驟以后的章節(jié)介紹

    同遺傳算法比較,PSO的優(yōu)勢(shì)在于簡(jiǎn)單容易實(shí)現(xiàn)并且沒(méi)有許多參數(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ì)算問(wèn)題

    我們現(xiàn)在關(guān)注的是第二部分的內(nèi)容. 現(xiàn)在已經(jīng)有很多源于生物現(xiàn)象的計(jì)算技巧. 例如, 人工神經(jīng)網(wǎng)絡(luò)是簡(jiǎn)化的大腦模型. 遺傳算法是模擬基因進(jìn)化過(guò)程的.

    現(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)模擬魚群和鳥(niǎo)群的運(yùn)動(dòng)規(guī)律, 主要用于計(jì)算機(jī)視覺(jué)和計(jì)算機(jī)輔助設(shè)計(jì).

    在計(jì)算智能(computational intelligence)領(lǐng)域有兩種基于群智能的算法. 蟻群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是對(duì)螞蟻群落食物采集過(guò)程的模擬. 已經(jīng)成功運(yùn)用在很多離散優(yōu)化問(wèn)題上.

    粒子群優(yōu)化算法(PSO) 也是起源對(duì)簡(jiǎn)單社會(huì)系統(tǒng)的模擬. 最初設(shè)想是模擬鳥(niǎo)群覓食的過(guò)程. 但后來(lái)發(fā)現(xiàn)PSO是一種很好的優(yōu)化工具.

    3. 算法介紹

    如前所述,PSO模擬鳥(niǎo)群的捕食行為。設(shè)想這樣一個(gè)場(chǎng)景:一群鳥(niǎo)在隨機(jī)搜索食物。在這個(gè)區(qū)域里只有一塊食物。所有的鳥(niǎo)都不知道食物在那里。但是他們知道當(dāng)前的位置離食物還有多遠(yuǎn)。那么找到食物的最優(yōu)策略是什么呢。最簡(jiǎn)單有效的就是搜尋目前離食物最近的鳥(niǎo)的周圍區(qū)域。

    PSO從這種模型中得到啟示并用于解決優(yōu)化問(wèn)題。PSO中,每個(gè)優(yōu)化問(wèn)題的解都是搜索空間中的一只鳥(niǎo)。我們稱之為“粒子”。所有的例子都有一個(gè)由被優(yōu)化的函數(shù)決定的適應(yīng)值(fitness value),每個(gè)粒子還有一個(gè)速度決定他們飛翔的方向和距離。然后粒子們就追隨當(dāng)前的最優(yōu)粒子在解空間中搜索

    PSO 初始化為一群隨機(jī)粒子(隨機(jī)解)。然后通過(guò)疊代找到最優(yōu)解。在每一次疊代中,粒子通過(guò)跟蹤兩個(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,如果某一維更新后的速度超過(guò)用戶設(shè)定的Vmax,那么這一維的速度就被限定為Vmax

    4. 遺傳算法和 PSO 的比較

    大多數(shù)演化計(jì)算技術(shù)都是用同樣的過(guò)程

    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 沒(méi)有遺傳操作如交叉(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è)搜索更新過(guò)程是跟隨當(dāng)前最優(yōu)解的過(guò)程. 與遺傳算法比較, 在大多數(shù)的情況下,所有的粒子可能更快的收斂于最優(yōu)解

    5. 人工神經(jīng)網(wǎng)絡(luò) 和 PSO

    人工神經(jīng)網(wǎng)絡(luò)(ANN)是模擬大腦分析過(guò)程的簡(jiǎn)單數(shù)學(xué)模型,反向轉(zhuǎn)播算法是最流行的神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法。進(jìn)來(lái)也有很多研究開(kā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í)算法。

    不過(guò)大多數(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ù)研究目的確定。例如在分類問(wèn)題中,錯(cuò)誤分類的比率可以用來(lái)作為適應(yīng)值

    演化計(jì)算的優(yōu)勢(shì)在于可以處理一些傳統(tǒng)方法不能處理的例子例如不可導(dǎo)的節(jié)點(diǎn)傳遞函數(shù)或者沒(méi)有梯度信息存在。但是缺點(diǎn)在于:在某些問(wè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é)果。而且還沒(méi)有遺傳算法碰到的問(wèn)題

    這里用一個(gè)簡(jiǎn)單的例子說(shuō)明PSO訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過(guò)程。這個(gè)例子使用分類問(wèn)題的基準(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ù)目,不過(guò)這里我們假定隱含層有6個(gè)節(jié)點(diǎn)。我們也可以訓(xùn)練神經(jīng)網(wǎng)絡(luò)中其他的參數(shù)。不過(guò)這里我們只是來(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ì)于分類問(wèn)題,我們把所有的數(shù)據(jù)送入神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)的權(quán)重有粒子的參數(shù)決定。然后記錄所有的錯(cuò)誤分類的數(shù)目作為那個(gè)粒子的適應(yīng)值?,F(xiàn)在我們就利用PSO來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)來(lái)獲得盡可能低的錯(cuò)誤分類數(shù)目。PSO本身并沒(méi)有很多的參數(shù)需要調(diào)整。所以在實(shí)驗(yàn)中只需要調(diào)整隱含層的節(jié)點(diǎn)數(shù)目和權(quán)重的范圍以取得較好的分類效果。

    6. PSO的參數(shù)設(shè)置

    從上面的例子我們可以看到應(yīng)用PSO解決優(yōu)化問(wèn)題的過(guò)程中有兩個(gè)重要的步驟: 問(wèn)題解的編碼和適應(yīng)度函數(shù)

    PSO的一個(gè)優(yōu)勢(shì)就是采用實(shí)數(shù)編碼, 不需要像遺傳算法一樣是二進(jìn)制編碼(或者采用針對(duì)實(shí)數(shù)的遺傳操作.例如對(duì)于問(wèn)題 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接編碼為 (x1, x2, x3), 而適應(yīng)度函數(shù)就是f(x). 接著我們就可以利用前面的過(guò)程去尋優(yōu).這個(gè)尋優(yōu)過(guò)程是一個(gè)疊代過(guò)程, 中止條件一般為設(shè)置為達(dá)到最大循環(huán)數(shù)或者最小錯(cuò)誤

    PSO中并沒(méi)有許多需要調(diào)節(jié)的參數(shù),下面列出了這些參數(shù)以及經(jīng)驗(yàn)設(shè)置

    粒子數(shù): 一般取 20 – 40. 其實(shí)對(duì)于大部分的問(wèn)題10個(gè)粒子已經(jīng)足夠可以取得好的結(jié)果, 不過(guò)對(duì)于比較難的問(wèn)題或者特定類別的問(wèn)題, 粒子數(shù)可以取到100 或 200

    粒子的長(zhǎng)度: 這是由優(yōu)化問(wèn)題決定, 就是問(wèn)題解的長(zhǎng)度

    粒子的范圍: 由優(yōu)化問(wèn)題決定,每一維可是設(shè)定不同的范圍

    Vmax: 最大速度,決定粒子在一個(gè)循環(huán)中最大的移動(dòng)距離,通常設(shè)定為粒子的范圍寬度,例如上面的例子里,粒子 (x1, x2, x3) x1 屬于 [-10, 10], 那么 Vmax 的大小就是 20

    學(xué)習(xí)因子: c1 和 c2 通常等于 2. 不過(guò)在文獻(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è)中止條件由具體的問(wèn)題確定.

    全局PSO和局部PSO: 我們介紹了兩種版本的粒子群優(yōu)化算法: 全局版和局部版. 前者速度快不過(guò)有時(shí)會(huì)陷入局部最優(yōu). 后者收斂速度慢一點(diǎn)不過(guò)很難陷入局部最優(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é)中,我們看到小鳥(niǎo)們聚集到一個(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)重限制了鳥(niǎo)兒的搜索行為。

    還是上一節(jié)的實(shí)驗(yàn), 。現(xiàn)在我們將maxV的值有5修改為50,即maxV=50,其他參數(shù)不變。參數(shù)如下

    此時(shí)得到的最優(yōu)位值的適應(yīng)度函數(shù)值為0.25571,可以看出與maxV=5相比,結(jié)果差了很多而且小鳥(niǎo)們聚集的范圍更大了。

    現(xiàn)在我們?cè)O(shè)置maxV=1,再次重復(fù)上面的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如下:

    這次最終的適應(yīng)度函數(shù)值為,比之前的結(jié)果都要好0.00273。從圖中我們可以看出,小鳥(niǎo)們?cè)谙蛞粋€(gè)點(diǎn)集中,但是他們飛行的速度比之前慢多了,如果問(wèn)題更復(fù)雜,可能無(wú)法等到它們聚集到一個(gè)點(diǎn),迭代就結(jié)束了。

    為什么maxV會(huì)影響鳥(niǎo)群的搜索結(jié)果呢?

    我們依然以maxV=50為例,不過(guò)這次為了看的更加清晰,我們的鳥(niǎo)群只有2只鳥(niǎo),同時(shí)將幀數(shù)放慢5倍以便觀察。

    思路一:限制鳥(niǎo)的最大飛行速率,由于慣性系數(shù)W的存在,使得控制最大速率和控制慣性系數(shù)的效果是等價(jià)的,取其一即可。

    方案1:使慣性系數(shù)隨著迭代次數(shù)增加而降低,這里使用的是線性下降的方式,即在第1次迭代,慣性系數(shù)W=1,最后一次迭代時(shí),慣性系數(shù)W=0,當(dāng)然,也可以根據(jù)自己的意愿取其他值。

    實(shí)驗(yàn)參數(shù)如下:

    小鳥(niǎo)們的飛行過(guò)程如上圖,可以看到效果很好,最后甚至都聚集到了一個(gè)點(diǎn)。再看看最終的適應(yīng)度函數(shù)值8.61666413451519E-17,這已經(jīng)是一個(gè)相當(dāng)精確的值了,說(shuō)明這是一個(gè)可行的方案,但是由于其最后種群過(guò)于集中,有陷入局部最優(yōu)的風(fēng)險(xiǎn)。

    方案2:給每只鳥(niǎo)一個(gè)隨機(jī)的慣性系數(shù),那么鳥(niǎo)的飛行軌跡也將不再像之前會(huì)出現(xiàn)周期性。每只鳥(niǎo)的慣性系數(shù)W為(0,2)中的隨機(jī)數(shù)(保持W的期望為1)。

    實(shí)驗(yàn)參數(shù)如下:

    可以看到小鳥(niǎo)們并沒(méi)有像上一個(gè)實(shí)驗(yàn)一樣聚集于一個(gè)點(diǎn),而是仍在一個(gè)較大的范圍內(nèi)進(jìn)行搜索。其最終的適應(yīng)度函數(shù)為0.01176,比最初的0.25571稍有提升,但并不顯著。什么原因造成了這種情況呢?我想可能是由于慣性系數(shù)成了期望為1的隨機(jī)數(shù),那么小鳥(niǎo)的飛行軌跡的期望可能仍然是繞著一個(gè)四邊形循環(huán),只不過(guò)這個(gè)四邊形相比之前的平行四邊形更加復(fù)雜,所以其結(jié)果也稍有提升,當(dāng)然對(duì)于概率算法,得到這樣的結(jié)果可能僅僅是因?yàn)檫\(yùn)氣不好

    我們看到慣性系數(shù)W值減小,小鳥(niǎo)們聚攏到一處的速度明顯提升,那么,如果我們?nèi)サ魬T性系數(shù)這個(gè)參數(shù)會(huì)怎么樣呢。

    方案3:取出慣性系數(shù),即取W=0,小鳥(niǎo)們只向著那兩個(gè)最優(yōu)位置飛行。

    可以看見(jiàn)鳥(niǎo)群們迅速聚集到了一個(gè)點(diǎn),再看看得到的結(jié)果,最終的適應(yīng)度函數(shù)值為2.9086886073362966E-30,明顯優(yōu)于之前的所有操作。

    那么問(wèn)題來(lái)了,為什么粒子群算法需要一個(gè)慣性速度,它的作用是什么呢?其實(shí)很明顯,當(dāng)鳥(niǎo)群迅速集中到了一個(gè)點(diǎn)之后它們就喪失了全局的搜索能力,所有的鳥(niǎo)會(huì)迅速向著全局最優(yōu)點(diǎn)飛去,如果當(dāng)前的全局最優(yōu)解是一個(gè)局部最優(yōu)點(diǎn),那么鳥(niǎo)群將會(huì)陷入局部最優(yōu)。所以,慣性系數(shù)和慣性速度的作用是給鳥(niǎo)群提供跳出局部最優(yōu)的可能性,獲得這個(gè)跳出局部最優(yōu)能力的代價(jià)是它們的收斂速度減慢,且局部的搜索能力較弱(與當(dāng)前的慣性速度有關(guān))。

    為了平衡局部搜索能力和跳出局部最優(yōu)能力,我們可以人為的干預(yù)一下慣性系數(shù)W的大小,結(jié)合方案1和方案2,我們可以使每只鳥(niǎo)的慣性系數(shù)以一個(gè)隨機(jī)周期,周期性下降,若小于0,則重置為初始值。

    這樣結(jié)合了方案1和方案2的慣性系數(shù),也能得到不錯(cuò)的效果,大家可以自己一試。

    思路二:改變小鳥(niǎo)們向群體最優(yōu)飛行和向歷史最優(yōu)飛行的權(quán)重。

    方案4:讓小鳥(niǎo)向全局最優(yōu)飛行的系數(shù)C2線性遞減。

    小鳥(niǎo)們的飛行過(guò)程與之前好像沒(méi)什么變化,我甚至懷疑我做了假實(shí)驗(yàn)??纯醋罱K結(jié)果,0.7267249621552874,這是到目前為止的最差結(jié)果。看來(lái)這不是一個(gè)好方案,讓全局學(xué)習(xí)因子C2遞減,勢(shì)必會(huì)降低算法的收斂效率,而慣性系數(shù)還是那么大,小鳥(niǎo)們依然會(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ì)有太過(guò)明顯的效果。為什么實(shí)驗(yàn)都是參數(shù)遞減,卻沒(méi)有參數(shù)遞增的實(shí)驗(yàn)?zāi)兀?/p>

    1.慣性系數(shù)W必須遞減,因?yàn)樗鼤?huì)影響鳥(niǎo)群的搜索范圍。

    2.如果C1和C2遞增,那么小鳥(niǎo)的慣性速度V勢(shì)必會(huì)跟著遞增,這與W遞增會(huì)產(chǎn)生相同的效果。

    上面我們通過(guò)一些實(shí)驗(yàn)及理論分析了粒子群算法的特點(diǎn)及其參數(shù)的作用。粒子群作為優(yōu)化算法中模型最簡(jiǎn)單的算法,通過(guò)修改這幾個(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ì)鳥(niǎo)/魚群捕食行為的研究,模擬鳥(niǎo)集群飛行覓食的行為,鳥(niǎo)之間通過(guò)集體的協(xié)作使群體達(dá)到最優(yōu)目的,是一種基于Swarm Intelligence的優(yōu)化方法。它沒(méi)有遺傳算法的“交叉”(Crossover) 和“變異”(Mutation) 操作,它通過(guò)追隨當(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)景:一群鳥(niǎo)在隨機(jī)搜索食物。已知在這塊區(qū)域里只有一塊食物;所有的鳥(niǎo)都不知道食物在哪里;但它們能感受到當(dāng)前的位置離食物還有多遠(yuǎn)。那么找到食物的最優(yōu)策略是什么呢?

            1. 搜尋目前離食物最近的鳥(niǎo)的周圍區(qū)域

            2. 根據(jù)自己飛行的經(jīng)驗(yàn)判斷食物的所在。

            PSO正是從這種模型中得到了啟發(fā),PSO的基礎(chǔ)是 信息的社會(huì)共享

            每個(gè)尋優(yōu)的問(wèn)題解都被想像成一只鳥(niǎo),稱為“粒子”。所有粒子都在一個(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)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wè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)