第 3 章 排序優化問題的仿水流優化演算法
3.4 分流移步作業
3.4.2 分流移步
a. 仿連續空間位置指定法(continuous-space-like position assignment method, CPA) 本法將離散的排序問題的解空間視為變動大且不合理解散置的連續整數解空
間,再依循位置向量加上速度向量的方式設定子水流的分流位置。仿速度向量決
步驟 3: 決定水流i分出的第一股子水流的位置向量Ui1。
3 1
15=4− =
u
i 。更新D
={ }
2,7 ,上下限不變。如此計算完所有維度,則可得到新 的可行解。圖3-3. CPA 法定義第一股子水流位置示意
9 4 8 3 7 1 6 2 5 7 4 6 2 9 3 5 1 8 -2 0 -2 -1 2 2 -1 -1 3
V
iX
iX
i~
7 4 6 2 9 3 5 1 8 -2 0 -2 -1 2 2 -1 -1 3
V
i5 9
U
i1X
i7 4 6 2 9 3 5 1 8 -2 0 -2 -1 2 2 -1 -1 3
V
iU
i1 9X
iD = {1, 2, 3, 4, 5, 6, 7, 8, 9}
d
min = 1d
max = 9α= xi9 + vi9 = 11≥dmax
u
i19 = dmax = 9 (a)(b)
(c)
O =〈9 1 3 5 6 4 7 8 2〉
D = {1, 2, 3, 4, 5, 6, 7, 8}
d
min = 1d
max = 8α= xi1 + vi1 = 5∈D
u
i11 =α= 51 2 3 4 5 6 7 8 9 Index
圖3-3. CPA 法定義第一股子水流位置示意(續)
第二股以上之子水流
( ) B
=
rand
β
,令u
ikj ← ,並更新b
β B←
B− { }
bβ 。步驟3.3: 更新
j
← j+1。若j
> ,則更新q k
← k+1到步驟4;否則回到步驟 3.2 進行下一個座標值的設定。步驟 4: 若k
>
ni則結束演算程序,否則回到步驟3 進行下一股水流的位置設定。如圖3-4 為例,依式(3-8)可得速度分量為正的座標集合
A
={
2,5,7,6}
和維度索 引集合I
A ={
1,3,4,7}
,速度分量為負的座標集合B
={
8,1,4,3,9}
和維度索引集合{
2,5,6,8,9}
=
I
b 。開始依序指定第二股子水流的位置分量,首先維度1∈I
A,因此由{
2,5,7,6}
中任意選取一個座標值。此例選取a
4 =6指定給u ,並更新
i21A
={
2,5,7}
。 接著維度2∈I
B,由{
8,1,4,3,9}
中任意選取一個座標值。此例選取b
3 =4指定給u ,
i22更新
B
={
8,1,3,9}
。再來維度3∈I
A,由{
2,5,7}
中任意選取一個座標值。此例選取2 =5
a
指定至u ,更新
i23 A= { } 2,7
。如此依序指定各座標值直到A= Ø
且B= Ø
。依 此產生出的子水流與第一股子水流的位置向量會有一定的歧異度,並且大致上能 保持原有之方向性。計算時間也較為節省。圖3-5 是一種極端狀況,速度分量為正的座標集合 A 中僅有一個座標值 9 其餘 都是負值。因此在決定第二股以上子水流時,座標9 仍會維持在維度 5 上不會變 動。此時速度分量為負的維度集合
I 會有較大的變動幅度。這種極端狀況的發生
B 是由於第一股子水流的流動方向偏向單一維度,若依此流動方向進行移步所產生 的位置會趨向一致性。第二股以上子水流的設計概念是以第一股子水流方向為主 來產生鄰近方向的子水流位置。當第一股子水流的流動方向偏向單一時,延續此 方向的移步也會偏向單一性。CPA 法的第二股子水流產生方式會使第二股子水流 方向產生較大偏移。圖3-4. CPA 法定義第二股以上之子水流位置示意
3 9 7 1 2 6 4 5 8 2 8 7 5 1 4 6 3 9 1 -1 0 4 -1 -2 2 -2 1
X
iU
i1Y
i12 7 5 6 8 1 4 3 9
U
i2 6I
A={1, 3, 4, 7}A={2, 7, 5, 6}
1 0 4 2 -1 -1 -2 -2 1
I
B={2, 5, 6, 8, 9}B={8, 1, 4, 3, 9}
6 4
6 4 5
6 4 5 2 3 8 5 7 1
j=1 ∈ I
AA={2, 7, 5, 6}
j=2 ∈ I
BB={8, 1, 4, 3, 9}
j=3 ∈ I
AA={2, 7, 5}
U
i2U
i2U
i2(a)
(b)
(c)
(d)
(e)
A=Ø B=Ø
a
α=6b
β=4a
α=5圖3-5. 第二股以上子水流位置可能發生的極端狀況
b. 子序列變動法(subtour shuffer method, SS)
物件排序優化問題中,排序解的優劣受物件排序的接續鏈結關係的影響頗大。
因此本法在進行分流作業時,會保留母水流i部份物件間的鏈結關係。作法是只更 動母水流位置向量的一段物件排列序列產生鄰近解,作為子水流的位置向量。本 法最大的特色是不使用速度作為子水流位置設定的依據,而改用一指標向量Pi作 為水流i各維度的座標變動是否可尋得較佳解的指引;亦即,若某個維度 j 的值變 動可使目標值改善,則增加該維度的指標分量
p ,使該維度有較大的機會變動尋
ij得較佳的解。
採用本法時,水流初始指標分量設為0 到 1 的隨機實數,因此指標向量的分 量
( ) j q
U
p
1j = 0,1, =1,2,..., 。 (3-9)此為初始設定,之後隨水流演化,指標向量的分量值將不限於0 到 1 之間。分流 移步時,先依指標分量由大到小排出維度順位序列
1 , , 2 , 1 ,
, 1
2
1 ≥ = −
=
o o o p p
+j q
O
K q ioj ioj K 。 (3-10)此序列在確認前指標分量排名前
n 個的維度索引,供
in 個子水流選定母水流水流
i i-1 -1 -1 -1 8 -1 -1 -1 -1
X
iU
i1Y
i12 8 7 5 1 4 6 3 9 1 7 6 4 9 3 5 2 8
U
i2 3 4 7 8 9 2 1 5 6 1 -4 0 3 8 -2 -5 2 -3Y
i2的位置向量變動中心維度。第 k 股子水流,子水流k,的位置座標只更動母水流i位
步驟 2: 指定水流i分出的第 k 股子水流的位置向量及指標向量。
步驟2.1: 以式(3-11)計算單向延伸長度 l 。再以式(3-12)定義變動範圍的維度 索引集合
I 和位置座標集合
D D= {
d1,
d2, K ,
dD}
。步驟2.2: 令
j
←1。步驟2.3: 若
j
∈ 則由位置座標集合I
D D中隨機選取一個元素d ,
α( ) D
=rand
α
,令u
ikj ←d
α,並更新D←
D− { }
dα ;否則u
ikj ← 。x
ij步驟2.4: 更新
j
← j+1。若j
> 表示各位置分量皆指定完成,進到步驟 2.5,q
否則回到步驟2.3 進行下一個座標值的設定。步驟2.5: 比較子水流 k 與母水流i位置向量的目標函數值,依式(3-13)設定子 水流 k 的指標向量
Z 。
ik步驟 3: 更新
k
← k+1。若k>
ni則結束演算程序,否則回到步驟2 進行下一股水 流的位置設定。以圖3-6 為例。首先依指標向量Pi的分量由大到小排列排出索引序列 6
2 9 8 3 1 4 7
= 5
O
。依式(3-11)設定單向變動範圍l= 2
。則子水流1 以維度o
1 =5 為中心,向左右延伸2 個維度為變動範圍。因此維度索引集合I
D ={
3,4,5,6,7}
,變動範圍內的水流i的座標值集合
D
={
7,1,2,6,4}
。接著依序指定子水流位置向量U
i1的各維度分量。因維度1 和 2 都不屬於
I ,因此直接指定
Du
i11=x
i1=3和u
i12=x
i2 =9。 維度3∈I
D,由D
={
7,1,2,6,4}
中任意選取到d
2 =1指定為u ,同時更新
i13D
={
7,2,6,4}
。 依此方法完成U 的各分量指定。位置向量指定完成後,複製母水流的指標向量
i1P
i為子水流的指標向量
Z 。本例假定子水流的目標函數直比母水流好,則在
i1Z 中的
i1維度
{
3,4,5,6,7}
分量分別增添一個介於0 至 1 的隨機實數值,完成一股子水流的位 置設定。圖3-6. 水流 X分出一股子水流U
3 9 1 5 8
U
i13 9 7 1 2 6 4 5 8 0.4 -0.6 0.2 0.9 2.1 -0.7 1.4 0.1 -0.5
o
1l l
I
D={3, 4, 5, 6, 7}D={7, 1, 2, 6, 4}
X
iP
i3 9 1 6 7 4 2 5 8
U
i13 9 7 1 2 6 4 5 8
X
i3 9 7 1 2 6 4 5 8
X
iD={7, 1, 2, 6, 4}
0.4 -0.6 0.2 0.9 2.1 -0.7 1.4 0.1 -0.5
P
i0.4 -0.6 0.4 1.3 2.8 -0.1 2.3 0.1 -0.5
Z
i1(a)
(b)
(c)
(d)
(e)
if f(Uik) < f(Xi)
+ 0.2 +
0.4 + 0.7 +
0.6 + 0.9
O =〈5 7 4 1 3 8 9 2 6〉
c. 鏈結關係繼承法(link relationship inheritance method, LRI)
兩個。因此候選座標集合以優良座標為優先考量,當無優良座標時,則以尚未排
⎪⎩
{ }
1,2,6=
D
。依式(3-18)和(3-19)建立座標集合H
={ }
9,1 、W
={ }
1,3 。再由式(3-19) 得C
′=Ø,則由式(3-20)得C
={ }
2,6 。則再由C中任選一個座標,本例選出座標6,排入序列中,更新
D
={ }
1,2 。重覆利用鏈結關係找尋下一可排入的座標,直到座標 候選集合 D 中的所有座標都排入序列,即完成子水流的位置向量U 的指定。
i1圖3-8. LRI 法產生水流 i 的子水流位置向量 Ui1範例
5 6 4 2 9 8 1 7 3
X
i 3 9 7 1 2 6 4 5 8X ~
iU
i1 4 5D={1, 2, 3, 5, 6, 7, 8, 9}
H={6, 5}
W={6, 2}
C'=(H-W)∩D={5}
C=C'={5}
U
i1 4 5 8D={1, 2, 3, 6, 7, 8, 9}
H={4, 8}
W={3, 6}
C'=(H-W)∩D={8}
C=C'={8}
U
i1 4 5 8 3 9 7 6D={1, 2, 6}
H={9, 1}
W={1, 3}
C'=Ø
C=D-W={2, 6}
U
i1 4 5 8 3 9 7 6 2 1 (a)(b)
(c)
(d)
(e)
f(X
i) < f(X~i)總結而言:CPA 法仿照水流在連續空間流動的方式,以目前位置加上速度來
2