java排班_使用java规则引擎Drools自动排班前言.doc
使用java規(guī)則引擎Drools自動(dòng)排班前言
使用java規(guī)則引擎Drools自動(dòng)排班前言本文以一個(gè)經(jīng)簡化的運(yùn)輸車隊(duì)自動(dòng)排班需求為例,詳細(xì)講解了如何使用java規(guī)則引擎Drools進(jìn)行商業(yè)規(guī)則的形式語言描述,并編寫java代碼實(shí)現(xiàn)問題求解。
?
背景介紹(引自Drools中文文檔)??? A.I.(Artificial Intelligence)是一個(gè)關(guān)注于“使計(jì)算機(jī)像人類一樣思考”的廣泛的研究領(lǐng)域,包括Neural Networks(神經(jīng)網(wǎng)絡(luò)), Genetic Algorithms(遺傳算法), Decision Trees(決策樹), Frame Systems(框架系統(tǒng)) andExpert Systems(專家系統(tǒng))。
?
?Knowledge representation(知識呈現(xiàn))是A.I.的一部分,關(guān)注于如何呈現(xiàn)和操縱知識。專家系統(tǒng)使用知識表示把知識編碼簡化成一個(gè)可用于推理的知識庫──比如,我們可以用知識庫處理數(shù)據(jù)以推出結(jié)論。專家系統(tǒng)又叫基于知識的系統(tǒng)、基于知識的專家系統(tǒng),并被認(rèn)為是A.I.的一個(gè)應(yīng)用。開發(fā)一個(gè)專家?guī)煜到y(tǒng)的過程被稱為知識工程。EMYCIN是最早的專家系統(tǒng)Shell(外殼)之一,它從醫(yī)學(xué)診斷專家系統(tǒng)MYCIN發(fā)展而來。早期的專家系統(tǒng)有自己的logic hard coded "shells"(邏輯硬件編碼環(huán)境),把邏輯與系統(tǒng)相分離,為用戶輸入提供一個(gè)簡單的使用環(huán)境。
?
??? Drools是一個(gè)使用基于規(guī)則的方法實(shí)現(xiàn)的專家系統(tǒng)的規(guī)則引擎,更準(zhǔn)確的說屬于產(chǎn)生式規(guī)則系統(tǒng)。術(shù)語“產(chǎn)生式規(guī)則”從形式語法中產(chǎn)生,形式語法——使用一種抽象結(jié)構(gòu)來準(zhǔn)確描述形式語言。
知識(facts,事實(shí),環(huán)境):?1,員工分為兩種:司機(jī),外勤?2,每天分白、中、晚三個(gè)班次?3,每班3人,一個(gè)司機(jī),兩個(gè)外勤?規(guī)則(rules):?1,司機(jī)可以當(dāng)外勤,外勤不可以當(dāng)司機(jī)?2,每個(gè)員工每個(gè)月至少休息6天?3,每個(gè)員工連續(xù)上班不能超過5天?4,工作分配應(yīng)盡可能均勻
?
目標(biāo)(goal):?1,按日期和班次打印排班表?2,按員工打印各人的班次任務(wù)
排班規(guī)則的形式語言描述(drl, drools rule language):package TEST;
import TEST.*;
?
rule "司機(jī)"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 "
總結(jié)
以上是生活随笔為你收集整理的java排班_使用java规则引擎Drools自动排班前言.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么看电脑的hdmi是输出还是输入_高清
- 下一篇: linux vim 到底,真的有(很多)