C#毕业设计——基于C#+层次分析法+AHP的项目评审中专家遴选方法设计与实现(( 十 )


(5)可以自由选择决策矩阵的标准化方法 。需要使用标准化法将不同量纲的指标值标准化为无量纲的标准值,标准值将直接用作综合评价,因此选择出的标准化方法能够准确反映出原始数据之间的关系,会影响最后的综合评价的结果 。
以上目标的实现,使得专家遴选算法的仿真实验程序不仅仅可以用以检验也解决专家遴选算法问题,还可以运用于解决其他层次分析法支持的决策问题,从而可以拓展为此类基于层次分析法的决策支持系统的基础部分 。
4.2专家遴选算法的设计与实现
4.2.1算法程序的设计
为了实现第4.1.2的设计目标,系统程序将算法的核心部分与交互层独立开,将层次分析法的核心部分封装为一个类库 。该类库以自定义的数据结构矩阵为基础,实现了一个层次结构模型的数据结构 。
层次结构模型的数据结构包含了(1)层次的构造(2)判断矩阵的构造(3)单一准则排序权重向量的计算并检验其一致性(4)总目标排序权重向量的计算及并检验其一致性,这几个层次结构模型的主要操作 。
将算法核心分离出来的主要优点,就是使得专家遴选算法的核心——层次分析法的算法步骤可以重用 。同时交互层可以使用不同的框架,开发出B/S或者C/S的基于层次分析法的决策支持系统 。本系统中使用的是窗体程序作为与用户交互的界面,虽然没有华丽的界面,但是可以演示出算法的核心 。
4.2.2算法的实现与核心程序编码
本算法的实现使用的是面向对象的C#语言实现的 。C#语言继承自C++语言,有C++语言的很多优点,同时它是完全面向对象的,相比较C++语言而言更加安全,同时去除了C++语言中复杂性 。相比较Java语言而言,C#的编译和运行效率都要远高于后者 。
本系统程序中的主要实现了和Level两个数据结构,这两个数据结构是本算法的核心部分 。算法使用的主要类介绍如下 。
(1)类 。表示矩阵的数据结构,该类实现了矩阵的基本操作,包括矩阵相乘、矩阵的数乘、从各种对象导入数据、获得指定区域内的极值等 。除此之外,类还包括了一个重要的函数Power(),该函数返回一个矩阵的主特征值与主特征值对应的特征向量 。Power函数的实现是基于层次分析法的专家遴选算法的基础 。
(2)类 。继承自类,表示判断矩阵数据结构 。该类在继承了的基本特性的基础上,增加了判断矩阵的特性成员 。主要增加的三个属性,包括CI、RI、CR,用来表示一个判断矩阵的一致性指标、随机一致性指标、一致性比率 。还增加了一个t()函数,该函数返回的是通过该判断矩阵获得的相对于单准则排序向量 。
(3)类 。继承自类,表示决策矩阵数据结构 。该类在继承了的基本特性的基础上,增加了决策矩阵的特性 。决策矩阵主要增加了两个成员(1)level数据成员,Level类型的对象,表示用于生成决策矩阵的Level对象,该对象中保存着决策矩阵的各个指标的相关信息(2)()成员函数,该函数返回判断矩阵标准化之后的标准化矩阵(3)()成员函数,计算输出决策向量 。
(4)接口 。定义了标准化方法的标准 。所有的标准化方法的具体实现都必须实现该方法 。类的接受一个该类型的参数,用来实现对指标值的标准化 。
(5)类 。封装了一个因素的相关信息 。主要包括两个属性(1)Name,表示因素的名称(2),表示该因素是正向因素还是逆向因素,也就是说,该因素的值是越大越好还是越小越好 。
(6)Level类 。用来表示层次结构模型中的一个层次 。该类包含一组对该层次中所有因素对象的引用,使用一个矩阵来存储该层次中各个因素与上一层次的各个因素之间的关联,同时存储了该层次中相对于上一层各个因素的判断矩阵 。Level提供了几个重要函数,其中最重要的是()函数,该函数返回本层次中各个因素相对于总目标的总排序向量 。同时可以通过Level类的CI、RI、CR获得本层次的一致性检验指标值 。同时使用一个指向Level类型的引用,来建立上下层关系 。