多准则决策–Multiple Criteria Decision Making

                    <div id="wmd-preview" class="preview-content"></div>
<div id="wmd-preview-section-15736" class="wmd-preview-section preview-content">

多准则决策–Multiple Criteria Decision Making

多准则决策是指在具有相互冲突、不可共度的有限(无限)方案集中进行选择的决策。它是分析决策理论的重要内容之一。机理特点概述:

  • 项目众多 :可进行多个项目的评判、排队和选优;
  • 因子细化 :对一个项目进行研究时,每个影响因子都以主判这个项目的准则对待,并对因子的数值要进行一系列的信息加工和提取,给各因子的重要性赋以权重;
  • 多维决策 :将项目评估表看做是一个决策判断矩阵,然后采用十多种决策判别方法组织信息,组合成一个分析机理性强的动态分析系统,进而借助于现代化的计算机技术快速完成信息加工;还可组织决策会议,快速反应决策参与人的意见,利于形成一致性观点。

多准则决策概述

多准则决策(MCDM)根据决策方案是有限还是无限,而分为多属性决策(MADM)与多目标决策(MODM )两大类。[ —— 维基百科]

基本分类

名称 英文 缩写
多准则决策 Multiple Criteria Decision Making MCDM
多属性决策 Multi-Attribute Utility Theory MADM
多目标决策 Multiple Objective Decision Making MODM
  • MADM :为了一个特定的目的在若干备选方案中确定一个最优的,或者对这些方案按照优劣进行排序,或者给出优劣程度的数量结果, 而方案的优劣由若干属性给以定量或定性的表述。

  • MODM :为了若干特定的(一般是相互矛盾的)目标在若干备选方案中确定一个一定意义下最优的,而备选方案集合由一些约束条件给定。

应用领域

  • MADM :国家综合实力评价、大学排名榜、公司新厂址选择、教师绩效考核、2011B题各区交警平台设置的合理性评价、2010D题学生宿舍设计方案的评价 、2009B题病床安排的合理性指标等。

  • MODM :选择收益大且风险小的投资组合、照顾乘客和航空公司双方利益的航班安排、 2011B题交警平台设置要考虑出警时间和工作量均衡、2009B题病床安排方案要考虑公平和效率两方面、2009 D题会议筹备要考虑预订宾馆、会议室的数量、费用、距离等。

详细介绍—以TOPSIS方法为例

多属性决策有四种常用方法SAW、WP、TOPSIS、ELECTRE

TOPSIS — 接近理想解的排序法由Yoon和Hwang开发,又称逼近理想解排序法(Technique for Order Preference by Similarity to Ideal Solution)。这种方法通过构造多属性问题的理想解和负理想解,以方案靠近理想解和远离负理想解两个基准作为方案排序的准则,来选择最满意方案。

  • 理想解:就是设想各指标属性都达到最满意值的解;
  • 负理想解:就是设想各指标属性都达到最不满意值的解。

视n个属性、m个方案为n维空间中m个点的几何系统,则:

  • 每个点的坐标由确定
  • 在空间中定义欧氏距离,决策矩阵模一化
  • 正理想解由所有最优加权属性值构成
  • 负理想解由所有最劣加权属性值构成
  • 定义距正理想解近、距负理想解远的数量指标 —— 相对接近度
  • 备选方案的优劣顺序按照相对接近度确定



图中A*为理想解,A-为负理想解

TOPSIS决策的步骤

  1. 建立决策矩阵,权重向量
  2. 矩阵标准化
  3. 构造加权规范化矩阵
  4. 确定理想方案和负理想方案
  5. 计算各方案到理想方案和负理想方案的距离
  6. 计算各方案的贴进度并排序

R语言实现-代码块

