APP下载

物流企业遴选业务项目的决策支持系统开发

2017-03-13广东石油化工学院机电工程学院陈继民赵晶英

电子世界 2017年4期
关键词:决策支持系统赋值矩阵

广东石油化工学院机电工程学院 陈继民 赵晶英

物流企业遴选业务项目的决策支持系统开发

广东石油化工学院机电工程学院 陈继民 赵晶英

随着物流行业深入发展,行业内部竞争趋势不断加大,由传统人为决策转由决策支持系统辅助决策是很有必要的。本文从决策支持系统出发,介绍了决策支持系统的组成以及发展,并且通过对一个实际项目中的核心实现部分进行分析,阐述了物流企业遴选业务项目的决策支持系统的开发。

决策支持系统;物流企业;矩阵类

1 决策支持系统的概述

决策支持系统(Decision Support System,也称为决策软件decision-making software-DMS),是一种基于计算机的信息系统。决策支持系统能够以决策者输入或者导入的数据,在商业或者组织中的决策问题上提供多种可选方案,并且对各种方案进行优劣计算、评估、结果排序等,通过人机交互的方式进行分析、比较和判断,为正确的决策提供必要的支持,从而达到辅助决策的目的。

1980年Sprague提出了组成决策支持系统三个组成成分(对话、数据、模型)[1],明确了决策支持系统的基本组成,极大地推动了决策支持系统的发展。现代的通用决策支持系统一般由数据处理、模型构造、交互对话(图形用户界面)组成。简要说来,决策支持系统的发展历程可以概括为四个阶段:20世纪60年代后期,开始出现了面向模型的决策支持系统,这也就标志着决策支持系统学科的开创;20世纪70年代起,决策支持系统开始稳步发展;20世纪80年代前中期,金融规划和群体决策支持系统开始出现,同时还有部分科学家提出了智能决策支持系统的设想;到了20世纪90年代中期,互联网的兴起,人们开始关注和开发基于Web的决策支持系统,随着网络及计算性能等诸多问题,基于分布式的的综合决策支持系统也开始得到发展[2]。

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 最终实现结果

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
(College of Mechanical & Electrical Engineering,Guangdong University of Petrochemical Technology,Maoming,Guangdong 525000,China)

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)。

猜你喜欢

决策支持系统赋值矩阵
关于1 1/2 … 1/n的一类初等对称函数的2-adic赋值
护理临床决策支持系统的理论基础
L-代数上的赋值
临床决策支持系统应用于呼吸疾病的现状概述
强赋值幺半群上的加权Mealy机与加权Moore机的关系*
电务维修决策支持系统研究
初等行变换与初等列变换并用求逆矩阵
利用赋值法解决抽象函数相关问题オ
县级防汛辅助决策支持系统的设计与实现
矩阵