第三章 模式建立與演算法設計
3.2 粒子群集最佳化演算法
3.2.1 演算法之架構說明
下圖為一般 PSO 與 GLNPSO 應用於多場站之收送貨問題之方法流程,差別 僅在於更新過程,接下來將針對該流程進行詳細的說明。
圖 3-1 演算法流程圖
是否達到最大運算次數
開始
設定粒子之維度
尋找起始粒子
粒子解碼
計算每個粒子之適應值
改善解的優劣
更新目前個體最佳值與群體最佳值/
區域最佳值與鄰近最佳值
更新每個粒子中每個維度目前的 位置與速度
結束 是 否
是否達到最大運算次數
19
1.設定粒子之維度
對於演算法 PSO 而言,如何透過粒子表達一個解是重要的關鍵之一,一個粒 子的維度代表一個解的長度,由於一個粒子代表著一個解,因此粒子與解之間需 要一些轉換的方式,這兩者之間的轉換稱之為編碼(解→粒子)與解碼(粒子→解)。
而維度的長度越長,需要的轉換時間會越多,則整個演算法的運算時間都會越長,
因此設定一個適當的粒子維度,以及具有解的代表性非常重要,而本研究對於 MDPDP 僅根據顧客訂單數來決定粒子之維度,以避免維度之過長。
根據顧客訂單數,來決定粒子之維度,假設目前有 n 個顧客訂單數,則粒子 的維度為 n 維,而每個粒子都代表著一個解。
2.尋找起始粒子
決定好粒子的維度後,接下來即是找尋起始粒子,也就是起始解。本研究 起始粒子之每個維度之數值皆是介於 0~總車輛數之間之亂數所構成,整數部分 表示該訂單被服務之車輛,亦為車輛編號,當整數部分相同時,小數部分之大小 排序則表示訂單被該車輛服務之優先順序。
3.粒子解碼
由於從粒子本身較難直接看出解的情況,因此需透過解碼的方式得知,解 碼過程如下:
(1) 根據整數值進行分組,相同者為一組,可分成 {0},{1}…{NV-2},{NV-1},{NV}組集合。
(2) 對於各組之數值,根據小數值之大小進行排列,形成顧客訂單之服務順序。
針對各組集合取一最小值放置最前面,再針對各組集合取一次小值置於第 二位,以此類推,直至所有組合內之數值皆排序完成。
(3) 將顧客訂單一一分解成收、送貨兩點(送貨點之編號本研究設定為收貨點+
顧客訂單數)。若顧客訂單編號為 X,則其收-送貨編號為 X-(X+n)。
(4) 對於整數值所代表之車輛編號,找出其對應之場站。
(5) 建構車輛路線,對於各組集合皆可得到:場站-X1-(X1+n)- X2-(X2+n)-…-…-Xn-(Xn+n)-場站之路線。
假設六個顧客訂單、兩個場站之 MDPDP 問題,每個場站所擁有的車輛分別為 3 台,某起始粒子如下:
20
顧客訂單 1 2 3 4 5 6
粒子之每 個維度
2.3 3.5 5.8 2.6 5.1 5.4
A 場站所擁有之車輛編號為:0、1、2 B 場站所擁有之車輛編號為:3、4、5
按照上述解碼方式,根據整數值進行分組,得到以下三組:
(2.3,2.6),(3.5),(5.8,5.1,5.4),然後在每個分組內,按照小數部分由小到大 排列,得到以下結果:(2.3,2.6),(3.5), (5.1,5.4,5.8),將該數值映射到對應 之顧客訂單,並分解成收、送貨,本研究設定之收貨編號等於顧客訂單之編號,
送貨編號為收貨編號加總顧客訂單數,因此對應到各顧客訂單之(收-送)為
(1-7,4-10),(2-8),(5-11,6-12,3-6),以及找出整數值(車輛編號)所對應之場站,
車輛編號為 2,對應之場站為 A;車輛編號為 3 和 5,對應之場站為 B,即可得到 所對應之路徑如下:
第一條路徑:A-1-7-4-10-A 第二條路徑:B-2-8-B
第三條路徑:B-5-11-6-12-3-9-B
由於粒子的維度與顧客的訂單數相當,解碼時只需進行一次排序與取整運算,
在更新粒子與面對大規模問題時,勢必可節省運算時間。
4.計算每個粒子之適應值
對於所得到之初始路線,將其代入目標式( 計算其適應 值,本研究之目標式是以成本最低為目的,則運算後所得到的適應值越低越好。
5.改善解的品質
對解碼後所得到的解,在不違反限制式的條件下針對每一條路線個別使用 2-opt 進行路線內交換,透過這種微調的方式,對所得的解進行改善。
6.更新目前個體最佳值與群體最佳值/區域最佳值與鄰近最佳值
個體最佳值:將每次運算階段的解帶入目標式中計算適應值,目標式的結 果是越小越好,則適應值的結果也是越小越趨近最佳解。而每階段後每個粒子會 判斷此次階段的適應值是否比本身之前所有階段的適應值小,如果比先前更小則 此階段粒子之適應值會更新為粒子之個體最佳值,而每個粒子皆有一個個體最佳
21
值。
群體最佳值:群體最佳值與粒子最佳值之概念相同,主要的差別在於粒子最 佳值是粒子與粒子自己本身的比較,而群體最佳解是粒子與其他所有粒子的比較,
也就是說群體最佳值是至目前為止所有粒子的最佳值,因此只會有一個群體最佳 值。
區域最佳值:乃指數個粒子中最好之個體最佳值,本研究根據過去文獻[19],
以每 5 個粒子為一個區域,找出每區域中較佳之個體最佳值。
鄰近最佳值:對於每個粒子,找出與其他粒子間擁有最大之 FDR 之粒子則 稱為鄰近最佳值,因此每個粒子在每次迭代皆會有一個鄰近最佳值。
7.更新每個粒子中每個維度目前的位置與速度
本研究對於各粒子所設定之初始速度為 0,初始位置即是起始粒子之數值,
往後在進行粒子之更新時,必頇也進行更新位置與速度,更新方式如下:
一般 PSO:
(
GLNPSO:
(
If
If
其中
:第 次運算階段
:第 次運算階段時,第 個粒子的第 個維度之速度
:第 次運算階段時,第 個粒子的第 個維度之速度 :第 次運算階段時之惰性權重值
22
:第 次運算階段時,第 個粒子的第ℎ個維度之位置
:第 次運算階段時,第 個粒子的第ℎ個維度之位置
:第 i 個個體最佳值的第 h 個維度
:到目前為止之群體最佳值的第 h 個維度
:第 i 個粒子的區域最佳解內,粒子在第 h 個維度的位置。
:第 i 個粒子的鄰近最佳解內,粒子在第 h 個維度的位置。
:個體最佳值之常數
:群體最佳值之常數
:區域最佳值之常數
:鄰近最佳值之常數
u:介於 0 與 1 之間的隨機亂數
與 :為粒子之移動範圍