❶ 請教粒子群優化演算法和最小二乘法的優缺點
可能知識有限,實在沒有看出什麼相同點。對於粒子群而言,每個粒子以及系統都存在一定的規律,具體一點說就是薛定諤方程的范疇下。而對於蟻群來說,我想,應該涉及到生物學的范疇吧,涉及到蟻群的生活方式,交流方式,或許還要涉及到博弈論、統籌學方面的知識,這方面完全不懂了。
❷ 什麼是粒子群演算法
粒子群演算法介紹(摘自http://blog.sina.com.cn/newtech)
優化問題是工業設計中經常遇到的問題,許多問題最後都可以歸結為優化問題. 為了解決各種各樣的優化問題,人們提出了許多優化演算法,比較著名的有爬山法、遺傳演算法等.優化問題有兩個主要問題:一是要求尋找全局最小點,二是要求有較高的收斂速度. 爬山法精度較高,但是易於陷入局部極小. 遺傳演算法屬於進化演算法( Evolutionary Algorithms) 的一種,它通過模仿自然界的選擇與遺傳的機理來尋找最優解. 遺傳演算法有三個基本運算元:選擇、交叉和變異. 但是遺傳演算法的編程實現比較復雜,首先需要對問題進行編碼,找到最優解之後還需要對問題進行解碼,另外三個運算元的實現也有許多參數,如交叉率和變異率,並且這些參數的選擇嚴重影響解的品質,而目前這些參數的選擇大部分是依靠經驗.1995 年Eberhart 博士和kennedy 博士提出了一種新的演算法;粒子群優化(Partical Swarm Optimization -PSO) 演算法 . 這種演算法以其實現容易、精度高、收斂快等優點引起了學術界的重視,並且在解決實際問題中展示了其優越性.
粒子群優化(Partical Swarm Optimization - PSO) 演算法是近年來發展起來的一種新的進化演算法( Evolu2tionary Algorithm - EA) .PSO 演算法屬於進化演算法的一種,和遺傳演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質. 但是它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover) 和「變異」(Mutation) 操作. 它通過追隨當前搜索到的最優值來尋找全局最優 .
粒子群演算法
1. 引言
粒子群優化演算法(PSO)是一種進化計算技術(evolutionary computation),有Eberhart博士和kennedy博士發明。源於對鳥群捕食的行為研究
PSO同遺傳演算法類似,是一種基於疊代的優化工具。系統初始化為一組隨機解,通過疊代搜尋最優值。但是並沒有遺傳演算法用的交叉(crossover)以及變異(mutation)。而是粒子在解空間追隨最優的粒子進行搜索。詳細的步驟以後的章節介紹
同遺傳演算法比較,PSO的優勢在於簡單容易實現並且沒有許多參數需要調整。目前已廣泛應用於函數優化,神經網路訓練,模糊系統控制以及其他遺傳演算法的應用領域
2. 背景: 人工生命
"人工生命"是來研究具有某些生命基本特徵的人工系統. 人工生命包括兩方面的內容
1. 研究如何利用計算技術研究生物現象
2. 研究如何利用生物技術研究計算問題
我們現在關注的是第二部分的內容. 現在已經有很多源於生物現象的計算技巧. 例如, 人工神經網路是簡化的大腦模型. 遺傳演算法是模擬基因進化過程的.
現在我們討論另一種生物系統- 社會系統. 更確切的是, 在由簡單個體組成的群落與環境以及個體之間的互動行為. 也可稱做"群智能"(swarm intelligence). 這些模擬系統利用局部信息從而可能產生不可預測的群體行為
例如floys 和 boids, 他們都用來模擬魚群和鳥群的運動規律, 主要用於計算機視覺和計算機輔助設計.
在計算智能(computational intelligence)領域有兩種基於群智能的演算法. 蟻群演算法(ant colony optimization)和粒子群演算法(particle swarm optimization). 前者是對螞蟻群落食物採集過程的模擬. 已經成功運用在很多離散優化問題上.
粒子群優化演算法(PSO) 也是起源對簡單社會系統的模擬. 最初設想是模擬鳥群覓食的過程. 但後來發現PSO是一種很好的優化工具.
3. 演算法介紹
如前所述,PSO模擬鳥群的捕食行為。設想這樣一個場景:一群鳥在隨機搜索食物。在這個區域里只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。
PSO從這種模型中得到啟示並用於解決優化問題。PSO中,每個優化問題的解都是搜索空間中的一隻鳥。我們稱之為「粒子」。所有的例子都有一個由被優化的函數決定的適應值(fitness value),每個粒子還有一個速度決定他們飛翔的方向和距離。然後粒子們就追隨當前的最優粒子在解空間中搜索
PSO 初始化為一群隨機粒子(隨機解)。然後通過疊代找到最優解。在每一次疊代中,粒子通過跟蹤兩個"極值"來更新自己。第一個就是粒子本身所找到的最優解。這個解叫做個體極值pBest. 另一個極值是整個種群目前找到的最優解。這個極值是全局極值gBest。另外也可以不用整個種群而只是用其中一部分最為粒子的鄰居,那麼在所有鄰居中的極值就是局部極值。
在找到這兩個最優值時, 粒子根據如下的公式來更新自己的速度和新的位置
v[] = v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a)
present[] = persent[] + v[] (b)
v[] 是粒子的速度, persent[] 是當前粒子的位置. pbest[] and gbest[] 如前定義 rand () 是介於(0, 1)之間的隨機數. c1, c2 是學習因子. 通常 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
在每一維粒子的速度都會被限制在一個最大速度Vmax,如果某一維更新後的速度超過用戶設定的Vmax,那麼這一維的速度就被限定為Vmax
4. 遺傳演算法和 PSO 的比較
大多數演化計算技術都是用同樣的過程
1. 種群隨機初始化
2. 對種群內的每一個個體計算適應值(fitness value).適應值與最優解的距離直接有關
3. 種群根據適應值進行復制
4. 如果終止條件滿足的話,就停止,否則轉步驟2
從以上步驟,我們可以看到PSO和GA有很多共同之處。兩者都隨機初始化種群,而且都使用適應值來評價系統,而且都根據適應值來進行一定的隨機搜索。兩個系統都不是保證一定找到最優解
但是,PSO 沒有遺傳操作如交叉(crossover)和變異(mutation). 而是根據自己的速度來決定搜索。粒子還有一個重要的特點,就是有記憶。
與遺傳演算法比較, PSO 的信息共享機制是很不同的. 在遺傳演算法中,染色體(chromosomes) 互相共享信息,所以整個種群的移動是比較均勻的向最優區域移動. 在PSO中, 只有gBest (or lBest) 給出信息給其他的粒子,這是單向的信息流動. 整個搜索更新過程是跟隨當前最優解的過程. 與遺傳演算法比較, 在大多數的情況下,所有的粒子可能更快的收斂於最優解
5. 人工神經網路 和 PSO
人工神經網路(ANN)是模擬大腦分析過程的簡單數學模型,反向轉播演算法是最流行的神經網路訓練演算法。進來也有很多研究開始利用演化計算(evolutionary computation)技術來研究人工神經網路的各個方面。
演化計算可以用來研究神經網路的三個方面:網路連接權重,網路結構(網路拓撲結構,傳遞函數),網路學習演算法。
不過大多數這方面的工作都集中在網路連接權重,和網路拓撲結構上。在GA中,網路權重和/或拓撲結構一般編碼為染色體(Chromosome),適應函數(fitness function)的選擇一般根據研究目的確定。例如在分類問題中,錯誤分類的比率可以用來作為適應值
演化計算的優勢在於可以處理一些傳統方法不能處理的例子例如不可導的節點傳遞函數或者沒有梯度信息存在。但是缺點在於:在某些問題上性能並不是特別好。2. 網路權重的編碼而且遺傳運算元的選擇有時比較麻煩
最近已經有一些利用PSO來代替反向傳播演算法來訓練神經網路的論文。研究表明PSO 是一種很有潛力的神經網路演算法。PSO速度比較快而且可以得到比較好的結果。而且還沒有遺傳演算法碰到的問題
這里用一個簡單的例子說明PSO訓練神經網路的過程。這個例子使用分類問題的基準函數(Benchmark function)IRIS數據集。(Iris 是一種鳶尾屬植物) 在數據記錄中,每組數據包含Iris花的四種屬性:萼片長度,萼片寬度,花瓣長度,和花瓣寬度,三種不同的花各有50組數據. 這樣總共有150組數據或模式。
我們用3層的神經網路來做分類。現在有四個輸入和三個輸出。所以神經網路的輸入層有4個節點,輸出層有3個節點我們也可以動態調節隱含層節點的數目,不過這里我們假定隱含層有6個節點。我們也可以訓練神經網路中其他的參數。不過這里我們只是來確定網路權重。粒子就表示神經網路的一組權重,應該是4*6+6*3=42個參數。權重的范圍設定為[-100,100] (這只是一個例子,在實際情況中可能需要試驗調整).在完成編碼以後,我們需要確定適應函數。對於分類問題,我們把所有的數據送入神經網路,網路的權重有粒子的參數決定。然後記錄所有的錯誤分類的數目作為那個粒子的適應值。現在我們就利用PSO來訓練神經網路來獲得盡可能低的錯誤分類數目。PSO本身並沒有很多的參數需要調整。所以在實驗中只需要調整隱含層的節點數目和權重的范圍以取得較好的分類效果。
6. PSO的參數設置
從上面的例子我們可以看到應用PSO解決優化問題的過程中有兩個重要的步驟: 問題解的編碼和適應度函數
PSO的一個優勢就是採用實數編碼, 不需要像遺傳演算法一樣是二進制編碼(或者採用針對實數的遺傳操作.例如對於問題 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接編碼為 (x1, x2, x3), 而適應度函數就是f(x). 接著我們就可以利用前面的過程去尋優.這個尋優過程是一個疊代過程, 中止條件一般為設置為達到最大循環數或者最小錯誤
PSO中並沒有許多需要調節的參數,下面列出了這些參數以及經驗設置
粒子數: 一般取 20 – 40. 其實對於大部分的問題10個粒子已經足夠可以取得好的結果, 不過對於比較難的問題或者特定類別的問題, 粒子數可以取到100 或 200
粒子的長度: 這是由優化問題決定, 就是問題解的長度
粒子的范圍: 由優化問題決定,每一維可是設定不同的范圍
Vmax: 最大速度,決定粒子在一個循環中最大的移動距離,通常設定為粒子的范圍寬度,例如上面的例子里,粒子 (x1, x2, x3) x1 屬於 [-10, 10], 那麼 Vmax 的大小就是 20
學習因子: c1 和 c2 通常等於 2. 不過在文獻中也有其他的取值. 但是一般 c1 等於 c2 並且范圍在0和4之間
中止條件: 最大循環數以及最小錯誤要求. 例如, 在上面的神經網路訓練例子中, 最小錯誤可以設定為1個錯誤分類, 最大循環設定為2000, 這個中止條件由具體的問題確定.
全局PSO和局部PSO: 我們介紹了兩種版本的粒子群優化演算法: 全局版和局部版. 前者速度快不過有時會陷入局部最優. 後者收斂速度慢一點不過很難陷入局部最優. 在實際應用中, 可以先用全局PSO找到大致的結果,再有局部PSO進行搜索.
另外的一個參數是慣性權重, 由Shi 和Eberhart提出, 有興趣的可以參考他們1998年的論文(題目: A modified particle swarm optimizer)
❸ 遺傳演算法、粒子群演算法、蟻群演算法,各自優缺點和如何混合請詳細點 謝謝
遺傳演算法適合求解離散問題,具備數學理論支持,但是存在著漢明懸崖等問題。
粒子群演算法適合求解實數問題,演算法簡單,計算方便,求解速度快,但是存在著陷入局部最優等問題。
蟻群演算法適合在圖上搜索路徑問題,計算開銷會大。
要將三種演算法進行混合,就要針對特定問題,然後融合其中的優勢,比如將遺傳演算法中的變異運算元加入粒子群中就可以形成基於變異的粒子群演算法。
❹ 分析標准粒子群演算法的不足及改進的方法
一個以上的目標,以優化
相對傳統的多目標優化方法在解決多目標問題,PSO具有很大的優勢。首先,PSO演算法和高效的搜索功能,有利於在這個意義上,多目標的最優解;其次,PSO代表了整個解決方案的人口集固有的並行性,同時搜索多個非劣解,所以容易搜索多個Pareto最佳的解決方案;此外,PSO通用的適合處理所有類型的目標函數和約束條件,PSO容易與傳統相結合的方法,和然後提出了有效的方法來解決一個具體的問題。 PSO本身,為了更好地解決多目標優化問題,必須解決的問題的全局最優粒子和個人選擇的最優粒子。為全局最優粒子的選擇,一方面,該演算法具有更好的收斂速度,另一方面帕累托邊界分散體的溶液中。如果在最佳的單個顆粒的選擇,需要較少的計算復雜性,並且是僅由較少數量的比較非
劣解更新。迄今為止,基於PSO的多目標優化,主要有以下
思路:
(1)向量法和加權方法。文獻[20]的固定權重法,自適應權重法和向量評估方法的第一次,PSO解決MO問題。然而,對於一個給定的優化問題,權重的方法通常是很難獲得一組合適的權重向量評價方法MO的問題是,往往無法得到滿意的解決方案。
(2)基於Pareto方法。 [21]帕累托排序機制和PSO相結合,處理的問題,多目標優化,Pareto排序方法來選擇一組的精英,和輪盤賭選擇全局最優粒子。雖然輪盤賭選擇機制,使所有的帕累托個人選擇的概率是一樣的,但實際上只有少數人的選擇的概率就越大,因此不利於保持種群多樣性;文獻[22]通過引入在PSO帕累托競爭機制,選擇全局最優粒子的顆粒知識基礎。候選個人隨機選自人口比較集進行比較,以確定非劣解,該演算法的成功取決於比較集的大小的參數設置。如果這個參數是太小了,選擇的過程,從人口的非劣效性個人可能是太小了,如果這個參數是太大,它可能會出現過早收斂。
(3)距離的方法。 [23],被分配的各個的當前的解決方案之間的距離的基礎上Pa2reto的解決方案,其適應值,以便選擇全局最優粒子。隨著距離的方法需要被初始化潛在的解決方案,如果初始電位值太大,不同的解決方案,以適應不同的值並不顯著。這將導致在選擇壓力太小或個別均勻分布,導致在PSO演算法收斂速度非常慢。
(4)附近的「。文獻[24]提出了動態鄰域的選擇策略,為優化目標的定義,目標,和其他所有的目標定義的目標附近,然後選擇全局最優粒子的動態鄰域的策略,但該方法更敏感的目標函數的優化目標選擇和附近的排序。
(5)多組法。文獻[25]的人口劃分成多個子群,以及每個子群PSO演算法,通過搜索Pareto最優解的各種子群之間的信息交流。然而,由於需要增加的粒子的數量增加的計算量。
(6)非排名的方法。 [26]使用非主導的排序選擇全局最優的粒子。整個人口,粒子的個人最好成績粒子和它的後代,有利於提供一個適當的選擇壓力,小生境技術,以增加種群多樣性。比較所有粒子的個人最好成績顆粒在整個人群遺傳給後代,但是,由於其本身的性質是不利於人口的多樣性,容易形成早熟。此外,文獻[27]最大最小策略,博弈論引入PSO解決多MO。最大最小策略,以確定粒子的適應值,可以判斷帕累托最優的解決方案,而不需要集群和小生境技術。
2約束優化
在最近幾年也取得了一些進展,PSO演算法在約束最優化。基於PSO-的約束優化工作分為兩種類型:①罰函數法;②設計特定的進化操作或約束修正系數。 [28]採用罰函數法,採用非固定多段映射罰函數將約束的優化問題,然後利用PSO解決問題的轉換後,模擬結果表明,該演算法相對進化策略和遺傳演算法的優勢,但罰函數的設計過於復雜,不利於解決;文獻[29],一個可行的解決方案,保留策略處理約束,即,一方面要更新所有的顆粒的存儲區域中到只保留可行的解決方案,在另一方面在初始化階段的所有的顆粒從一個可行的解決方案的空間值?初始的可行的解決方案空間,然而,是難以確定的很多問題,文獻[30 ]提出的多層信息共享策略粒子群與約束原則來處理,根據約束矩陣多層Pareto排序機制的微粒,從而一些微粒,以確定個人的搜索方向的其餘。
3離散優化為離散優化解決方案空間是離散點的集合,而不是連續PSO解決離散優化問題,必須予以糾??正的速度和位置更新公式,或變形。基於PSO的離散優化可分為以下三類:
速度(1)的位置變化的概率。 [31]首先提出了離散二進制PSO。二進制粒子的位置編碼器,Sigmoid函數,速度約束在[0,1],代表粒子的概率立場;法[32] [31]在文獻
提高的地址更換安排。安排更換顆粒,速度是指根據兩個粒子的相似性,以確定粒子的位置變化也引入突變操作,以防止陷入局部極小的最優粒子的概率。
(2)重新定義的PSO的操作。 [33]通過重新定義粒子的位置,速度,和他們的加法和減法乘法運算,提出了一種新的離散粒子群,並為解決旅行商問題。雖然該演算法是有效的,但它提供了一種新的思維方式求解組合優化問題。
(3)連續PSO離散的情況下。 [34]採用連續PSO,解決分布式計算機任務的分配問題。於實數被轉換為一個正整數,和符號的實數部分和小數部分的
分除去。結果表明,在溶液中的質量和速度的方法的演算法是優於遺傳演算法。
4動態優化
在許多實際工程問題,優化環境是不確定的,或動態。因此,優化演算法必須有能力與環境的動態變化做出相應的調整,以最佳的解決方案,該演算法具有一定的魯棒性。 [35]首次提出了PSO跟蹤動態系統[36]提出了自適應PSO自動跟蹤動態系統的變化,種群粒子檢測方法和粒子重新初始化PSO系統變化的跟蹤能力增強;文獻[37]迅速變化的動態環境中,在粒子速度更新公式的變化條目的增加,消除了需要在環境中的變化來檢測,可以跟蹤環境處理。雖然該研究少得多,但不容質疑的,是一個重要的研究內容。
粒子群演算法的MATLAB程序
初始化粒子群;
對於每個粒子
計算他們的身體健康;
如果(健身優於粒子的歷史最好值)
歷史最好的個人裨錫更新;
如果選擇當前粒子群粒子;(當前的最優粒子比歷史最好粒子組)
與目前最好的粒子更新PG組;對於每個粒子
更新粒子類型①速度;
更新的位置粒子類型②;
完
雖然還沒有達到最大迭代次數,或不符合的最小誤差。
❺ 粒子群演算法的優點
第一,演算法規則簡單,容易實現,在工程應用中比較廣;第二,收斂速度快,且有很多措施可以避免陷入局部最優;第三,可調參數少,並且對於參數的選擇已經有成熟的理論研究成果,見Eberhart的論文。
❻ 粒子群優化演算法和多模態優化演算法有什麼區別
摘 要:,粒子群演算法據自己的速度來決定搜索過程,只有最優的粒子把信息給予其他的粒子,整個搜索更新過程是跟隨當前最優解的過程,所有的粒子還可以更快的收斂於最優解。由於微粒群演算法簡單,容易實現,與其它求解約束優化問題的方法相比較,具有一定的優勢。實驗結果表明,對於無約束的非線性求解,粒子群演算法表現出較好的收斂性和健壯性。
關鍵詞:粒子群演算法;函數優化;極值尋優
0 引言
非線性方程的求根問題是多年來數學家努力解決的問題之一。長期以來,人們已找出多種用於解決方程求根的方法,例如牛頓法、弦割法、拋物線法等。然而,很多傳統的方法僅能運用於相應的小的問題集,推廣性相對較差。對於一個現實世界中的優化問題,必須嘗試很多不同的方法,甚至要發明相應的新的方法來解決,這顯然是不現實的。我們需要另外的方法來克服這樣的困難。
粒子群演算法是一種現代啟發式演算法,具有推廣性強、魯棒性高等特點[1]。該演算法具有群體智能、內在並行性、迭代格式簡單、可快速收斂到最優解所在區域等優點[2]。本文採用粒子群演算法,對函數的極值進行尋優計算,實現了對函數的極值求解。
1 粒子群演算法
1.1 基本原理
粒子群演算法(PSO)是一種基於群體的隨機優化技術,它的思想來源於對鳥群捕食行為的研究與模擬。粒子群演算法與其它基於群體的進化演算法相類似,選用「群體」和「進化」的概念,按照個體的適應度值進行操作,也是一種基於迭代的尋優技術。區別在於,粒子群演算法中沒有交叉變異等進化運算元,而是將每個個體看作搜索空間中的微粒,每個微粒沒有重量和體積,但都有自己的位置向量、速度向量和適應度值。所有微粒以一定的速度飛行於搜索空間中,其中的飛行速度是由個體飛行經驗和群體的飛行經驗動態調整,通過追蹤當前搜索到的最優值來尋找全局最優值。
1.2 參數選擇
粒子群演算法需要修改的參數很少,但對參數的選擇卻十分敏感。El-Gallad A, El-Hawary M, Sallam A, Kalas A[3]主要對演算法中的種群規模、迭代次數和粒子速度的選擇方法進行了詳細分析,利用統計方法對約束優化問題的求解論證了這 3 個參數對演算法性能的影響,並給出了具有一定通用性的3 個參數選擇原則[4]。
種群規模:通常根據待優化問題的復雜程度確定。
最大速度:決定粒子在一次迭代中的最大移動距離,通常設定為不超過粒子的范圍寬度。
加速常數:加速常數c1和c2通常是由經驗值決定的,它代表粒子向pbest和gbest靠攏的加速項的權重。一般取值為:c1=c2=2。
中止條件:達到最大迭代次數或得到最小誤差要求,通常要由具體問題確定。
慣性權重:慣性權重能夠針對待優化問題調整演算法的局部和全局搜索能力。當該值較大時有利於全局搜索,較小時有利於局部搜索。所以通常在演算法開始時設置較大的慣性權重,以便擴大搜索范圍、加快收斂。而隨著迭代次數的增加逐漸減小慣性權重的值,使其進行精確搜索,避免跳過最優解。
1.3 演算法步驟
PSO演算法步驟如下:
Step1:初始化一個規模為 m 的粒子群,設定初始位置和速度。
初始化過程如下:
(1)設定群體規模m;
(2)對任意的i,s,在[-xmax, xmax]內均勻分布,產生初始位置xis;
(3)對任意的i,s,在[-vmax, vmax]內均勻分布,產生速度vis;
(4)對任意的i,設yi=xi,保存個體。
Step2:計算每個粒子的適應度值。
Step3:對每個粒子的適應度值和得到過的最好位置pis的適應度值進行比較,若相對較好,則將其作為當前的最好位置。
Step4:對每個粒子的適應度值和全局得到過的最好位置pgs的適應度值進行比較,若相對較好,則將其作為當前的全局最好位置。
Step5:分別對粒子的所在位置和速度進行更新。
Step6:如果滿足終止條件,則輸出最優解;否則,返回Step2。
1.4 粒子群演算法函數極值求解
粒子群演算法優化是計算機智能領域,除蟻群演算法外的另一種基於群體智能的優化演算法。粒子群演算法是一種群體智能的煙花計算技術。與遺傳演算法相比,粒子群演算法沒有遺傳演算法的選擇(Selection)、交叉(Crossover)、變異(Mutation)等操作,而是通過粒子在解空間追隨最優的粒子進行搜索。
粒子群演算法流程如圖所示:
粒子群為由n個粒子組成的種群X = (X1,X2,X3,…Xn).
第i個粒子表示一個D維向量Xi = (X1,X2,X3,…XD)T.
第i個粒子的速度為Vi = (Vi1,Vi2,Vi3,…ViD)T.
個體極值為Pi = (Pi1,Pi2,Pi3,…PiD)T.
全局極值為Pg = (Pg1,Pg2,Pg3,…PgD)T.
速度更新為,式中,c1和c2為其兩個學習因子的參數值;r1和r2為其兩個隨機值。
位置更新為.
2 粒子群演算法應用舉例
2.1 實驗問題
這是一個無約束函數的極值尋優,對於Ackley函數,
.
其中c1=20,e=2. 71289。
2.2 實驗步驟
對於Ackley函數圖形,選取一個凹峰進行分析,程序運行結果如圖所示。
圖1 Ackley函數圖形
可以看出,選取區間內的Ackley函數圖形只有一個極小值點。因此,對於該段函數進行尋優,不會陷入局部最小。採用粒子群演算法對該函數進行極值尋優。
首先,進行初始化粒子群,編寫的MATLAB代碼如下:
% 初始化種群
for i=1:sizepop
x1 = popmin1 (popmax1-popmin1)*rand;
% 產生隨機個體
x2 = popmin2 (popmax2-popmin2)*rand;
pop(i,1) = x1; % 保存產生的隨機個體
pop(i,2) = x2;
fitness(i) = fun([x1,x2]); % 適應度值
V(i,1) = 0; % 初始化粒子速度
V(i,2) = 0;
end
程序運行後所產生的個體值為:
表1 函數個體值
然後,根據待尋優的目標函數,計算適應度值。待尋優的目標函數為:
function y = fun(x)
y=-20*exp(-0.2*sqrt((x(1)^2x(2)^2)/2))-exp((cos(2*pi*x(1)) cos(2*pi*x(2)))/2) 20 2.71289;
根據每一組個體,通過目標函數,得到的適應度值為:
表2 函數適應度值
搜索個體最優極值,即搜索最小的適應度值,我們可利用MATLAB繪圖將所有個體的適應度值繪成plot圖查看相對最小值。
圖3 函數適應度plot圖
從圖中可看出,當個體=20時,得到相對最小值,在程序中,將其保存下來。
之後進行迭代尋優,直到滿足終止條件。
最後,得到的最優值為:
圖4 MATLAB運行得到結果
迭代後得到的運行結果圖如下:
圖5 迭代曲線圖
2.3 實驗結果
通過圖5中可看出,該函數的尋優是收斂的,最優個體和實際情況較吻合。因此,採用粒子群演算法進行函數極值尋優,快速、准確且魯棒性較好。
3 結論
本文闡述了粒子群演算法求解最化問題的過程,實驗結果表明了該演算法對於無約束問題的可行性。與其它的進化演算法相比,粒子群演算法容易理解、編碼簡單、容易實現。但是參數的設置對於該演算法的性能卻有很大的影響,例如控制收斂,避免早熟等。在未來的工作中,將努力於將其它計算智能演算法或其它優化技術應用於粒子群演算法中,以進一步提高粒子群演算法的性能。
❼ 遺傳演算法、粒子群、模擬退火相比於普通的蒙特卡洛演算法有什麼優勢他們相互的優缺點都是什麼
他們有類似之處,但差別也不小。
蒙特卡洛演算法是數值計算方法,原理是利用隨機數來解決計算問題。與它對應的是確定性演算法。也就是說該種演算法屬於隨機演算法,得到的解是近似解。
而遺傳演算法、粒子群、模擬退火雖然也是隨機近似演算法,但這三種都是仿生智能演算法,且比蒙特卡洛演算法要復雜,應用的領域也不太相同。
顯然,蒙特卡洛演算法很輕巧,求解問題更快速。
❽ 模擬退火演算法和粒子群演算法的優缺點有那些具體點,謝啦
他們有類似之處,但差別也不小。
蒙特卡洛演算法是數值計算方法,原理是利用隨機數來解決計算問題。與它對應的是確定性演算法。也就是說該種演算法屬於隨機演算法,得到的解是近似解。
而遺傳演算法、粒子群、模擬退火雖然也是隨機近似演算法,但這三種都是仿生智能演算法,且比蒙特卡洛演算法要復雜,應用的領域也不太相同。
顯然,蒙特卡洛演算法很輕巧,求解問題更快速。