廣東石油化工學院機電工程學院 陳繼民 趙晶英
物流企業遴選業務項目的決策支持系統開發
廣東石油化工學院機電工程學院 陳繼民 趙晶英
隨著物流行業深入發展,行業內部競爭趨勢不斷加大,由傳統人為決策轉由決策支持系統輔助決策是很有必要的。本文從決策支持系統出發,介紹了決策支持系統的組成以及發展,并且通過對一個實際項目中的核心實現部分進行分析,闡述了物流企業遴選業務項目的決策支持系統的開發。
決策支持系統;物流企業;矩陣類
決策支持系統(Decision Support System,也稱為決策軟件decision-making software-DMS),是一種基于計算機的信息系統。決策支持系統能夠以決策者輸入或者導入的數據,在商業或者組織中的決策問題上提供多種可選方案,并且對各種方案進行優劣計算、評估、結果排序等,通過人機交互的方式進行分析、比較和判斷,為正確的決策提供必要的支持,從而達到輔助決策的目的。
1980年Sprague提出了組成決策支持系統三個組成成分(對話、數據、模型)[1],明確了決策支持系統的基本組成,極大地推動了決策支持系統的發展。現代的通用決策支持系統一般由數據處理、模型構造、交互對話(圖形用戶界面)組成。簡要說來,決策支持系統的發展歷程可以概括為四個階段:20世紀60年代后期,開始出現了面向模型的決策支持系統,這也就標志著決策支持系統學科的開創;20世紀70年代起,決策支持系統開始穩步發展;20世紀80年代前中期,金融規劃和群體決策支持系統開始出現,同時還有部分科學家提出了智能決策支持系統的設想;到了20世紀90年代中期,互聯網的興起,人們開始關注和開發基于Web的決策支持系統,隨著網絡及計算性能等諸多問題,基于分布式的的綜合決策支持系統也開始得到發展[2]。
本文案例針對是廣東省八達通物流有限公司開發的一個物流企業遴選項目支持系統。八達通物流有限公司是1990年代成立的一家民營物流企業,致力于國內外速遞與跨境電子商務物流服務。主要客戶對象來自珠三角等城市。該企業正處于需要從經驗、人為決策向科學決策轉變的重要發展階段。
為了起到決策遴選項目的目的,軟件核心算法有以下幾點考慮:
(1)模型構造上采用低優、高優、區間這三種指標作為一級指標,此三類指標能夠包含所有常見的評價指標,使得一級指標全面性良好的情況下,還兼顧二級指標的可拓展性。如果在后期維護過程中,客戶企業希望增加多一些二級指標,對于維護人員而言只需要將其納入一級指標中的一類即可[3]。
(2)核心算法中應用了熵技術來確定同一層次中每個評價指標的相對權重,從而不需要對規范化之后的數據進行一致性檢驗[4],這樣子可以減少計算量,還可避免不必要的人為因素對決策結果的影響。
2.1 編程語言及環境的選擇
考慮到軟件的適用性,優先選擇 Windows 平臺,編程語言采用 C# 語言。C# 是由微軟公司于2000年發布的運行于Microsoft .NET Framework 之上的高級程序設計語言。C#是一種類型安全的、由C和C++衍生、結合多種語言優點而產生的面向對象的編程語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性(例如沒有宏以及不允許多重繼承)。 C# 綜合了VB簡單的可視化( 拖拽控件 )操作和C++的內部高運行效率,成為.NET開發的官方推薦語言。同時 C# 也是一門面向對象的編程語言。它使得程序員可以快速地編寫各種基于Microsoft .NET Framework平臺的應用程序。其次編程環境采用Microsoft Visual Studio,因為其內置了大量完整的開發工具,方便開發者進行軟件的編寫、測試、調試以及發布。
2.2 矩陣類的實現
在數學中,矩陣( Matrix )是一個形似長方形的復數或者實數集合,最早矩陣這個概念是由英國數學家凱利提出,矩陣一開始是提取自方程組的系數及常數所構成的方形陣列。同時在高等代數領域,矩陣也是一個十分常見的工具,例如統計分析等應用數學學科當中。本文核心算法大都采用矩陣表示,因此實現一個通用的矩陣類是可以很大程度上減少代碼量、增加可讀性。矩陣常見的運算包括矩陣的加、減、乘、轉置、共軛;同時還需要使用一些常用的矩陣分解。
將矩陣視為一個對象,矩陣本身包括矩陣的行數( row )和列數( column )(或者說高度和寬度),同時矩陣本身可能是沒有賦值的(null),如果有賦值的話,矩陣的數據應該存放在一個特定的數據結構,這個數據結構可以是很多種,這里為了簡單我們采用二維數組來存放對應的數據,當要獲取數值的時候,可以通過訪問對應的二位數組中的對應下標既可以得到數據。同時初始化一個矩陣時候應該賦予一個空值的數組或者將全部數值設為0。
至此,確定矩陣類的字段和屬性,代碼實現如下:
//Matrix lib 矩陣類
//定義行數
public int Row { get;set;}
//定義列數
public int Col { get;set;}
//定義矩陣元素,用一個二維數組
public double[,] A { get;set;}
在構造函數上的設計,主要考慮到算法實現的便捷性,一方面每個公式里面都是采用矩陣進行運算,所以為了防止因為出現空矩陣的情況,采用兩種構造函數的設計,實現算法時擇優選用,一種在聲明的時候可以賦值一個二維數組,另外一種是聲明的時候不賦值,但是會在聲明后手動賦值一個全為0的二維數組。部分代碼實現如下:
//第一個構造函數,創建時賦值
//第一個構造函數,創建時賦值
public matrix(int row,int col,double[,] aa)
{
this.Row = row;
this.Col = col;
A = aa;
}
//第二個構造函數,創建時不賦值,但是創建后建議賦予0
public matrix(int row,int col)
{
this.Row = row;
this.Col = col;
this.A = new double[this.Row,this.Col];
}
/// /// 返回當前對象的一個零矩陣 ///
/// { for (int i = 1;i < this.Row;i++) { for (int j = 1;j < this.Col;j++) { this.A[i,j] = 0; } } return this; } 此外在這個矩陣類中,還需要自定義一些矩陣的常規運算方法里,包含了常見的運算,由于運算式是形如 的形式,所以采用運算符重載的方式簡化代碼,分別需要考慮,兩個矩陣的運算、矩陣和常數、常數和矩陣三種情況。加法方法實現的部分代碼如下: //第一個重載+號運算符,使之計算矩陣與矩陣加法 public static matrix operator +(matrix m1,matrix m2) { matrix result = new matrix(m1.Row,m1.Col,m1.A); for (int i = 0;i < result.Row;i++) { for (int j = 0;j < result.Col;j++) { result.A[i,j] += m2.A[i,j]; } } return result; } //第二個重載+號運算符,使之計算數字和矩陣加法public static matrix operator +(double m1,matrix m2) { matrix result = new matrix(m2.Row,m2.Col,m2.A); for (int i = 0;i < result.Row;i++) { for (int j = 0;j < result.Col;j++) { result.A[i,j] += m1; } } return result; } //第三個重載+號運算符,使之計算矩陣和數字加法public static matrix operator +(matrix m1,double m2) { matrix result = new matrix(m1.Row,m1.Col,m1.A); for (int i = 0;i < result.Row;i++) { for (int j = 0;j < result.Col;j++) { result.A[i,j] += m2; } } return result; } 2.3 EXCEL數據的導入 一般而言,真實項目中的數據應該是比較多的,因此自動化的數據輸入是一個很有必要的特性。目前比較容易的方法有兩種,第一種是使用開源組件NOPI進行WORD/EXCEL文件的操作,NPOI是POI項目的.NET版本。POI是一個開源的Java讀寫微軟OLE2組件文檔的項目,使用NPOI的一大優點是不要求客戶機器上安裝OFFICE軟件。另外一種方法是使用微軟內置的可以與EXCEL交互的COM組件,但是這種較簡單的方法有一個要求,客戶相應環境的機器上一定需要安裝OFFICE軟件??紤]多種情況,在這里我們采用第二種方式才實現EXCEL文件的讀取。 2.4 圖形界面的實現 決策支持系統需要通過圖形用戶界面與用戶進行交互,在這里使用 Microsoft Winform 框架進行開發,可以通過拖拽/代碼兩種方式進行圖形界面的實現,最終部分實現界面如圖1和圖2所示:2.5 計算結果的可視化 圖1 部分實現圖形用戶界面 圖2 部分圖形用戶界面 考慮到數字的可讀性太差,因此最終計算結果應該以一種簡易的形式展現給用戶,最終決定以三維柱形圖來展現最終數據,這里選用MsChart這個內置組件作為圖形轉換的工具,使用MsChart可以很方便的將數據進行多種格式的轉換,二維、三維、柱狀圖、餅圖等等。最終實現結果如圖3所示: 圖3 最終實現結果 本文通過對決策支持系統的分析,闡述了決策支持系統的一些組成和發展,最后通過對八達通公司的特定決策支持系統的設計實現,著重討論了核心算法實現的一些思路,闡述了物流企業遴選業務項目的決策支持系統開發。 [1]Sprague R H.A Framework for the Development of Decision Support Systems[J].Mis Quarterly,1980,4(4):1-26. [2]陳雪凡.農家樂網絡訂餐系統的設計與實現[D].廈門:廈門大學,2013. [3]孫劍穎.從單用戶DSS到跨組織DSS的演化研究[J].中國管理信息化.2013,(17):49-51. [4]趙晶英,陳英俊,項順伯.物流企業遴選業務項目的熵權灰色關聯算法設計[J].浙江大學學報:理學版,2012(4):484-488. Development of decision support system for logistics enterprise selection project CHEN Ji-min ,ZHAO Jing-ying With the further development of the logistics industry,the internal competition trend of the industry is increasing.It is necessary to transfer the traditional decision-making to the decision support system.Based on the decision support system,It introduces the composition and development of decision support system,And through an actual project in the core part of the analysis,the development of the decision support system of logistics business selection project is expounded. decision support system;logistics enterprise;matrix class 陳繼民(1996—),男,廣東汕頭人,大學本科,研究方向:管理信息系統。 趙晶英(1981—),男,貴州黔西人,副教授。 廣東石油化工學院大學生創新創業培育計劃項目;廣東省省級科技計劃項目(2015A030401102)。


3 結論
(College of Mechanical & Electrical Engineering,Guangdong University of Petrochemical Technology,Maoming,Guangdong 525000,China)