• 沒有找到結果。

粒子群集最佳化演算法

第三章 模式建立與演算法設計

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 之間的隨機亂數

:為粒子之移動範圍

8.是否達到最大運算次數

判斷搜尋次數是否已達到所設定之最大搜尋次數,如果是則結束搜尋,否 則回到步驟「粒子解碼」持續進行演算至達到最大搜尋次數。

相關文件