多准则决策模型-TOPSIS方法

多准则决策–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个点的几何系统,则:

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

多准则决策模型-TOPSIS方法

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

TOPSIS决策的步骤

  1. 建立决策矩阵多准则决策模型-TOPSIS方法,权重向量多准则决策模型-TOPSIS方法
  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种型号)

多准则决策模型-TOPSIS方法

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

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

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

多准则决策模型-TOPSIS方法

决策矩阵

#决策矩阵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)

输出结果

多准则决策模型-TOPSIS方法

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

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

提示:想了解更多,请查看Multiple-criteria decision analysis—-*

反馈与建议


感谢阅读这份文档。

上一篇:Struts1.x有两个execute方法,不要重写错哦HttpServletRequest才是对的(转)


下一篇:Jqgrid入门-显示基本的表格(一)