邱占芝,巨貝貝
(大連交通大學(xué) 軟件學(xué)院,遼寧 大連 116028)
隨著企業(yè)信息化建設(shè)的快速發(fā)展,煤炭企業(yè)生產(chǎn)與經(jīng)營(yíng)信息呈現(xiàn)出非線性遞增趨勢(shì).然而信息量的海量增長(zhǎng)并不能直接簡(jiǎn)化企業(yè)決策本身,煤炭企業(yè)的銷(xiāo)售決策仍然是以決策者的經(jīng)驗(yàn)和直覺(jué)為基礎(chǔ).如何將市場(chǎng)信息、客戶信息、企業(yè)生產(chǎn)信息、鐵路運(yùn)力等諸多數(shù)據(jù)[1]和決策經(jīng)驗(yàn)有機(jī)結(jié)合,通過(guò)既定邏輯推理做出科學(xué)的分析,從而制訂最佳的決策,成為企業(yè)的迫切需求和信息化建設(shè)的熱點(diǎn).
網(wǎng)絡(luò)化煤炭銷(xiāo)售決策專家系統(tǒng)(CDES,Coal sales Decision making Expert System)利用專家系統(tǒng)的基本理念,綜合集成了智能化綜合銷(xiāo)售數(shù)據(jù)庫(kù)和專家知識(shí)庫(kù),通過(guò)模擬專家的推理邏輯得出更接近求解環(huán)境的決策結(jié)論,為決策者提供具有專家水準(zhǔn)的咨詢幫助,提高決策的科學(xué)性和有效性.CDES可根據(jù)市場(chǎng)供求動(dòng)態(tài)數(shù)據(jù),生成自適應(yīng)的煤炭?jī)r(jià)格,并根據(jù)客戶的相應(yīng)歷史記錄,有浮動(dòng)的調(diào)整銷(xiāo)售價(jià)格;根據(jù)已簽訂合同和礦區(qū)生產(chǎn)情況預(yù)測(cè)未來(lái)銷(xiāo)售情況,有效把握市場(chǎng)動(dòng)態(tài)、客戶需求和生產(chǎn)情況.專家系統(tǒng)的自學(xué)習(xí)能力,一方面通過(guò)決策者參與系統(tǒng)的決策過(guò)程提高了系統(tǒng)的決策技能,另一方面大量的數(shù)據(jù)流入為決策者制定相應(yīng)決策提供了更為寬泛的選擇空間.
網(wǎng)絡(luò)化煤炭銷(xiāo)售決策專家系統(tǒng)架構(gòu)于煤炭企業(yè)現(xiàn)有的信息管理系統(tǒng)基礎(chǔ)之上,一方面通過(guò)構(gòu)建煤炭銷(xiāo)售決策知識(shí)庫(kù)提供既有專家經(jīng)驗(yàn)的決策支持,另一方面通過(guò)集成的智能化綜合銷(xiāo)售數(shù)據(jù)庫(kù),利用商業(yè)智能(Business Intelligence,BI)技術(shù),對(duì)企業(yè)數(shù)據(jù)進(jìn)行有效挖掘并形成初級(jí)潛在規(guī)則,這些初級(jí)規(guī)則進(jìn)過(guò)煤炭銷(xiāo)售專家的驗(yàn)證與抽象,成為具有真正決策價(jià)值的銷(xiāo)售經(jīng)驗(yàn).系統(tǒng)通過(guò)兩方面的集成實(shí)現(xiàn)信息技術(shù)和專家經(jīng)驗(yàn)的融合,具有高效的決策科學(xué)性及智能性.
系統(tǒng)具體功能包括對(duì)已簽訂合同的單個(gè)客戶進(jìn)行月、季度以及年銷(xiāo)售計(jì)劃的決策及預(yù)測(cè),主要模塊包括:?jiǎn)蝺r(jià)決策,銷(xiāo)售量預(yù)測(cè),知識(shí)庫(kù)管理,系統(tǒng)管理等,系統(tǒng)管理主要包括用戶登錄管理、權(quán)限管理、對(duì)過(guò)往決策內(nèi)容提供查詢及對(duì)各類(lèi)數(shù)據(jù)庫(kù)的維護(hù).
(1)單價(jià)決策
單價(jià)決策功能完成對(duì)合同客戶銷(xiāo)售計(jì)劃中煤炭單價(jià)的決策,其決策結(jié)論主要從客戶信息、煤質(zhì)信息、市場(chǎng)供需、以及國(guó)家政策這幾個(gè)方面綜合分析得出.客戶信息分析:從合同信息區(qū)分客戶類(lèi)型、運(yùn)費(fèi)計(jì)算情況;通過(guò)查詢客戶有無(wú)商業(yè)糾紛或者不良購(gòu)煤行為等信息,自動(dòng)確定信用等級(jí),通過(guò)查詢客戶回款情況進(jìn)行價(jià)格適當(dāng)調(diào)整;煤質(zhì)信息分析:根據(jù)各煤種有效定價(jià)參數(shù),通過(guò)轉(zhuǎn)換公式計(jì)算各煤種單價(jià)區(qū)間;市場(chǎng)供需分析:有無(wú)自然災(zāi)害、人為事故和季節(jié)因素影響市場(chǎng)總體價(jià)格;國(guó)家政策分析:國(guó)家近期有無(wú)對(duì)整體煤價(jià)進(jìn)行價(jià)格調(diào)控.
(2)銷(xiāo)售量預(yù)測(cè)
銷(xiāo)售量預(yù)測(cè)功能可根據(jù)合同客戶簽訂的合同信息、礦區(qū)生產(chǎn)情況以及庫(kù)存量,對(duì)簽訂合同客戶進(jìn)行銷(xiāo)售量的預(yù)測(cè),影響因素包括客戶合同情況以及庫(kù)存量,其預(yù)測(cè)區(qū)間可選擇按月、季度或者年.
(3)知識(shí)庫(kù)管理
知識(shí)庫(kù)管理功能面向?qū)<医涌冢芾韺?duì)象為對(duì)本系統(tǒng)所使用的知識(shí)模型.專家系統(tǒng)在使用之后,為了保證其結(jié)論的有效性,需要對(duì)知識(shí)庫(kù)進(jìn)行維護(hù),維護(hù)內(nèi)容包括:結(jié)合市場(chǎng)情況增加新的決策知識(shí),刪除、修改不合理的知識(shí)以及對(duì)更新后的知識(shí)進(jìn)行正確性、一致性、完整性檢查,提高知識(shí)的質(zhì)量.
系統(tǒng)主要包括知識(shí)庫(kù)、綜合信息數(shù)據(jù)庫(kù)、知識(shí)庫(kù)管理器、推理機(jī)、事實(shí)庫(kù)、解釋器、數(shù)據(jù)庫(kù)維護(hù)以及人機(jī)交互界面幾個(gè)部分,如圖1所示:

