java排班_使用java规则引擎Drools自动排班前言.doc
使用java規則引擎Drools自動排班前言
使用java規則引擎Drools自動排班前言本文以一個經簡化的運輸車隊自動排班需求為例,詳細講解了如何使用java規則引擎Drools進行商業規則的形式語言描述,并編寫java代碼實現問題求解。
?
背景介紹(引自Drools中文文檔)??? A.I.(Artificial Intelligence)是一個關注于“使計算機像人類一樣思考”的廣泛的研究領域,包括Neural Networks(神經網絡), Genetic Algorithms(遺傳算法), Decision Trees(決策樹), Frame Systems(框架系統) andExpert Systems(專家系統)。
?
?Knowledge representation(知識呈現)是A.I.的一部分,關注于如何呈現和操縱知識。專家系統使用知識表示把知識編碼簡化成一個可用于推理的知識庫──比如,我們可以用知識庫處理數據以推出結論。專家系統又叫基于知識的系統、基于知識的專家系統,并被認為是A.I.的一個應用。開發一個專家庫系統的過程被稱為知識工程。EMYCIN是最早的專家系統Shell(外殼)之一,它從醫學診斷專家系統MYCIN發展而來。早期的專家系統有自己的logic hard coded "shells"(邏輯硬件編碼環境),把邏輯與系統相分離,為用戶輸入提供一個簡單的使用環境。
?
??? Drools是一個使用基于規則的方法實現的專家系統的規則引擎,更準確的說屬于產生式規則系統。術語“產生式規則”從形式語法中產生,形式語法——使用一種抽象結構來準確描述形式語言。
知識(facts,事實,環境):?1,員工分為兩種:司機,外勤?2,每天分白、中、晚三個班次?3,每班3人,一個司機,兩個外勤?規則(rules):?1,司機可以當外勤,外勤不可以當司機?2,每個員工每個月至少休息6天?3,每個員工連續上班不能超過5天?4,工作分配應盡可能均勻
?
目標(goal):?1,按日期和班次打印排班表?2,按員工打印各人的班次任務
排班規則的形式語言描述(drl, drools rule language):package TEST;
import TEST.*;
?
rule "司機"when?shift : Shift(driver == null, $date : workDate, $no : no)爓orker : Worker(type == 1, easyDay >= 6, maxDay <= 4, $total : shiftTotal )爀val( !shift.getWorkDate().containsWorker(worker) )爊ot Worker(type == 1, shiftTotal
rule "
總結
以上是生活随笔為你收集整理的java排班_使用java规则引擎Drools自动排班前言.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么看电脑的hdmi是输出还是输入_高清
- 下一篇: 李航《统计学习方法》之EM算法及其推广