MCDM=function (decision = NULL, weights = NULL, impacts = NULL) #决策矩阵,权重向量,影响因子
{
if (missing(weights))
stop("缺少'权重向量-weights'")
if (missing(impacts))
stop("缺少'影响因子-impacts'")
if (!is.matrix(decision) | is.data.frame(decision))
stop("'决策矩阵-decision'必须是矩阵或数据框")
if (length(weights) != ncol(decision))
stop("权重向量长度错误")
if (length(impacts) != ncol(decision))
stop("影响因子长度错误")
if (!all(weights > 0))
stop("权重必须大于零")
if (!is.character(impacts))
stop("影响因子必须是字符型 '+'或'-' 符号")
if (!all(impacts == "+" | impacts == "-"))
stop("影响因子只能是字符型 '+'或'-' 符号")
weights <- weights/sum(weights)
N <- matrix(nrow = nrow(decision), ncol = ncol(decision)) #建一个空矩阵
for (i in 1:nrow(decision)) {
for (j in 1:ncol(decision)) {
N[i, j] <- decision[i, j]/sqrt(sum(decision[, j]^2))
}
} #决策矩阵标准化
W = diag(weights) #建权重对角矩阵
V = N %*% W #构造加权规范化矩阵

#确定理想方案和负理想方案
u <- as.integer(impacts == "+") * apply(V, 2, max) + as.integer(impacts ==
"-") * apply(V, 2, min)
l <- as.integer(impacts == "-") * apply(V, 2, max) + as.integer(impacts ==
"+") * apply(V, 2, min)

#构建理想方案和负理想方案距离公式
distance_u = function(x) {
sqrt(sum((x - u)^2))
}
distance_l = function(x) {
sqrt(sum((x - l)^2))
}

#计算相对接近度并排序
du <- apply(V, 1, distance_u)
dl <- apply(V, 1, distance_l)
score <- dl/(dl + du)
outcome <- data.frame("方案"= 1:nrow(decision), 得分 = score,
排名 = rank(-score))
return(outcome)
}

算法测算模拟

例: 选择战斗机 (4种型号)



各方案对属性的定量取值或定性表述

变量 含义 单位
X1 最高速度 马赫
X2 航程 千海里
X3 最大载荷 千磅
X4 价格 百万美元
X5 可靠性
X6 机动性

对X5, X6表述的量化: “很高”、“高”、“中”、“低”、“很低” 记分9,7,5,3,1。则:



决策矩阵

#决策矩阵d,权重向量w,影响因子i
dm=c(2.0,1.5,20,5.5,5,9,
2.5,2.7,18,6.5,3,5,
1.8,2.0,21,4.5,7,7,
2.2,1.8,20,5.0,5,5)
d <- t(matrix(dm, ncol = 4))
w <- c(3, 1, 2,1, 1, 2)
i <- c("+", "+", "+", "-", "+", "+")

outcome=MCDM(d, w, i)
plot(1:nrow(outcome),outcome[,2],ylim=c(0,1),
cex.axis=1.5,xaxt="n",xlab="方案",ylab="得分",
main="多准则决策模型-TOPSIS评价方法", pch = 20,
cex =10*outcome[,2],col = rainbow(nrow(outcome)))
text(1:nrow(outcome),outcome[,2],as.character(outcome[,3]))
axis(1,labels=c("A","B","C","D"),at=1:4,las=1)

输出结果

方案 得分 排名
A1 0.56 1
A2 0.43 3
A3 0.48 2
A4 0.36 4

注意:属性权重应根据决策目标通过主观经验、调查等先验地给出,或者通过客观量化标准获取,以及两种方法的综合,本例权重向量w影响因子i纯虚构,旨在演示方法。

提示:想了解更多,请查看Multiple-criteria decision analysis—-维基百科

反馈与建议


感谢阅读这份文档。

