第三章 強化親代選擇機制之平行化演算法 ESP-NSGA-III
3.4 演算法平行化機制
3.4 演算法平行化機制
NSGA-III 使用經權重向量投影至超平面上的參考點來牽引族群在目標空間 中的分布狀況,我們以島嶼模型將演算法平行化,嘗試各種不同的權重向量切割 方式,使得各個子族群能夠朝著不同方向演化,並藉由適度地遷徙來強化各子族 群的發展,希望能在不降低演算法求解效能的同時,還能加快演算法的執行時 間。
3.4.1 各種權重向量分配法
我們嘗試了三種簡易的切割方法來決定各個子族群的權重向量:
(一) 依序分配法 (Iterative Distribution, P-ID) (圖 13)
(二) 依序整批分配法 (Iterative Clustering Distribution, P-ICD) (圖 14)
(三) 隨機分配法 (Random Distribution, P-RD)
0 0.1 0.2 0.3 0.4 0.5 0
0.1
0.2
0.3
0.4
0.5 0
0.1 0.2 0.3 0.4 0.5
sub_1.txt sub_2.txt sub_3.txt sub_4.txt
圖 13:依序分配法
35
3.4.2 保留邊框之權重向量分配法
圖 15 為使用依序整批分配法求解 DTLZ1 問題的柏拉圖前緣,以第四個子 族群為例,該子族群被分配到的權重向量如圖 14 所示,分布於空間中的左下角,
由於 NSGA-III 於環境選擇挑選存活的個體時,較靠近權重向量所投影出之參考 點的個體會優先存活 (參考圖 16(a)、16(b)),而 NSGA-III 的超平面機制仰賴 族群在目標空間中的分布狀況,當每代存活的個體分布往左下角收縮時,下一代 的超平面也會跟著收縮 (參考圖 16(c)、16(d)),使得最後的近似柏拉圖前緣沒 辦法求得原本所希望的分布狀況。
因此我們嘗試了三種方法來保持各子族群在演化時的超平面形狀,分別為保 留各目標方向上極端的點、角以及邊的權重向量,圖 17~19 為使用此三種方法 配合依序整批分配法求解 DTLZ1 問題的柏拉圖前緣。
0 0.1 0.2 0.3 0.4 0.5 0
0.1
0.2
0.3
0.4
0.5 0
0.1 0.2 0.3 0.4 0.5
sub_1.txt sub_2.txt sub_3.txt sub_4.txt
圖 14:依序整批分配法
36
圖 15:依序整批分配法求解 DTLZ1 之結果
0 0.1 0.2 0.3 0.4 0.5 0.6 0
0.1 0.2
0.3 0.4
0.5 0.6
0 0.1 0.2 0.3 0.4 0.5 0.6
sub_1.txt sub_2.txt sub_3.txt sub_4.txt
f
2f
1
f
3f
2f
1
f
3f
2f
1
f
3f
2f
1
f
3(a):族群形成之超平面 (b):存活的個體
(c):存活個體形成之正規化座標軸 (d):存活個體形成之超平面
圖 16:第四個子族群演化過程示意圖
37
如圖 17 所示,保留了頂點後,已能保持子族群在空間中的分布狀況,而保 留了角以及邊,族群的分布狀況越來越好,但每個子族群的預設權重向量數目跟 著提升,且此數值也會隨著目標數增加,因此我們最後決定使用保留角的機制做 為我們的權重向量分配方式,每個子族群所需預先配置的權重向量數目為 3×m,
m 為求解目標個數。
0 0.1 0.2 0.3 0.4 0.5 0.6
0 0.1
0.2 0.3
0.4 0.5
0.6 0
0.1 0.2 0.3 0.4 0.5 0.6
sub_1.txt sub_2.txt sub_3.txt sub_4.txt
0 0.1 0.2 0.3 0.4 0.5 0.6
0 0.1
0.2 0.3
0.4 0.5
0.6 0
0.1 0.2 0.3 0.4 0.5 0.6
sub_1.txt sub_2.txt sub_3.txt sub_4.txt
圖 17:保留頂點之依序整批分配法求解 DTLZ1 之結果
圖 18:保留角之依序整批分配法求解 DTLZ1 之結果
38
3.4.3 遷徙與取代
由於在 NSGA-III 中,族群所繪製的超平面會影響權重向量投影後參考點在 空間中的座標以及環境選擇的挑選狀況,因此在我們認為,在保留角的分配機制 中,屬於角的參考點之個體的好壞會影響到整個族群的演化方向。我們以各個子 族群中,代表角的參考點之個體做為遷徙與取代的對象。在達到預先設定的遷徙 代數時,將各個子族群中此類的個體合併成一個新的子族群,此新子族群的權重 向量只包含各個方向上的角之向量,演化一代之後,再將與各角參考點 ASF 值 最小的個體替換掉各子族群中對應方向上的個體,以完成遷徙的動作。
圖 19:保留邊之依序整批分配法求解 DTLZ1 之結果
0 0.1 0.2 0.3 0.4 0.5 0.6
0 0.1
0.2 0.3
0.4 0.5
0.6 0
0.1 0.2 0.3 0.4 0.5 0.6
sub_1.txt sub_2.txt sub_3.txt sub_4.txt