多准则决策–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决策的步骤
- 建立决策矩阵,权重向量
- 矩阵标准化
- 构造加权规范化矩阵
- 确定理想方案和负理想方案
- 计算各方案到理想方案和负理想方案的距离
- 计算各方案的贴进度并排序
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—-*。