多准则决策模型-TOPSIS方法的更多相关文章

  1. 多准则决策模型-TOPSIS评价方法-源码

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...

  2. Q准则涡识别方法

    Q准则(Q Criterion)在涡识别中计算效率高,效果也不错,是一种常用的涡提取/识别方法. 了解Q准则需要从速度梯度张量入手,而速度梯度张量可以分解成两部分 \[\frac{\partial u ...

  3. 深入解析字符串的比较方法:“==”操作符;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。

    1:要判断2个字符串变量是否相等,最高效的方法是看它们是否指向相同的内存地址.前面使用RefernceEquals方法来比较.如果2个变量指向的是不同的内存地址,那么就需要逐字符的比较2个字符串的变量 ...

  4. C#基础知识之字符串比较方法:“==”操作符;RefernceEquals;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。

    一.“==”操作符:String.Equals:ReferenceEquals 方法 1.在编程中实际上我们只需要这两种比较,c#中类型也就这两种 (1)值类型的比较:一般我们就是判断两个值类型实例各 ...

  5. ASP.NET路由模型解析

    大家好,我又来吹牛逼了 ~-_-~ 转载请注明出处:来自吹牛逼之<ASP.NET路由模型解析> 背景:很多人知道Asp.Net中路由怎么用的,却不知道路由模型内部的运行原理,今天我就给大家 ...

  6. 决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)

    1. 1.问题的引入 2.一个实例 3.基本概念 4.ID3 5.C4.5 6.CART 7.随机森林 2. 我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款? ...

  7. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  8. (转)java性能调优

    本文转自:http://blog.csdn.net/lilu_leo/article/details/8115612 一.类和对象使用技巧 1.尽量少用new生成新对象 用new创建类的实例时,构造雨 ...

  9. SHELL编程笔记(二)之shell流程控制

    Shell控制流程结构 本章内容有:   退出状态   While.for和until loops循环   If then else语句   脚本中动作   菜单 条件控制语句 If then els ...

随机推荐

  1. CSS-JQUERY笔记

    Ready $(document).ready(function(){ }) Input_div_span Input-长度限制 <input maxLength="2"&g ...

  2. HTML5本地存储之localStorage、sessionStorage

    1.概述 localStorage和sessionStorage统称为Web Storage,它使得网页可以在浏览器端储存数据. sessionStorage保存的数据用于浏览器的一次会话,当会话结束 ...

  3. SecureCRT使用

    SecureCRT可以说是linux远程终端的代名词,关于它的一些技巧必须掌握,,, 1.解决中文乱码 登陆主机,运行locale命令,确定语言选项LANG是否为 zh_CN.gb2312 或者 en ...

  4. 项目演化系列--验证体系(基于angular的前端验证)

    前言 之前分享的<web项目演化--验证体系>中提到基于angular的验证,但是为了以防读者迷惑,能够好的理解验证体系,所以没有详细介绍. 今天特地补写一篇关于构建angular的验证. ...

  5. Django Push HTTP Response to users

    Django Push HTTP Response to users I currently have a very simple web application written in Django, ...

  6. 金蝶EAS常用表

    select * from T_SCM_BillType where FName_L2 like '%委外%'   --单据类型表,查业务单据对应的表  102--销售出库单  330--应收单 se ...

  7. Arcgis报错: Bad login user Failed to execute (CreateEnterpriseGeodatabase).

    在使用工具Create Enterprise Geodatabase的时候报错Bad login user,开始怀疑为密码错误,然后反复在plsql中尝试发现并没有错误,很疑惑,然后去官网查询: Er ...

  8. Hadoop入门进阶课程13--Chukwa介绍与安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  9. IT人的自我导向型学习:开篇杂谈

    报考大学时,家人让我报的是计算机系,那个时候,普遍都认为读计算机专业的人将来不用愁找不到工作.为何得出这样的结论不得而知,但是在过去三十年中,的确有很多响当当赚了大钱的IT人在影响着我们. 顺利的考取 ...

  10. Docker 定制容器镜像的2种方法

    一.需求 由于在测试环境中使用了docker官网的centos 镜像,但是该镜像里面默认没有安装ssh服务,在做测试时又需要开启ssh.所以上网也查了查资料.下面详细的纪录下.在centos 容器内安 ...