圖1 系統(tǒng)結(jié)構(gòu)圖
知識(shí)庫(kù)是專家系統(tǒng)重要組成部分,是專家經(jīng)驗(yàn)和知識(shí)的存儲(chǔ)體;推理機(jī)實(shí)質(zhì)上是知識(shí)庫(kù)的一個(gè)解釋器[2],其根據(jù)一定的推理邏輯應(yīng)用知識(shí)來(lái)求解用戶輸入的實(shí)際問(wèn)題;解釋器幫助用戶理解整個(gè)問(wèn)題求解的推理過(guò)程;事實(shí)庫(kù)中存放用戶輸入的待解決問(wèn)題信息、推理過(guò)程中產(chǎn)生的過(guò)程數(shù)據(jù)以及供解釋器調(diào)用的事實(shí)數(shù)據(jù).
綜合信息數(shù)據(jù)庫(kù)是整個(gè)系統(tǒng)的數(shù)據(jù)基礎(chǔ),其一方面為邏輯推理過(guò)程提供可靠數(shù)據(jù),例如運(yùn)銷(xiāo)管理系統(tǒng)數(shù)據(jù)庫(kù)的各種報(bào)表,客戶信息、礦區(qū)生產(chǎn)信息、合同信息等;另一方面通過(guò)DW、OLAP工具和DM等商業(yè)智能技術(shù),從數(shù)據(jù)中挖掘出隱含的、先前未知的、對(duì)決策有潛在價(jià)值的關(guān)系和趨勢(shì),專家通過(guò)分析、抽象和優(yōu)化,從而得出深層次上的決策信息.
系統(tǒng)采用三層瀏覽器/服務(wù)器(簡(jiǎn)稱B/S)結(jié)構(gòu),其分離的業(yè)務(wù)邏輯層、表示層和數(shù)據(jù)處理層大大提升了系統(tǒng)的數(shù)據(jù)處理能力、穩(wěn)定性和安全性.數(shù)據(jù)庫(kù)管理系統(tǒng)采用微軟公司的SQL Server2005,其不但完成對(duì)數(shù)據(jù)準(zhǔn)確且高效的處理,又能保障數(shù)據(jù)的安全性、系統(tǒng)維護(hù)與升級(jí)的便捷性.
設(shè)計(jì)知識(shí)庫(kù)的首要問(wèn)題就是根據(jù)煤炭銷(xiāo)售決策要求確定適當(dāng)?shù)闹R(shí)表示方法,從而保證其知識(shí)的可擴(kuò)充性、簡(jiǎn)潔性和清晰性[3].本系統(tǒng)知識(shí)庫(kù)分為常識(shí)性知識(shí)和專業(yè)知識(shí)兩大部分,包括煤炭行業(yè)各類(lèi)相關(guān)標(biāo)準(zhǔn)、法律法規(guī)、書(shū)籍知識(shí)以及專家長(zhǎng)期總結(jié)的經(jīng)驗(yàn)知識(shí)等,因此知識(shí)表示采用較為成熟的產(chǎn)生式規(guī)則表示方法[4],即IF P THEN Q的形式.知識(shí)獲取方式主要由人工挖掘、搜集、分析、綜合、整理、歸納將知識(shí)結(jié)構(gòu)化,最終以sql語(yǔ)句的形式存入關(guān)系數(shù)據(jù)庫(kù).系統(tǒng)知識(shí)庫(kù)包括rule表、fact表和formula表,表結(jié)構(gòu)如表1~表3.

