• 沒有找到結果。

CLIPS 自動決策單元

第五章 下水道工程排程系統

5.2 CLIPS 自動決策單元

由於污水下水道工程屬於重複性工程,我們可以依重複排程法 RSM 或線性 排程法 LSM 找到控制路徑與資源分配較優目標方程,然後我們可以在工程進行 中的任一階段,利用 Excel 自動產生 CLIPS 的事實 Facts(如圖 5.3),而這產生的 Facts 是依現況計算出資源功率、依現況風險評估預估活動前置作業期與作業工期 等,將產生的 Facts 直接複製貼到程式碼的 deffacts work 即可進行排程目標的檢 核運算,CLIPS 中可設定深度優先、廣度優先或隨機等模式依序挑出符合目標排 程的作業作活動,然後將得出的依序工作項目結果匯入 Excel,進行排程資訊彙 整與轉換再匯出至 MS Project。

圖 5.3 Excel 產生 Facts

在本研究案例中 CLIPS 之第一類 fact 定義為(WS ?SN ?R ?RD ?Q),WS 為 fact 變數代號,?SN(System Name)為前文 WBS 分析後工作項目分組的水系代號,?R (Resource)為指派執行此一工作項目分組的推進機組代號,?RD (Reserve Duration) 為執行此一工作項目分組的推進作業之所有前置作業的工期總合,?Q (Quantity) 為此一工作項目分組可提供所分派之推進機組多少日的工作量,即為該工作項目 分組的推進總長除以指派推進機組的施工功率。第二類 fact 定義為

(RD ?a1 ?a2 ?a3 ?a4),RD 為 fact 變數代號,?a1~?a4 為第 1 組至第 4 組推進機組 各自於目前作業分組水系的剩餘作業工期。

而 CLIPS 運算原則為以維持四組推進機組、一組詴挖管遷機組、一組工作井 沉設機組比例原則進行運算,CLIPS 會先挑選剩餘作業工期最少的工作面,再從 該工作面挑選前置作業期小於另外三組工作面剩餘工期減 15 工作日之作業分 組,減 15 日為假設本工作面前置作業完成後至少剩餘 15 工作日(約六處工作井沉 設工期),進行下一組工作面之前置作業。

本研究所撰寫之 CLIPS 程式為簡易篩選工作項目之程式,基於 4.3 節結論所 推算之詴挖管遷、工作井沉設與推進施工之資源需求設定,如果專案資源需求改 變或應用於其他污水下水道專案,在推進施工上則頇重新評推進機組需求組數修 改 CLIPS 程式中的 RD fact 參數與增加或減少工作項目篩選迴圈,若為詴挖管遷 或工作井沉設資源需求改變,則直接於 Excel 改變功率設定換算相對應工期即 可。而 WS fact 中的資源參數 R 可限定也可不限定,限定意味工作面有預設區塊,

工作面之工作項目篩選會自原預定相同工作面中篩選;不限定意味工作面無預設 區塊,工作面之工作項目篩選會由全區域篩選,選擇限定 R 則可避免工作面相互 干擾增加交通維持障礙,但卻會減少工作項目篩選自由度有可能會造成符合排程 目標檢核的工作項目組合方式減少。最後檢核其他三組工作面剩餘工期減 15 工作 日之 15 日參數設定也可依需求改變而增減。

研究個案污水下水道施工排程之 CLIPS 自動決策單元程式如圖 5.4、圖 5.5 所示。

;本程式為推論優先施工解

;本程式使用了以下之述詞(predicate)

;(WaterSystem X1 X2 X3 X4),X1 為水系代號,X2 為資源代號,X3 為前置作業 期,X4 為供給量

(deffacts work

(WS "HB01" 1 30 71)

(WS "HB0a-2&HB05" 1 18 38) (WS "HB10-1" 2 21 52)

(WS "HB11-1" 2 16 48)

(WS "HB12&HBd0e" 2 20 45) (WS "HB16" 3 12 57)

(WS "HB17&HBg25" 3 19 55)

(WS "HBc01&HBc03&HBc04" 2 31 83)

……

(RD 25 35 45 55)) (defrule +select1

?f9 <- (RD ?a1 ?a2 ?a3 ?a4)

(test (and (< ?a1 ?a2) (< ?a1 ?a3) (< ?a1 ?a4)))

?f1 <- (WS ?SN 1 ?RD ?Q)

(test (and (< ?RD (- ?a2 15)) (< ?RD (- ?a3 15)) (< ?RD (- ?a4 15))))

=>

(assert(select1 ?SN)) (printout t ?SN crlf)

(assert(RD (+ (- ?a1 ?RD) ?Q) (- ?a2 ?RD) (- ?a3 ?RD) (- ?a4 ?RD))) (retract ?f1)

定義水系現況資料

(defrule +select2

(retract ?f1) (retract ?f9)

(assert(select2 ?SN)) (printout t ?SN crlf)

(assert(RD (- ?a2 ?RD) (+ (- ?a1 ?RD) ?Q) (- ?a3 ?RD) (- ?a4 ?RD)))) (defrule +select3

?f9 <- (RD ?a3 ?a2 ?a1 ?a4)

(test (and (< ?a1 ?a2) (< ?a1 ?a3) (< ?a1 ?a4)))

?f1 <- (WS ?SN 3 ?RD ?Q)

(test (and (< ?RD (- ?a2 15)) (< ?RD (- ?a3 15)) (< ?RD (- ?a4 15))))

=>

(retract ?f1) (retract ?f9)

(assert(select3 ?SN)) (printout t ?SN crlf)

(assert(RD (- ?a3 ?RD) (- ?a2 ?RD) (+ (- ?a1 ?RD) ?Q) (- ?a4 ?RD)))) (defrule +select4

?f9 <- (RD ?a4 ?a2 ?a3 ?a1)

(test (and (< ?a1 ?a2) (< ?a1 ?a3) (< ?a1 ?a4)))

?f1 <- (WS ?SN 4 ?RD ?Q)

(test (and (< ?RD (- ?a2 15)) (< ?RD (- ?a3 15)) (< ?RD (- ?a4 15))))

=>

(retract ?f1) (retract ?f9)

(assert(select4 ?SN)) (printout t ?SN crlf)

(assert(RD (- ?a4 ?RD) (- ?a2 ?RD) (- ?a3 ?RD) (+ (- ?a1 ?RD) ?Q))))

圖 5.5 CLIPS 操作畫面與執行結果

相關文件