傳統的基因演算法對於產生新的染色體一般採用的演化技術(evolutionary techniques)例如:單點交配(one-cut crossover),通常採用隨機兩個染色體區段交 配,在這有相依關係的問題中,有時反而會產生不好的解,甚至會有不合理解,
交配的過程中並不考慮上一代好的基因,而盲目搜尋(blind search)。我們主要提 出這共識因子(consensus operator),希望可以根據上一代好的染色體中尋找資 訊,建立一個導引(guided)機制,根據這引導機制讓好基因順序保留,不好的基 因順序則自然淘汰,以產生好的染色體,敘述如下。
任務ti
(A)共識因子產生方式
共識因子產生方式主要分為三個步驟:
Step 1: 建立一個共識池(consensus pool) S
為了讓取得的資訊不會陷入局部解(local trap),我們從母體 p(t)隨機抽取一半 的染色體放進我們建立的共識池S 裡。
Step 2: 建立引導機制:對偶優先矩陣 PWP_matrix(pair-wise priority_matrix ) 本研究提出這引導機制:對偶優先矩陣 PWP_matrix; M,初始為一個 0 矩陣(n
× n matrix ,n 為任務的個數),從共識池 S 中每條染色體,藉由 PWP_Chromosome 流程去計算任務之間的優先關係矩陣A,形成新矩陣 M (M=M+A),如圖 5.3 所示。
其中PWP_Chromosome(Xk)流程,Xk代表輸入的染色體,我們初始一個任務優先 關係矩陣A=[aij],(1≤ i, j ≤ n)也為 0 矩陣(n × n matrix)只要染色體 Xi中,任兩任 務ti,tj 任務 ti在任務tj之前,aij就加1,流程如下:
Procedure PWP_Chromosome(X):
Initialization: matrix A =[a
ij] = 0 (n × n matrix) For
any two tasks t
iand t
j in chromosome X , ti≠ t
jIf rank(t
i ) < rank(tj ) , thenaij
= a
ij+1 endif Endfor;
其中rank(ti)為染色體的索引(index),也為任務的優先順序。
圖5.3 PWP_matrix:M 流程
釋例,給定一染色體t1Æ t6Æ t5Æ t2Æ t4Æ t3,藉由 PWP_Chromosome 流程,
產生如圖5.4 的任務優先關係矩陣 A。
圖5.4 任務優先關係矩陣 A
我們還需要把對偶優先矩陣M 標準化為 M = M/N(S),N(S)代表共識池 S 所 有的染色體個數。標準化的對偶優先矩陣M 特性為互補性 Mij +Mji = 1,如圖 5.5 所示,M31+M21=1,這矩陣提供資訊,說明在 S 集合中,百分 80 的染色體,認 為任務 t3在任務 t1前執行比較好。因此我們可以知道任兩任務之間 ti應該在 tj
之前執行的共識比率,因此對偶優先矩陣 M 我們也稱為共識矩陣(consensus Matrix)。
矩陣M
標準化 M
矩陣A 共識池S
M=M+A
PWP_Chromosome
圖 5.5 模擬 6 個任務 從 PWP_matrix: M 標準化後的 M
根據PWP_matrix 的共識建議,我們可以很清楚任務 ti在任務tj之前執行的 共識比率。然而機率1 或 0 為必然任務 ti在任務tj之前執行或之後執行的比例,
而在母體p(t)不斷的演化之下,如圖 5.6,我們很清楚可以看出有些 1 或 0 的比 例,經過世代的演化,還是沒有影響,有些卻漸漸演化成1 或 0。那些不會變化 的1 或 0 其實就是問題本身的優先執行順序限制,因此為硬性限制(hard
constraint)。而那些慢慢演化為 1 或 0,都是經過共識因子不斷演化,產生較好 的共識建議,而演化的柔性限制(soft constraint)。因此,我們把這兩種都當作限 制,不能去違背,之後共識因子產生的方式,在有1 或 0 的限制下,要先判定沒 有1 或 0 的限制下的合理區塊(feasible region),在去選取其共識建議。
標準化:除以 N(S)=30
圖5.6 PWP_matrix 的硬性限制與柔性限制
Step 3: 根據引導機制 PWP_matrix 產生一個新的染色體 Y
首先建立一個空集合 Q=φ,與所有任務的集合 X={ti; 1≤i≤n},Z 為一個很 大的數(例如:Z=100),隨機抽取任務 qi 從 X 中,因此 X = X-{qi},而根據 PWP_Matrix 去決定 qi的優先值h(qi) (稱為 PWP 任務優先值),把已經有 PWP 任 務優先值的qi放進Q 集合中,為 Q = Q ∪ {qi},直到抽取到 X 為空集合才停止。
而新的染色體可以根據每個任務qi的PWP 任務優先值去排序產生,PWP 任務優 先值越小任務的順序越前面,如圖5.7 所示的例子中,排序為 q2Æq3 Æq1 Æq4。
圖5.7 PWP 任務優先值去排序: q2Æq3 Æq1 Æq4
我們已知PWP_matrix :M 還有在 Q 集合中的所有任務 Q = {q1, …, qi-1}和在 Q 中已計算的 PWP 任務優先值 h(qk),qk ∈Q,如何計算任務 qi的PWP 任務優先
演 化
為hard constraint
機率演化 為 1,任務 5 一定會在 任務 3 之前
0 h(q
2)=10 h(q h(q
3)=30 h(q
1)=50
4)=70 Z
值,我們可以分為下列五個步驟:
(1)決定 h(qi)合理區域:
因任務有優先執行順序的限制,我們首先要判定不違反優先執行順序的限制
出h(qi)的合理區域,由之前例子中我們可以在 M 中尋找出強烈限制與柔性限制
為0 or 1,設定初始合理區域的開始點為 hs = 0,結束點為 he= Z。對於每一個qk, qk ∈Q,如果 mik = 0 和 h(qk) > hs則 hs = h(qk),和如果mik = 1 和 h(qk) < he則he
= h(qk),更新後的合理區域,表示新的 qi在這區域中都不會有違反優先執行順序 的限制。式子如下所示:
For k =1 to i-1, /*for each task in Q*/
If mik = 0 and h(qk) > hs, then hs = h(qj) If mik = 1 and h(qk) < he, then he = h(qj) Endfor
(2) 在合理區域中選擇參考任務 qr:
已知合理區域所有的Qh,Qh = {qk| hs≤ h(qk) ≤ he, qk ∈Q},為了尋找合理區域 中的參考任務(reference task)qr,我們希望尋找共識比例最大的,因此如下式(1) 為 qi在qk之後機率最大,和式(2)qi為在 qr之前機率最大,兩者相比機率最大如 式(3),為我們要尋找的參考任務 qr,也代表任務 qi在任務 qr之前的共識比例為 p =M(qi,qr)
k*=Arg Max{ M(qk,qi) },qk ∈Qh (1) r*=Arg Max{ M(qi,qr) },qr ∈Qh (2) r =Arg Max{ M(qi,qr*) , M(qk*,qi)} (3)
(3) 根據 PWP_matrix,執行伯努力(Bernoulli)試驗:
為了讓任務執行順序的產生變異,我們執行一次伯努力(Bernoulli)試驗,根 據qi與qr的共識比例,當作機率,實驗成功代表任務qi在任務qr之前執行,因 此 h(qi) < h(qr),合理區域更新為 he = h(qr) ;或是實驗失敗代表任務 qi在任務qr
之後執行,因此h(qi) > h(qr),合理區域更新為 hs = h(qr)。
(4) 更新合理區域:
實驗成功: 合理區域更新為 he = h(qr) 實驗失敗: 合理區域更新為 hs = h(qr)
(5) 停止條件:
我們尋找到當合理區域中可插入的任務數n(Qh)少於兩個,便可決定其 h(qi)值。
因此n(Qh) > 2 我們繼續尋找新的參考任務 qr,回到步驟(2),直到 n(Qh) ≤ 2,則 決定 h(qi) = (hs +he)/2。
茲以一釋例說明如何決定h(qi),如圖 5.8 所示,在已知 Q={q1, q2 , q3, q4},
Qh={qk| hs≤ h(qk) ≤ he, qk∈Q}下,若要插入任務 q5,決定h(q5)。第一步驟:先決定 h(qi)合理區域為 hs= h(q1),he= h(q4)。第二步驟:為了尋找參考任務 qr,根據(1)(2)(3) 式,可以求得r=q2。第三步驟:根據 q2做伯努力(Bernoulli)試驗,如果失敗,h(q5)
> h(q2)。第四步驟:合理區域更新為 hs = h(qr)= h(q2)。第五步驟: n(Qh) = 2,停止 搜尋,h(q5)=( h(q2)+ h(q4) )/2,q5插入在q4和q2之間。
圖5.8 選擇參考任務 qr