邱占芝,巨貝貝
(大連交通大學 軟件學院,遼寧 大連 116028)
隨著企業(yè)信息化建設(shè)的快速發(fā)展,煤炭企業(yè)生產(chǎn)與經(jīng)營信息呈現(xiàn)出非線性遞增趨勢.然而信息量的海量增長并不能直接簡化企業(yè)決策本身,煤炭企業(yè)的銷售決策仍然是以決策者的經(jīng)驗和直覺為基礎(chǔ).如何將市場信息、客戶信息、企業(yè)生產(chǎn)信息、鐵路運力等諸多數(shù)據(jù)[1]和決策經(jīng)驗有機結(jié)合,通過既定邏輯推理做出科學的分析,從而制訂最佳的決策,成為企業(yè)的迫切需求和信息化建設(shè)的熱點.
網(wǎng)絡化煤炭銷售決策專家系統(tǒng)(CDES,Coal sales Decision making Expert System)利用專家系統(tǒng)的基本理念,綜合集成了智能化綜合銷售數(shù)據(jù)庫和專家知識庫,通過模擬專家的推理邏輯得出更接近求解環(huán)境的決策結(jié)論,為決策者提供具有專家水準的咨詢幫助,提高決策的科學性和有效性.CDES可根據(jù)市場供求動態(tài)數(shù)據(jù),生成自適應的煤炭價格,并根據(jù)客戶的相應歷史記錄,有浮動的調(diào)整銷售價格;根據(jù)已簽訂合同和礦區(qū)生產(chǎn)情況預測未來銷售情況,有效把握市場動態(tài)、客戶需求和生產(chǎn)情況.專家系統(tǒng)的自學習能力,一方面通過決策者參與系統(tǒng)的決策過程提高了系統(tǒng)的決策技能,另一方面大量的數(shù)據(jù)流入為決策者制定相應決策提供了更為寬泛的選擇空間.
網(wǎng)絡化煤炭銷售決策專家系統(tǒng)架構(gòu)于煤炭企業(yè)現(xiàn)有的信息管理系統(tǒng)基礎(chǔ)之上,一方面通過構(gòu)建煤炭銷售決策知識庫提供既有專家經(jīng)驗的決策支持,另一方面通過集成的智能化綜合銷售數(shù)據(jù)庫,利用商業(yè)智能(Business Intelligence,BI)技術(shù),對企業(yè)數(shù)據(jù)進行有效挖掘并形成初級潛在規(guī)則,這些初級規(guī)則進過煤炭銷售專家的驗證與抽象,成為具有真正決策價值的銷售經(jīng)驗.系統(tǒng)通過兩方面的集成實現(xiàn)信息技術(shù)和專家經(jīng)驗的融合,具有高效的決策科學性及智能性.
系統(tǒng)具體功能包括對已簽訂合同的單個客戶進行月、季度以及年銷售計劃的決策及預測,主要模塊包括:單價決策,銷售量預測,知識庫管理,系統(tǒng)管理等,系統(tǒng)管理主要包括用戶登錄管理、權(quán)限管理、對過往決策內(nèi)容提供查詢及對各類數(shù)據(jù)庫的維護.
(1)單價決策
單價決策功能完成對合同客戶銷售計劃中煤炭單價的決策,其決策結(jié)論主要從客戶信息、煤質(zhì)信息、市場供需、以及國家政策這幾個方面綜合分析得出.客戶信息分析:從合同信息區(qū)分客戶類型、運費計算情況;通過查詢客戶有無商業(yè)糾紛或者不良購煤行為等信息,自動確定信用等級,通過查詢客戶回款情況進行價格適當調(diào)整;煤質(zhì)信息分析:根據(jù)各煤種有效定價參數(shù),通過轉(zhuǎn)換公式計算各煤種單價區(qū)間;市場供需分析:有無自然災害、人為事故和季節(jié)因素影響市場總體價格;國家政策分析:國家近期有無對整體煤價進行價格調(diào)控.
(2)銷售量預測
銷售量預測功能可根據(jù)合同客戶簽訂的合同信息、礦區(qū)生產(chǎn)情況以及庫存量,對簽訂合同客戶進行銷售量的預測,影響因素包括客戶合同情況以及庫存量,其預測區(qū)間可選擇按月、季度或者年.
(3)知識庫管理
知識庫管理功能面向?qū)<医涌冢芾韺ο鬄閷Ρ鞠到y(tǒng)所使用的知識模型.專家系統(tǒng)在使用之后,為了保證其結(jié)論的有效性,需要對知識庫進行維護,維護內(nèi)容包括:結(jié)合市場情況增加新的決策知識,刪除、修改不合理的知識以及對更新后的知識進行正確性、一致性、完整性檢查,提高知識的質(zhì)量.
系統(tǒng)主要包括知識庫、綜合信息數(shù)據(jù)庫、知識庫管理器、推理機、事實庫、解釋器、數(shù)據(jù)庫維護以及人機交互界面幾個部分,如圖1所示:
圖1 系統(tǒng)結(jié)構(gòu)圖
知識庫是專家系統(tǒng)重要組成部分,是專家經(jīng)驗和知識的存儲體;推理機實質(zhì)上是知識庫的一個解釋器[2],其根據(jù)一定的推理邏輯應用知識來求解用戶輸入的實際問題;解釋器幫助用戶理解整個問題求解的推理過程;事實庫中存放用戶輸入的待解決問題信息、推理過程中產(chǎn)生的過程數(shù)據(jù)以及供解釋器調(diào)用的事實數(shù)據(jù).
綜合信息數(shù)據(jù)庫是整個系統(tǒng)的數(shù)據(jù)基礎(chǔ),其一方面為邏輯推理過程提供可靠數(shù)據(jù),例如運銷管理系統(tǒng)數(shù)據(jù)庫的各種報表,客戶信息、礦區(qū)生產(chǎn)信息、合同信息等;另一方面通過DW、OLAP工具和DM等商業(yè)智能技術(shù),從數(shù)據(jù)中挖掘出隱含的、先前未知的、對決策有潛在價值的關(guān)系和趨勢,專家通過分析、抽象和優(yōu)化,從而得出深層次上的決策信息.
系統(tǒng)采用三層瀏覽器/服務器(簡稱B/S)結(jié)構(gòu),其分離的業(yè)務邏輯層、表示層和數(shù)據(jù)處理層大大提升了系統(tǒng)的數(shù)據(jù)處理能力、穩(wěn)定性和安全性.數(shù)據(jù)庫管理系統(tǒng)采用微軟公司的SQL Server2005,其不但完成對數(shù)據(jù)準確且高效的處理,又能保障數(shù)據(jù)的安全性、系統(tǒng)維護與升級的便捷性.
設(shè)計知識庫的首要問題就是根據(jù)煤炭銷售決策要求確定適當?shù)闹R表示方法,從而保證其知識的可擴充性、簡潔性和清晰性[3].本系統(tǒng)知識庫分為常識性知識和專業(yè)知識兩大部分,包括煤炭行業(yè)各類相關(guān)標準、法律法規(guī)、書籍知識以及專家長期總結(jié)的經(jīng)驗知識等,因此知識表示采用較為成熟的產(chǎn)生式規(guī)則表示方法[4],即IF P THEN Q的形式.知識獲取方式主要由人工挖掘、搜集、分析、綜合、整理、歸納將知識結(jié)構(gòu)化,最終以sql語句的形式存入關(guān)系數(shù)據(jù)庫.系統(tǒng)知識庫包括rule表、fact表和formula表,表結(jié)構(gòu)如表1~表3.
表1 rule表結(jié)構(gòu)
表3 fact表結(jié)構(gòu)
Rule表中存放規(guī)則信息,其中:①id:規(guī)則編號,作為主鍵;②premier:規(guī)則前件;(3)conclu-sion:規(guī)則后件;Formula表中存放公式以及其條件的對應關(guān)系:①id:公式編號;②formula:公式;③condition:計算公式所需的條件;Fact表中存放事實信息及相對應的sql語句,其中:①id:事實信息編號;②description:事實信息;③sql:事實信息對應的sql語句.
rule表中premier和conclusion字段以及formula表中formula和condition字段存入的內(nèi)容均來自fact表中的id號.Rule表中的一條記錄代表一條規(guī)則,formula表中的一條記錄代表一個公式所需的一個條件.
例如煤炭銷售決策中決定單價部分,如果客戶今年合同表中的合同單價<1這代表此合同單價計算方式為以卡計價,則實際單價=合同單價*熱值/0.238 89;如果合同單價≥1,則實際單價等于合同單價.規(guī)則如下:
(1)規(guī)則1:如果當年合同表中有此客戶,則查詢當年合同單價;
(2)規(guī)則2:如果合同單價<1,則實際單價=合同單價*熱值/0.238 89值;
(3)規(guī)則3:如果合同單價>1,則實際單價=合同單價.
rule表和fact表內(nèi)容如表4~表6:
表4 實例fact表(X年份,Y表示客戶編號)
表5 實例rule表
表6 實例formula表
為了保證煤炭銷售專家系統(tǒng)推理機的效率,系統(tǒng)采用判定樹推理方法,以正向推理為其控制策略.判定樹的樹形結(jié)構(gòu)的合理性決定推理過程的高效性,所以構(gòu)造一顆高效的推理樹是設(shè)計的目標.
經(jīng)過分析,可將各個節(jié)點分為4類:①葉子節(jié)點:含有結(jié)論數(shù)據(jù)的查詢;②非根子節(jié)點:含有推理過程的查詢;③第一個非0的父親節(jié)點:僅表示推理最初條件;④公式樹節(jié)點:表示一個公式,其子節(jié)點代表公式所需要的條件.節(jié)點間的關(guān)系可以表示整個推理的過程:①任意一個非葉子節(jié)點可以表示為條件P;②任意非公式樹間的連線表示一條規(guī)則;③公式樹不表示推理規(guī)則.
推理機根節(jié)點0為用戶輸入,輸入成功則開始構(gòu)造判定樹,整個推理過程需要分析整個事件,最終將整棵樹節(jié)點中相應的sql語句組合,進入綜合數(shù)據(jù)庫查詢.以上例煤炭銷售決策中決定單價部分具體來說明,其判定樹結(jié)構(gòu)圖2:
圖2 判定樹結(jié)構(gòu)
圖2中節(jié)點0:輸入數(shù)據(jù)成功.節(jié)點1:當年合同表有此客戶節(jié)點2:查詢當年合同單價.節(jié)點3:合同單價 >=1.節(jié)點4:合同單價 <1.節(jié)點5:合同單價.節(jié)點6:實際單價=合同單價*熱值/0.238 89.節(jié)點 7:熱值.節(jié)點 8:0.238 89.
組合sql語句的過程是從根節(jié)點開始的:
(1)遍歷樹將第一個非0的父親節(jié)點編號入編號隊列,將其sql語句入數(shù)據(jù)隊列,轉(zhuǎn)到(2);
(2)若該節(jié)點與其孩子節(jié)點組成規(guī)則,則轉(zhuǎn)到(3);若與其孩子表示公式,則轉(zhuǎn)到(5);
(3)將第1條數(shù)據(jù)出隊,用此數(shù)據(jù)代替孩子節(jié)點中的Rule字段,將新生產(chǎn)的數(shù)據(jù)入數(shù)據(jù)隊,將此孩子節(jié)點編號入編號隊,當孩子節(jié)點有k個時將分別有k條數(shù)據(jù)入數(shù)據(jù)隊和編號隊.當孩子節(jié)點編號全部入編號隊時,該節(jié)點編號出隊,轉(zhuǎn)到(4);
(4)遍歷編號隊列,若隊頭編號對應節(jié)點不是葉子節(jié)點則轉(zhuǎn)到轉(zhuǎn)到(2),否則將數(shù)據(jù)隊列隊頭做標記,再將編號隊列以及數(shù)據(jù)隊列隊頭都出隊.指針指向新隊頭編號節(jié)點,轉(zhuǎn)到(2).若隊列空則算法結(jié)束;
(5)將第1條數(shù)據(jù)對應的Formula字段用對應孩子節(jié)點的SQL字段替換,依次將孩子節(jié)點編號入隊,該節(jié)點編號出隊,轉(zhuǎn)到(4).
結(jié)合上例組合sql語句過程如下:
(1)將節(jié)點1編號入編號隊列,其sql語句入數(shù)據(jù)隊列;
(2)節(jié)點1其與孩子節(jié)點2組成規(guī)則,則將第1條數(shù)據(jù)出隊即select htid from htb where khid=(X)and year=(Y),將它代替節(jié)點2sql語句的Rule字段,產(chǎn)生的新數(shù)據(jù) select price from htb where htid=(select htid from htb where khid=(X)and year=(Y))入數(shù)據(jù)隊列,將節(jié)點2編號入編號隊列,節(jié)點1編號出隊;
(3)遍歷編號隊列,隊頭編號對應節(jié)點2不是葉子節(jié)點,其與孩子節(jié)點3和節(jié)點4組成規(guī)則,則將數(shù)據(jù)隊列中第一條數(shù)據(jù)出隊,填入兩孩子節(jié)點Rule字段,將這兩條新數(shù)據(jù)入數(shù)據(jù)隊列,兩節(jié)點編號依次入編號隊,節(jié)點2編號出隊;
(4)遍歷編號隊列,隊頭編號對應節(jié)點3不是葉子節(jié)點,同(3)處理方法,新數(shù)據(jù)入數(shù)據(jù)隊列,節(jié)點5編號入編號隊,節(jié)點3編號出隊.同理遍歷編號隊列,處理節(jié)點4;
(5)直至遍歷到節(jié)點5,其為葉子節(jié)點,將數(shù)據(jù)隊頭做標記,再將編號隊列以及數(shù)據(jù)隊列隊頭都出隊.指針指向新隊頭編號節(jié)點6,其與孩子組成公式,則將數(shù)據(jù)隊列第1條數(shù)據(jù)對應的Formula字段用對應孩子節(jié)點的SQL字段替換,依次將孩子節(jié)點7和節(jié)點8編號入隊,節(jié)點6編號出隊;
(6)繼續(xù)遍歷編號隊列,由于節(jié)點7和節(jié)點8都是葉子節(jié)點則依次將數(shù)據(jù)隊頭做標記,再將編號隊列以及數(shù)據(jù)隊列隊頭都出隊.此時編號隊列為空,結(jié)束.
整個推理過程中作標記的數(shù)據(jù)隊列中的數(shù)據(jù)即為進入綜合銷售數(shù)據(jù)庫中進行查詢的語句.
事實庫相當于數(shù)學中"黑板"的功能,用于暫時存放煤炭銷售決策推理過程中產(chǎn)生的中間結(jié)果或事實等[5].本系統(tǒng)事實庫采用數(shù)據(jù)庫表存貯,其中存放:用戶輸入的數(shù)據(jù)、推理機推理過程中從知識庫事實表取出的description字段和sql字段內(nèi)容、編號隊列內(nèi)容、數(shù)據(jù)隊列內(nèi)容、sql執(zhí)行結(jié)果以及程序保存斷點信息,因此其相當于一個大容量“黑板”,用戶可根據(jù)關(guān)鍵字進行查詢.
解釋器負責提供對整個煤炭銷售決策推理過程的解釋.系統(tǒng)采用“路徑跟蹤法”記錄問題求解的推理過程,推理機從事實庫中將已作標記的數(shù)據(jù)取出進入綜合數(shù)據(jù)庫中查詢,將查詢成功的那條sql語句的對應樹查出,從根節(jié)點依次遍歷,將節(jié)點的事實信息從知識庫事實表description字段取出,存入事實表,解釋器從事實表中取出按行顯示即是推理的整個過程.
網(wǎng)絡化煤炭銷售決策專家系統(tǒng)通過將專家知識經(jīng)驗最終結(jié)構(gòu)化為數(shù)據(jù)庫運算,運用數(shù)據(jù)庫強大的查詢計算功能,實現(xiàn)知識推理和數(shù)值運算結(jié)合,從而提供比初級的決策支持系統(tǒng)更有力的決策支持能力,使決策者從“報表轟炸”型決策向商業(yè)智能決策轉(zhuǎn)型.系統(tǒng)將企業(yè)現(xiàn)有的人力、物力、財力、技術(shù)、資金和信息等要素進行最佳組合[6],通過動態(tài)調(diào)整量和價的比例以達到利潤的最大化,從而加快資金的周轉(zhuǎn),促成企業(yè)的良性循環(huán)和可持續(xù)發(fā)展.
[1]楊毅,孫超.基于數(shù)據(jù)倉庫的煤炭運銷決策支持系統(tǒng)研究[J].中國煤炭,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版,北京:機械工業(yè)出版社,2006.
[5]王阿川,繆天宇,曹軍.基于Web森林病蟲害防治決策專家系統(tǒng)研究[J].計算機技術(shù)與發(fā)展,2008,18(4):228-235.
[6]朱海濤.煤炭企業(yè)建設(shè)商業(yè)智能系統(tǒng)的思考[J].煤炭經(jīng)濟研究,2010,30(9):74-76.
[7]黃務蘭.一種新的基于產(chǎn)生式規(guī)則的推理樹結(jié)構(gòu)[J].微電子學與計算機,2008,24(4):78-81.
[8]曹林,王阿川.基于WEBGIS林火決策專家系統(tǒng)的構(gòu)建[J].林業(yè)機械與木工設(shè)備,2010,38(3):44-46.
[9]孫莉莉,李軍,李懷佳.基于產(chǎn)生式探井決策專家系統(tǒng)的研究與應用[J].計算機系統(tǒng)應用,2010,19(7):115-118.