第二章 文獻回顧
2.2 限制規劃文獻回顧
2.2.3 限制規劃系統說明
(一)限制規劃系統架構
Van Hentenryck[19]指出,限制規劃具有二層式的系統架構,其第一層是提 供使用者輸入問題的限制元件,第二層是用來解決問題的程式求解元件,以下將 介紹組成限制規劃系統之限制式元件與程式求解元件。
1. 限制式元件(Constraint Component):
限制規劃系統能提供使用者輸入模式化語言之介面,而其限制式元件則是讓 使用者於此元件中宣告決策變數、限制式,及設定求解演算法,其具有資料儲存 及資料連結之功能,由於限制規劃可輸入之限制式種類相當多,所以對於各種問 題可能使用之限制式規則,均存在與其對應的限制元件以提供使用者進行模式構 建。
2. 程式求解元件(Programming Component):
程式求解元件是由求解演算法之相關元件組成,其包含限制系統邏輯推理元 件與空間搜尋元件兩部分,當進行模式求解運算時,藉由這二組元件相互配合運 作,以達成限制規劃的模式求解功能,以下對於邏輯推理元件及空間搜尋元件進 行說明。
(1) 限制系統邏輯推理元件(Reasoning Component of Constraint System) 限制系統邏輯推理元件所使用之限制求解演算法,可針對由限制元件構 成之限制系統進行邏輯推理運算。相關的演算法主要包含決策變數值域與限 制式間的一致性檢驗技術(Consistency Checking Techniques) 及值域縮小 (domain reduction)、限制增長等兩類運算求解機制(Constraint Propagation)。
(2) 空間搜尋元件(Tree-Search Component)
空間搜尋元件所使用之搜尋演算法,主要是以搜尋樹-換枝檢驗法(BT) 作為搜尋運算之核心,其配合限制式系統邏輯推理元件之變數值域縮減演算 法,形成有效率的空間搜尋演算法。在空間搜尋策略方面,限制規劃中的空 間搜尋元件除了提供預設之Depth-first、Best-First 等搜尋策略外,其亦允許 使用者自行定義合適的搜尋方式。
(二)限制式宣告方式
在限制規劃中,其限制式之宣告方式包含以下幾種類型:
Logical constraints
宣告方式 說明
(x = 4) => (y = 5) ; If x is equal to 4, then y is equal to 5 (a.end <= b.start) \/ (b.end <= a.start) ; Either "Activity A" precedes "Activity B" OR
"Activity B" precedes "Activity A“
Global constraints
宣告方式 說明
alldifferent(x) ; All of the values in the array x are different distribute(card,value,base)
*card[i] is the number of times value[i] appears in base;
Element i of the array card is the number of times that the ith element of the array value appears in the array base
Meta constraints
宣告方式 說明
sum (i in S) (x[i] < 5) = 3; The number of times that the array x has the value 5 is exactly 3
Element constraint
宣告方式 說明
z = y [ x [i] ]; The cost of assigning person i to job j is cost[job[i]], when job[i] is j
(三)演算法求解程序
1. 值域縮小與限制增長(Domain Reduction and Constraint Propagation)
限制規劃之求解演算法,主要是透過宣告決策變數的值域集合,並依序檢查 限制式是否滿足,然後進行決策變數可行空間的樹狀搜尋,進而刪除不可行的解。
其求解的兩個基本機制為值域縮小及限制增長之運算技術,值域縮小是指求解模 式由原始限制式進行邏輯推論運算,將值域集合中之不可行變數值移除的過程,
在值域集合刪除不可行的變數值後,記憶體中的決策變數值域集合將會立即更 新,此時求解模式繼續加入新的限制式以進行下一次的邏輯推論運算,則此過程 稱為限制增長,限制規劃即是透過值域縮小和限制增長的交替作用以進行模式運 算求解。以下為CSP問題之基本求解演算法。
限制規劃 CSP 問題之求解演算法[19]
CSP solver(Problem)
1. Create CSP For Problem
2. while not (solved or infeasible)do 3. Remove Inconsistent Values
4. Select Decision Variable 5. Select Value For Variable 6. end
2. 以下對於演算法求解限制滿足問題之運算過程提出範例說明[1]:
Find integer values for x, y and z such that:
x ∈ [1,3], y ∈ [1,3], z ∈ [1,3]
x-y=1, y<z, and y=2.
限制規劃是以搜尋樹演算法進行模式運算求解,因此可使用樹狀圖來表示決 策變數的值域空間,此問題的樹狀圖共有三層,每一層的節點是表示一個決策變 數,而分枝節線則表示該決策變數可能的值,圖形最後一層所有分枝可表示決策 變數值域集合之所有可能組合(即CSP中的搜尋空間),其共有27種組合。由限制 規劃的求解程序,在宣告變數值域集合後,依序加入限制式將不可行的值移除,
以縮小搜尋空間,最後找出決策變數可行值域集合。
圖2.5 決策變數值域集合
原來的X變數及Y變數之值域皆為1~3的整數,先考慮限制式X–Y= 1,當X = 1時,在Y的值域中找不到任何一個對應的Y解,因此X = 1無法滿足,移除X = 1,
同時當Y = 3時,找不到對應的X解,所以移除Y = 3。當刪掉這些不可行的值,
則X的值域縮減成2、3兩個值,Y的值域縮減成1、2兩個值。
1 2 3
3 2 1 3
1 2 3
2 1
2 3
1
z y x
圖2.6 刪除不可行的分枝-1
考慮第一個限制式X – Y = 1後,接著繼續考慮第二個限制式Y < Z,現在Y 的值域值為1、2,當Z = 1時,在Y的值域中找不到任何一個對應的Y解滿足Y < Z,
因此移除Z = 1,則X的值域保持2、3兩個值,Y的值域保持1、2兩個值,Z的值 域縮減成2、3兩個值。
圖2.7 刪除不可行的分枝-2
最後考慮第三個限制式Y = 2,現在Y的值域值為1、2,所以移除Y=1,而X 的值域為2、3,因Y = 2且X – Y = 1,所以移除X=2,而Z的值域為2、3,因Y = 2 且Y < Z,所以移除Z=2,最後得到一組解:X=3,Y = 2,Z=3。
圖2.8 獲得一組可行解
3 2 3
z y x
2 1 1 2
2 3
z y x
2 1 1 2
2 3
z y x
當變數值被修改時(如第三個限制式指定Y = 2),將此限制式(Y = 2)新增到原 始的限制式(X – Y = 1,Y < Z),此過程為限制增長,再由原始限制式將值域集合 中不滿足限制式的變數值移除,為值域縮小。而求解機制設計的目的,是藉由問 題的限制式來縮小搜尋空間,以提升模式之求解速度。
小結:
傳統作業研究方法多針對最佳化問題發展有效的數學規劃模式,但是實務上 還有許多問題,並不需要追求最佳化的結果,而是希望找出滿足所有限制條件的 答案,因此近年來,用來求解限制滿足問題的限制規劃方法逐漸受到重視。國內 有關限制規劃的研究,包括:王國琛[26]以限制規劃結合數學規劃方法求解大型後 艙組員排班問題;唐依伶[29]依據公平性組員排班限制,將組員派遣問題構建為限 制滿足問題,及使用限制規劃方法產生個別組員月勤務組員班表;林詩芹[34]根據 客服人員服務單位之排班規定與班表公平性之原則,使用限制規劃方法建立人員 排班求解模式。