基于VSTO开发EXCEL插件进行AHP分析的应用
- 格式:pdf
- 大小:461.44 KB
- 文档页数:3
医院消毒工作质量
目标层
灭菌后物品 灭菌柜 无菌物品
消毒器械
消毒后物品
消毒剂 紫外线灯 医护人员手 物体表面
准 则 层
院内空气
灭菌柜 合格率
无菌物品 合格率
消毒剂 合格率
紫外线灯 医护人员手 物体表面
合格率
合格率
合格率
方 院内空气 案 合格率 层
图 1 医院消毒效果层次结构模型 2.2 构造判断矩阵 根据 T.L.Saaty 的 1~9 级比例标度对层次结构模 型自上而下分层次一一对比评分,建立成对比较的判断优选矩阵 A= [aij]m×n,其中 aij 表示因素 i 相对于因素 j 的对比评分。
1 引言 人们在进行社会的、经济的以及科学管理领域问题的分析中,常
常会面临一个由相互关联、相互制约的众多因素构成的复杂问题。 这类问题往往是缺少定量的数据。层次分析法 (Analytic Hierarchy Process,简称 AHP)的提出为这类问题的决策和排序提供了一种新 的、简洁而实用的建模方法。它是由美国匹兹堡大学教授、运筹学家 托马斯·赛蒂(T.L.Saaty)于 20 世纪 70 年代提出,在 1982 年传入我 国,并迅速传播开来,目前已广泛应用于军事、经济、管理、能源分配 和医Байду номын сангаас等众多领域。
计算 Mi 的 n 次方根Wi = 姨n Mi ;对向量W =(W 1,W 2,……W n)T 进行归
n
Σ 一化Wi =
Wi
n
;计算判断矩阵的最大特征根 λmax= 1 (AW)i 。 n i = 1 nWi
ΣWk
k=1
2.4 一致性检验 所得到的权重是否合理,需要进行一致性检验。
Saaty
将一致性指标定义为
Application of Excel Add-in in AHP Based on VSTO
SONG Yong-lin,YANG Yi-chong,YANG Jun,ZHOU Yi
(Guangdong Pharmaceutical University(Zhongshan),Zhongshan 528458,China) Abstract:This paper introduces a Miscrosoft Excel add -in developed with the VSTO technology to achieve the application of Analytic Hierarchy Process.To illustrate this Excel add-in is simple and flexible, and can improve the efficiency of calculating the weight of each index,the author use a case on evaluation of hospital disinfection. Key words:AHP;VSTO;.Net Framework;Excel Add-in
cb_data.Add (setupSheet.Shapes.Item (i).TextFrame.Characters (Type.
Missing, Type.Missing).Text);
clb_data.Insert ((n-1),setupSheet.Shapes.Item(i).TextFrame.Char-
图 5 填写比较矩阵标度界面
图 2 插件界面 4.2 插件操作步骤 以图 1 的医院消毒效果评价案例[1]为例。第一步: 点击"添加目标"、"添加准则"、"添加方案"按钮,在"建立目标模型" 工作表中按需求添加相应的目标 (橙色方框)、若干准则或子准则 (蓝色方框)、若干方案(黄色方框),并修改名称,如图 3 所示;
图 7 层次总排序界面 插件生成的结果与文献[1]中案例的结果比较一致,如图 7 所示的 各方案的权重,说明该插件的计算结果可靠。 5 主要程序 该插件的核心部分是根据用户所建立的目标模型生成各判断矩 阵,主要思路是通过判断"建立目标模型"工作表中各圆角矩形图形 的颜色来区分"目标"、"准则"和"方案",并把"目标"和各"准则"加入 一个数组变量 cb_data 作为"建立隶属关系"窗口中 ComboBox 控件 的数据,把各"准则"和各"方案"加入一个数组变量 clb_data 作为"建 立隶属关系"窗口中 CheckedListBox 控件的数据。在用户给目标、准 则选择相应的隶属项的同时把各隶属关系加入到一个数组变量 al, 之后便可以通过历遍这个数组变量来生成各判断矩阵。这里主要介 绍一下如何获得数组变量 cb_data 和数组变量 clb_data 的主要程序 的代码片段(使用 C# 编程语言)。 //setupSheet 为"建立目标模型"工作表 for(int i=1;i<=setupSheet.Shapes.Count;i++){ if(setupSheet.Shapes.Item(i). Fill.ForeColor.RGB == 7912447)//获得表中图形 RGB 值为橙色的图 形,即目标层 { setupSheet.Shapes.Item (i).Name =setupSheet.Shapes.Item (i).TextFrame. Characters(Type.Missing,Type.Missing).Text;
医学信息 2011 年 9 月第 24 卷第 9 期 Medical Information. Sep. 2011. Vol. 24. No. 9
医学信息学
cb_data.Add (setupSheet.Shapes.Item (i).TextFrame.Char -
acters(Type.Missing, Type.Missing).Text);
}else if(setupSheet.Shapes.Item(i).
Fill.ForeColor.RGB == 16742530)//准则层
{
n ++ ;
setupSheet.Shapes.Item (i).Name = setupSheet.Shapes.
Item (i).TextFrame.Characters (Type.Missing,Type.Missing).Text;
图 6 层次单排序与一致性检验界面 分析结果"的工作表,插件会根据比较矩阵中的数据进行层次总排序 得出各方案的权重,如图 7 所示。
图 3 添加目标、准则、方案界面 第二步:点击"连线"按钮,在弹出的"建立隶属关系"窗口中,给 目标、准则选择相应的隶属项,如图 4 所示;
图 4 建立隶属关系界面 第三步:确定完隶属度之后,"建立隶属关系"窗口中的"生成比 较矩阵"按钮便可点击,点击该按钮就会在工作簿中添加一个名为" 比较矩阵"的工作表,并根据用户所建立的目标结构模型生成相应的 比较矩阵。如图 5 所示,用户需要在"比较矩阵"工作表中的灰色单元 格内填上相应的标度; 第四步:点击"一致性检验"按钮,插件会根据比较矩阵采用方根 法进行层次单排序和一致性检验,计算出相应的特征向量 Wio、最大 特征根 λmax、一致性指标 CI 和一致性比率 CR 等数据。如果未通过 一致性检验,"CR"下的单元格数据为红色字体,并提示未通过一致 性检验的矩阵个数,用户需要修改比较矩阵数据直至通过一致性检 验,如图 6 所示; 第五步:点击"计算总权重"按钮,工作簿会添加一个名为"层次 5984
能够使用 C# 或 创建强大的 Microsoft Office 解决方案扩展
Microsoft Office 应用程序的功能。
在 VSTO 之前,开发 Microsoft Office 解决方案的开发人员都是
使用 VBA(Visual Basic for applications)或者 C++创建共享的 COM 加
载项,但由于它们在用户界面、部署和安全性等方面的限制,给开发
者带来了很多的不便。
与 VSTO 不同,使用 VBA 代码是直接编写在 Office 应用程序的
IDE 中并且在运行时被编译,所以 VBA 脚本被储存在编写程序的文
档内部,而在 VSTO 中,这被叫做文档级的解决方案,这种解决方案
是指向发布的专门文档。VSTO 中又有一个叫做应用程序级解决方
松的进行 AHP 法分析问题。
5983
医学信息学
医学信息 2011 年 9 月第 24 卷第 9 期 Medical Information. Sep. 2011. Vol. 24. No. 9
4.1 插件界面介绍 点击插件的安装程序安装之后,程序会为主机安 装插件所需的运行环境和相应的配置,打开 Microsoft Excel 应用程 序会在菜单栏内添加一个名为"数据挖掘工具箱"的菜单项,点击该 菜单项中的"层次分析法(AHP)工具栏"即会弹出一个名为"AHP"的 工具栏,包括"添加目标"、"添加准则"、"添加方案"、"连线"、"一致性 检验"、"计算总权重"、"帮助"七个按钮,并且在工作簿中添加一个名 为"建立目标模型"的工作表,如图 2 所示。之后还会在工作簿中添加 名为"比较矩阵"、"层次分析结果"两个工作表。