表1 rule表結(jié)構(gòu)

表3 fact表結(jié)構(gòu)
Rule表中存放規(guī)則信息,其中:①id:規(guī)則編號(hào),作為主鍵;②premier:規(guī)則前件;(3)conclu-sion:規(guī)則后件;Formula表中存放公式以及其條件的對(duì)應(yīng)關(guān)系:①id:公式編號(hào);②formula:公式;③condition:計(jì)算公式所需的條件;Fact表中存放事實(shí)信息及相對(duì)應(yīng)的sql語(yǔ)句,其中:①id:事實(shí)信息編號(hào);②description:事實(shí)信息;③sql:事實(shí)信息對(duì)應(yīng)的sql語(yǔ)句.
rule表中premier和conclusion字段以及formula表中formula和condition字段存入的內(nèi)容均來(lái)自fact表中的id號(hào).Rule表中的一條記錄代表一條規(guī)則,formula表中的一條記錄代表一個(gè)公式所需的一個(gè)條件.
例如煤炭銷(xiāo)售決策中決定單價(jià)部分,如果客戶今年合同表中的合同單價(jià)<1這代表此合同單價(jià)計(jì)算方式為以卡計(jì)價(jià),則實(shí)際單價(jià)=合同單價(jià)*熱值/0.238 89;如果合同單價(jià)≥1,則實(shí)際單價(jià)等于合同單價(jià).規(guī)則如下:
(1)規(guī)則1:如果當(dāng)年合同表中有此客戶,則查詢當(dāng)年合同單價(jià);
(2)規(guī)則2:如果合同單價(jià)<1,則實(shí)際單價(jià)=合同單價(jià)*熱值/0.238 89值;
(3)規(guī)則3:如果合同單價(jià)>1,則實(shí)際單價(jià)=合同單價(jià).
rule表和fact表內(nèi)容如表4~表6:

表4 實(shí)例fact表(X年份,Y表示客戶編號(hào))

表5 實(shí)例rule表

表6 實(shí)例formula表
為了保證煤炭銷(xiāo)售專家系統(tǒng)推理機(jī)的效率,系統(tǒng)采用判定樹(shù)推理方法,以正向推理為其控制策略.判定樹(shù)的樹(shù)形結(jié)構(gòu)的合理性決定推理過(guò)程的高效性,所以構(gòu)造一顆高效的推理樹(shù)是設(shè)計(jì)的目標(biāo).
經(jīng)過(guò)分析,可將各個(gè)節(jié)點(diǎn)分為4類(lèi):①葉子節(jié)點(diǎn):含有結(jié)論數(shù)據(jù)的查詢;②非根子節(jié)點(diǎn):含有推理過(guò)程的查詢;③第一個(gè)非0的父親節(jié)點(diǎn):僅表示推理最初條件;④公式樹(shù)節(jié)點(diǎn):表示一個(gè)公式,其子節(jié)點(diǎn)代表公式所需要的條件.節(jié)點(diǎn)間的關(guān)系可以表示整個(gè)推理的過(guò)程:①任意一個(gè)非葉子節(jié)點(diǎn)可以表示為條件P;②任意非公式樹(shù)間的連線表示一條規(guī)則;③公式樹(shù)不表示推理規(guī)則.
推理機(jī)根節(jié)點(diǎn)0為用戶輸入,輸入成功則開(kāi)始構(gòu)造判定樹(shù),整個(gè)推理過(guò)程需要分析整個(gè)事件,最終將整棵樹(shù)節(jié)點(diǎn)中相應(yīng)的sql語(yǔ)句組合,進(jìn)入綜合數(shù)據(jù)庫(kù)查詢.以上例煤炭銷(xiāo)售決策中決定單價(jià)部分具體來(lái)說(shuō)明,其判定樹(shù)結(jié)構(gòu)圖2:

圖2 判定樹(shù)結(jié)構(gòu)
圖2中節(jié)點(diǎn)0:輸入數(shù)據(jù)成功.節(jié)點(diǎn)1:當(dāng)年合同表有此客戶節(jié)點(diǎn)2:查詢當(dāng)年合同單價(jià).節(jié)點(diǎn)3:合同單價(jià) >=1.節(jié)點(diǎn)4:合同單價(jià) <1.節(jié)點(diǎn)5:合同單價(jià).節(jié)點(diǎn)6:實(shí)際單價(jià)=合同單價(jià)*熱值/0.238 89.節(jié)點(diǎn) 7:熱值.節(jié)點(diǎn) 8:0.238 89.
組合sql語(yǔ)句的過(guò)程是從根節(jié)點(diǎn)開(kāi)始的:
(1)遍歷樹(shù)將第一個(gè)非0的父親節(jié)點(diǎn)編號(hào)入編號(hào)隊(duì)列,將其sql語(yǔ)句入數(shù)據(jù)隊(duì)列,轉(zhuǎn)到(2);
(2)若該節(jié)點(diǎn)與其孩子節(jié)點(diǎn)組成規(guī)則,則轉(zhuǎn)到(3);若與其孩子表示公式,則轉(zhuǎn)到(5);
(3)將第1條數(shù)據(jù)出隊(duì),用此數(shù)據(jù)代替孩子節(jié)點(diǎn)中的Rule字段,將新生產(chǎn)的數(shù)據(jù)入數(shù)據(jù)隊(duì),將此孩子節(jié)點(diǎn)編號(hào)入編號(hào)隊(duì),當(dāng)孩子節(jié)點(diǎn)有k個(gè)時(shí)將分別有k條數(shù)據(jù)入數(shù)據(jù)隊(duì)和編號(hào)隊(duì).當(dāng)孩子節(jié)點(diǎn)編號(hào)全部入編號(hào)隊(duì)時(shí),該節(jié)點(diǎn)編號(hào)出隊(duì),轉(zhuǎn)到(4);
(4)遍歷編號(hào)隊(duì)列,若隊(duì)頭編號(hào)對(duì)應(yīng)節(jié)點(diǎn)不是葉子節(jié)點(diǎn)則轉(zhuǎn)到轉(zhuǎn)到(2),否則將數(shù)據(jù)隊(duì)列隊(duì)頭做標(biāo)記,再將編號(hào)隊(duì)列以及數(shù)據(jù)隊(duì)列隊(duì)頭都出隊(duì).指針指向新隊(duì)頭編號(hào)節(jié)點(diǎn),轉(zhuǎn)到(2).若隊(duì)列空則算法結(jié)束;
(5)將第1條數(shù)據(jù)對(duì)應(yīng)的Formula字段用對(duì)應(yīng)孩子節(jié)點(diǎn)的SQL字段替換,依次將孩子節(jié)點(diǎn)編號(hào)入隊(duì),該節(jié)點(diǎn)編號(hào)出隊(duì),轉(zhuǎn)到(4).
結(jié)合上例組合sql語(yǔ)句過(guò)程如下:
(1)將節(jié)點(diǎn)1編號(hào)入編號(hào)隊(duì)列,其sql語(yǔ)句入數(shù)據(jù)隊(duì)列;
(2)節(jié)點(diǎn)1其與孩子節(jié)點(diǎn)2組成規(guī)則,則將第1條數(shù)據(jù)出隊(duì)即select htid from htb where khid=(X)and year=(Y),將它代替節(jié)點(diǎn)2sql語(yǔ)句的Rule字段,產(chǎn)生的新數(shù)據(jù) select price from htb where htid=(select htid from htb where khid=(X)and year=(Y))入數(shù)據(jù)隊(duì)列,將節(jié)點(diǎn)2編號(hào)入編號(hào)隊(duì)列,節(jié)點(diǎn)1編號(hào)出隊(duì);
(3)遍歷編號(hào)隊(duì)列,隊(duì)頭編號(hào)對(duì)應(yīng)節(jié)點(diǎn)2不是葉子節(jié)點(diǎn),其與孩子節(jié)點(diǎn)3和節(jié)點(diǎn)4組成規(guī)則,則將數(shù)據(jù)隊(duì)列中第一條數(shù)據(jù)出隊(duì),填入兩孩子節(jié)點(diǎn)Rule字段,將這兩條新數(shù)據(jù)入數(shù)據(jù)隊(duì)列,兩節(jié)點(diǎn)編號(hào)依次入編號(hào)隊(duì),節(jié)點(diǎn)2編號(hào)出隊(duì);
(4)遍歷編號(hào)隊(duì)列,隊(duì)頭編號(hào)對(duì)應(yīng)節(jié)點(diǎn)3不是葉子節(jié)點(diǎn),同(3)處理方法,新數(shù)據(jù)入數(shù)據(jù)隊(duì)列,節(jié)點(diǎn)5編號(hào)入編號(hào)隊(duì),節(jié)點(diǎn)3編號(hào)出隊(duì).同理遍歷編號(hào)隊(duì)列,處理節(jié)點(diǎn)4;
(5)直至遍歷到節(jié)點(diǎn)5,其為葉子節(jié)點(diǎn),將數(shù)據(jù)隊(duì)頭做標(biāo)記,再將編號(hào)隊(duì)列以及數(shù)據(jù)隊(duì)列隊(duì)頭都出隊(duì).指針指向新隊(duì)頭編號(hào)節(jié)點(diǎn)6,其與孩子組成公式,則將數(shù)據(jù)隊(duì)列第1條數(shù)據(jù)對(duì)應(yīng)的Formula字段用對(duì)應(yīng)孩子節(jié)點(diǎn)的SQL字段替換,依次將孩子節(jié)點(diǎn)7和節(jié)點(diǎn)8編號(hào)入隊(duì),節(jié)點(diǎn)6編號(hào)出隊(duì);
(6)繼續(xù)遍歷編號(hào)隊(duì)列,由于節(jié)點(diǎn)7和節(jié)點(diǎn)8都是葉子節(jié)點(diǎn)則依次將數(shù)據(jù)隊(duì)頭做標(biāo)記,再將編號(hào)隊(duì)列以及數(shù)據(jù)隊(duì)列隊(duì)頭都出隊(duì).此時(shí)編號(hào)隊(duì)列為空,結(jié)束.
整個(gè)推理過(guò)程中作標(biāo)記的數(shù)據(jù)隊(duì)列中的數(shù)據(jù)即為進(jìn)入綜合銷(xiāo)售數(shù)據(jù)庫(kù)中進(jìn)行查詢的語(yǔ)句.
事實(shí)庫(kù)相當(dāng)于數(shù)學(xué)中"黑板"的功能,用于暫時(shí)存放煤炭銷(xiāo)售決策推理過(guò)程中產(chǎn)生的中間結(jié)果或事實(shí)等[5].本系統(tǒng)事實(shí)庫(kù)采用數(shù)據(jù)庫(kù)表存貯,其中存放:用戶輸入的數(shù)據(jù)、推理機(jī)推理過(guò)程中從知識(shí)庫(kù)事實(shí)表取出的description字段和sql字段內(nèi)容、編號(hào)隊(duì)列內(nèi)容、數(shù)據(jù)隊(duì)列內(nèi)容、sql執(zhí)行結(jié)果以及程序保存斷點(diǎn)信息,因此其相當(dāng)于一個(gè)大容量“黑板”,用戶可根據(jù)關(guān)鍵字進(jìn)行查詢.
解釋器負(fù)責(zé)提供對(duì)整個(gè)煤炭銷(xiāo)售決策推理過(guò)程的解釋.系統(tǒng)采用“路徑跟蹤法”記錄問(wèn)題求解的推理過(guò)程,推理機(jī)從事實(shí)庫(kù)中將已作標(biāo)記的數(shù)據(jù)取出進(jìn)入綜合數(shù)據(jù)庫(kù)中查詢,將查詢成功的那條sql語(yǔ)句的對(duì)應(yīng)樹(shù)查出,從根節(jié)點(diǎn)依次遍歷,將節(jié)點(diǎn)的事實(shí)信息從知識(shí)庫(kù)事實(shí)表description字段取出,存入事實(shí)表,解釋器從事實(shí)表中取出按行顯示即是推理的整個(gè)過(guò)程.
網(wǎng)絡(luò)化煤炭銷(xiāo)售決策專家系統(tǒng)通過(guò)將專家知識(shí)經(jīng)驗(yàn)最終結(jié)構(gòu)化為數(shù)據(jù)庫(kù)運(yùn)算,運(yùn)用數(shù)據(jù)庫(kù)強(qiáng)大的查詢計(jì)算功能,實(shí)現(xiàn)知識(shí)推理和數(shù)值運(yùn)算結(jié)合,從而提供比初級(jí)的決策支持系統(tǒng)更有力的決策支持能力,使決策者從“報(bào)表轟炸”型決策向商業(yè)智能決策轉(zhuǎn)型.系統(tǒng)將企業(yè)現(xiàn)有的人力、物力、財(cái)力、技術(shù)、資金和信息等要素進(jìn)行最佳組合[6],通過(guò)動(dòng)態(tài)調(diào)整量和價(jià)的比例以達(dá)到利潤(rùn)的最大化,從而加快資金的周轉(zhuǎn),促成企業(yè)的良性循環(huán)和可持續(xù)發(fā)展.
[1]楊毅,孫超.基于數(shù)據(jù)倉(cāng)庫(kù)的煤炭運(yùn)銷(xiāo)決策支持系統(tǒng)研究[J].中國(guó)煤炭,2009(2):16-38.
[2]GEORGE F LUGER.Artificial Intelligence:Structures and Strategies for Complex Problem Solving Six Edition[M].Addison Wesley,2009.
[3]JOSEPH C GIARRATANO,GARY D RILEY.Expert Systems Principles and Programming[M].4th ed,Thomson,2005:18-21.
[4]印鑒,陳憶群,劉星成.專家系統(tǒng)原理與編程[M].4版,北京:機(jī)械工業(yè)出版社,2006.
[5]王阿川,繆天宇,曹軍.基于Web森林病蟲(chóng)害防治決策專家系統(tǒng)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(4):228-235.
[6]朱海濤.煤炭企業(yè)建設(shè)商業(yè)智能系統(tǒng)的思考[J].煤炭經(jīng)濟(jì)研究,2010,30(9):74-76.
[7]黃務(wù)蘭.一種新的基于產(chǎn)生式規(guī)則的推理樹(shù)結(jié)構(gòu)[J].微電子學(xué)與計(jì)算機(jī),2008,24(4):78-81.
[8]曹林,王阿川.基于WEBGIS林火決策專家系統(tǒng)的構(gòu)建[J].林業(yè)機(jī)械與木工設(shè)備,2010,38(3):44-46.
[9]孫莉莉,李軍,李懷佳.基于產(chǎn)生式探井決策專家系統(tǒng)的研究與應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(7):115-118.