MOPSO 多目標粒子群優化算法


近年來,基於啟發式的多目標優化技術得到了很大的發展,研究表明該技術比經典方法更實用和高效。有代表性的多目標優化算法主要有NSGA、NSGA-II、SPEA、SPEA2、PAES和PESA等。粒子群優化(PSO)算法是一種模擬社會行為的、基於群體智能的進化技術,以其獨特的搜索機理、出色的收斂性能、方便的計算機實現,在工程優化領域得到了廣泛的應用,多目標PSO(MOPSO)算法應用到了不同的優化領域[9~11],但存在計算復雜度高、通用性低、收斂性不好等缺點。

多目標粒子群(MOPSO)算法是由CarlosA. Coello Coello等在2004年提出來的,詳細參考1。目的是將原來只能用在單目標上的粒子群算法(PSO)應用於多目標上。我們知道原來的單目標PSO流程很簡單:

-->初始化粒子位置(一般都是隨機生成均勻分布)

-->計算適應度值(一般是目標函數值-優化的對象)

-->初始化歷史最優pbest為其本身和找出全局最優gbest

-->根據位置和速度公式進行位置和速度的更新

-->重新計算適應度

-->根據適應度更新歷史最優pbest和全局最優gbest

-->收斂或者達到最大迭代次數則退出算法

速度的更新公式如下:

 

等式右邊有三部分組成。第一部分是慣性量,是延續粒子上一次運動的矢量;第二部分是個體認知量,是向個體歷史最優位置運動的量;第三部分是社會認知量,是粒子向全局最優位置運動的量。

有了速度,則位置更新自然出來了:

 以上是對於多目標PSO算法的介紹。運用到多目標上去的話,出現的問題有以下幾點:

  1. 如何選擇pbest。我們知道對於單目標優化來說選擇pbest,只需要對比一下就可以選擇出哪個較優。但是對於多目標來說兩個粒子的對比,並不能對比出哪個好一些。如果粒子的每個目標都要好的話,則該粒子更優。若有些更好,有些更差的話,就無法嚴格的說哪個好些,哪個差一些。
  2. 如何選擇gbest。我們知道對於單目標在種群中只有一個最優的個體。而對於多目標來說,最優的個體有很多個。而對PSO來說,每個粒子只能選擇一個作為最優的個體(領帶者)。該如何選擇呢?

 MOPSO對於第一個問題的做法是在不能嚴格對比出哪個好一些時隨機選擇一個其中一個作為歷史最優。對於第二個問題,MOPSO則在最優集里面(存檔中)根據擁擠程度選擇一個領導者。盡量選擇不那么密集位置的粒子(在這里用到了網格法)。MOPSO在選擇領導者和對存檔(也可以說是pareto臨時最優斷面)進行更新的時候應用了自適應網格法,詳細參考4。

 

下面是MOPSO算法的步驟:

 (1)初始化群體和Archive 集

給參數賦初值,生成初始群體P1,並把P1 中的非劣解拷貝到Archive 集中得到A1。設當前進化代數為 t,在t 小於總進化代數時完成(2)~(4)的內容。
(2)進化產生下一代群體
設當前進化的粒子 j,在j 小於群體規模時完成1)~3)的內容。

1)計算Archive 集中粒子的密度信息
把目標空間用網格等分成小區域,以每個區域中包含的粒子數作為粒子的密度信息。粒子所在網格中包含的粒子數越多,其密度值越大,反之越小。以二維目標空間最小化優化問題為例,密度信息估計算法的具體實現過程如下:

 

其中,G = M ×M 為目標空間要划分的網格數, Int( ⋅)為取整函數, Fi 1 和Fi 2 為粒子i 的目標函數值。

2)為群體中的粒子Pj,t 在At 中選擇其gBest 粒子gj,tgj,t 粒子的質量決定了MOPSO 算法的收斂性能和非劣解集的多樣性,其選擇依據是Archive 集中粒子的密度信息。具體地,對於Archive 中的粒子,其密度值越低,選擇的概率就越大,反之越小;用Archive 集中的粒子優於群體中的粒子數來評價其搜索潛力,優於群體中的粒子數越多,其搜索潛力越強,反之越弱。算法的具體實現如下:

其中,|At|表示At 包含的粒子數;Aj 用來存放At 中優於粒子Pj,t 的成員,Aj 中密度最小的粒子存放在Gj 中;Density(Ak)計算粒子Ak 的密度估計值;Rand{Gj,t}表示從Gj,t 中隨機選擇一個成員。
3)更新群體中粒子的位置和速度群體中的粒子在gBest 和pBest 的引導下搜索最優解,算法的具體實現如下:

 

其中,Pk,t+1 表示Pt+1 中的第k 個粒子;符號≺􀀻 表示兩矢量沒有優先關系。當Archive 集為空集時,把Pt+1 中的非劣解直接拷貝到Archive 集中;當Archive 集不為空時,只要Pt+1中粒子優於或者獨立於Archive 集中的某個粒子,則把該粒子插入到Archive 集中。
(4)Archive 集的截斷操作
當 Archive 集中的粒子數超過了規定大小時,需要刪除多余的個體以維持穩定的Archive 集規模。對於粒子數多於1個的網格k,按式(1)計算該網格中要刪除的粒子數PN,然后在網格k 中,隨機刪除PN 個粒子。

其中,Grid[k]表示網格 k 中的包含粒子數。
(5)輸出Archive 集中的粒子信息

 

 

 

 

1、MOPSO 算法及其在水庫優化調度中的應用 楊俊傑 ,周建中,方仍存,鍾建偉 計 算 機 工 程

2、對多目標粒子群算法MOPSO的理解 http://blog.csdn.net/ture_2010/article/details/18180183

3、Handling multiple objectives with particle swarm optimization

4、Approximating the non dominated front using the Pareto archived evolution strategy

 

開源軟件包:http://jmetal.github.io/jMetal/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM