• 沒有找到結果。

粒子群最佳化演算法

第二章 文獻探討

2.7 粒子群最佳化演算法

1995 由 Kennedy and Eberhart 【36】共同提出粒子群最佳化演算法 (Particle Swarm Optimization, PSO),其主要概念源自於鳥類或魚群覓食的社 會行為。PSO 與 Dorigo 於 1992 【14】提出的蟻群系統都為具有群體智能 (Swarm Intelligence)的演算法,透過群體智能來求解問題。不同的是 AS 主要 依據先前夥伴尋找食物時,所遺留的費洛蒙(Pheromone)濃度選擇行走的路 徑,逐步建構(Constructive)出巢穴與食物間的最短距離。而 PSO 則是透過自 我的經驗與群體的經驗,不斷修正自己的速度與位置,逐漸往食物的所在位 置移動。

PSO 與 John Holland 於 1960【30】提出的基因演算法(Genetic Algorithms, GA)類似,都屬於進化計算技術(Evolutionary Computation),一開始先產生一 組初始解,藉由疊代過程來尋找最佳解。GA 其主要概念是根據達爾文所提

「進化論」,依循著自然界「物競天擇,適者生存」發展而來,主要運用三種 基本運算,分別為複製(Reproduction)、交配(Crossover)及突變(Mutation),來 模仿自然界的生物演化過程,藉由世代的演化以找出最佳解。而 PSO 沒有交 配及突變較 GA 簡單,亦不像 GA 有著許多的參數需要設定且程式撰寫較為 複雜,不過卻有著較佳的全域搜尋能力【36、37、19】。

由於粒子群最佳化演算法主要為模擬鳥群覓食的行為,因此假設有一群 鳥在某一個區域尋找食物,此區域只有一個地方有食物,而所有的鳥類並不 知道食物在哪,但是他們知道自己離食物還有多遠,因此尋找食物的最簡單 的方法就是搜尋目前離食物最近的鳥的周圍區域【55】。所以鳥群便是藉由各 自的最佳位置與群體中最佳位置,不斷修正搜尋的方向,直到找到食物。

在最佳化問題當中,每一隻鳥即稱為一個「粒子」(Particle),亦代表一 組可行解,透過最佳化問題的適應函數(Fitness Function)計算每個粒子所對應 的適應值(Fitness Value),以瞭解其所在位置好壞。以下為各相關變數之定義:

i 表示第 i 個粒子。

d 表示第 d 個空間維度,d=1,2,…,D。

Xi表示第 i 個粒子的位置,Xi=(xi1, xi2,…,xiD)。

Pi表示第 i 個粒子先前最佳的位置,Pi=(pi1, pi2,…,piD)。

Pg表示群體粒子中最佳位置,Pg=(pg1, pg2,…,pgD)。

Vi表示第 i 個粒子的速度,Vi=(vi1, vi2,…,viD)。

粒子的運算則根據以下方程式:

) x p (

* ) ( Rand

* c ) x p (

* ) ( rand

* c v

vnewidoldid1 idoldid2 gdoldid (2.6)

new id old id new

id

x v

x  

(2.7)

上述公式中 rand( ),Rand( )為兩個介於[0,1]的隨機變數。c1及 c2為正數的 學習係數。

x

oldid 代表目前這個世代所在位置,

x

idnew則代表下一個世代新的位 置,

v

oldid 代表目前這個世代移動速度,

v

idnew則代表下一個世代新的移動速度。

從公式(2.6)中可看出粒子主要依據三個因子不斷更新搜尋方向,以搜尋最佳 解,第一個因子為自己目前前進的方向(

v

idold),第二個因子為粒子利用自己先 前的最佳經驗(p )與目前位置的差,修正下次搜尋的方向,此部份也可視為id 粒子的認知(Cognition)模式,第三個因子為粒子利用群體的最佳經驗(

p

gd)與 目前位置的差,修正下次搜尋的方向,此部份則視為粒子的社會化(Social)模 式。有了新的搜尋方向,粒子便可透過公式(2.7)從目前位置移動到新的位置,

如此經過數次迭代後,粒子即可能搜尋到最佳解。公式中此三因子如何產生 新的移動速度並移動到新的位置,可由圖 2.7 得知。

圖 2.7 粒子公式示意圖

在 PSO 運算中,

v

id的大小將會影響粒子的搜尋範圍,必須將其限制合 理範圍,設定其最大移動速度

v

max,而此限制主要目的有三【35】:(1)避免 計算溢位(Overflow);(2)為了真實模擬人類學習與態度轉變變化的增加;(3) 最大速度決定了搜尋求解空間的間隔尺寸(Granularity)。

PSO 提出至今,除了廣泛的應用於各領域,亦有學者為改善其求解效率 或求解品質,紛紛提出各種修改模型,最先是由 Shi 和 Eberhart 於 1998 所 提出慣性權重(Inertia Weight, w)【49】底下為慣性權重公式:

) x p (

* ) ( Rand

* c ) x p (

* ) ( rand

* c v

* w

vnewidoldid1 idoldid2 gdoldid (2.8)

new id old id new

id

x v

x  

(2.9)

主要目的是為了藉由導入慣性權重,控制粒子上個世代的速度對目前的 速度影響,以平衡 PSO 全域搜尋與區域搜尋能力,而

w

的特性就像模擬退火 法(Simulated Annealing;SA)中的退火參數(Cooling Parameter),能使求解時趨 於收斂,可使求解的過程中更快找到全域的最佳解,Shi and Eberhart 於文中 更說明了

w

在介於 0.9 到 1.2 時,有較高的機會可以找到全域最佳解,文中 亦提出線性遞減的慣性權重,於搜尋初期時,能賦予粒子較廣泛的搜尋空間,

使其有較佳的全域搜尋能力,隨著迭代數的增加以線性的方式降低慣性權

old

x

id

pid

p

gd old

v

id

new

v

id

new

x

id

重,縮小粒子的搜尋範圍,提昇粒子區域搜尋能力,能避免粒子於最佳解附 近,飛行過頭錯失最佳解。後續兩位學者更針對慣性權重,應用於其他非線 性函數問題上【48、50】,提出較好的經驗設定,而慣性權重法也是後續學者,

最為廣泛使用的方法。

PSO 發展至今雖只經過十多年,但因有許多學者的投入,已應用於許多 領域之中,起初 Kennedy and Eberhart【36】便將 PSO 應用於非線性函數問 題 與 類 神 經 網 路 (Neural Network, NN) 中 , 於 類 神 經 方 面 主 要 為 解 決 XOP(Exclusive-Or)問題。Al-Awami et. al.【7】主要探討整合型電力潮流控制 器 (Unified Power Flow Controller; UPFC) 與電力系統穩定控制器 (Power System Stabilizer; PSS) 的設計,利用 PSO 尋找控制器的最佳參數設定。Kao et al.【34】將 PSO 應用於資料分群 (Data Clustering) 上,並結合廣為應用於資 料分群的 K-means 演算法與 Nelder–Mead simplex 提出 K–NM–PSO 演算法。

亦有不少學者將 PSO 應用在非連續的問題中,Hu et al.【32】提出修改 型的 PSO,將粒子與速度更新機制都重新定義,以解決 n 個皇后問題 (N-Queens Problem) ,並加入一個突變因子,避免求解過程中落入區域解。

Liao et al.【38】利用間斷型 PSO 將粒子與速度重新定義,以求解排程問題 (Flowshop Scheduling Problems) ,更與兩種基因演算法比較,結果顯示 PSO 能找出較好的結果。