多准则决策–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. 关于"The dependency was added by the project system and cannot be removed" Error

    阅读一个简单地工程代码,其中一个工程BaseCode是 static lib,另一个工程RunBaseCode使用该lib,但在工程设置的“Linker\Input\AdditionalDepende ...

  2. Jquery中使用setInterval和setTimeout会提示缺少对象的错误,解决方法如下:

    直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...

  3. SQL语句转摘

    http://www.cnblogs.com/Olive116/p/3271706.html 收藏没有用,来收到留链接

  4. Java实现动态代理的两种方式

    http://m.blog.csdn.net/article/details?id=49738887

  5. 使用jQuery开发一个带有密码强度检验的超酷注册页面

    在今天的jQuery教程中,我们将介绍如何使用jQuery和其它相关的插件来生成一个漂亮的带有密码强度检验的注册页面,希望大家喜欢! 相关的插件和类库 complexify - 一个密码强度检验jQu ...

  6. 各种UserAgent的列表

    User Agent是浏览器用于 HTTP 请求的用户代理头的值.更换User Agent能更好的模拟出不同的系统和浏览器信息. Android Name User Agent Nexus 7 (Ta ...

  7. 为android项目集成maven

    为什么要为android项目增加maven集成功能呢?这里我想到几个主要理由: 部署测试人员和开发人员的角色分离,让他们摆脱eclipse开发环境设置android sdk环境,直接在服务器上运行一个 ...

  8. 个人对joomla3.2x和joomla2.5X浅薄看法

    很久没有写joomla文章了,发现想写的东西还是挺多的,后面抽时间补回来,其实更多还是php的一些东西.joomla3.0以后系统改变挺大,后台都是用bootstrap作为主题,个人对这个无爱,因为他 ...

  9. NVIDIA CuDNN 安装说明

    CuDNN是专门针对Deep Learning框架设计的一套GPU计算加速方案,目前支持的DL库包括Caffe,ConvNet, Torch7等. CuDNN可以在官网免费获得,注册帐号后即可下载.官 ...

  10. DirectWrite文字排版——字符串去尾

    DirectWrite是 DirectX 家族中专门用来做文本处理的部分,主要配合Direct2D进行渲染工作. 一.字符串去尾介绍 在文字渲染中,不免会遇到字符串去尾的需求.字符串去尾指的是:当字符 ...