目录
前言
评价方法大体上可分为两类,其主要区别在确定权重的方法上。一类是主观赋权法,多数采取综合咨询评分确定权重,如综合指数法、模糊综合评判法、层次分析法、功效系数法等。另一类是客观赋权,根据各指标间相关关系或各指标值变异程度来确定权数,如主成分分析法、因子分析法、理想解法(也称 TOPSIS 法)等。
一、理想解法
多属性决策问题的理想解法,理想解法亦称为 TOPSIS 法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近正理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。
1.1、方法和原理
设多属性决策方案集为,衡量方案优劣的属性变量为,这时方案集 中的每个方案 的个属性值构成的向量是 ,它作为维空间中的一个点,能唯一地表征方案。
正理想解是一个方案集中并不存在的虚拟的最佳方案,它的每个属性值都是决策矩阵中该属性的最好值;而负理想解则是虚拟的最差方案,它的每个属性值都是决策矩阵中该属性的最差值。在维空间中,将方案集中的各备选方案与正理想解和负理想解的距离进行比较,既靠近正理想解又远离负理想解的方案就是方案集中的最佳方案;并可以据此排定方案集中各备选方案的优先序。
用理想解法求解多属性决策问题的概念简单,只要在属性空间定义适当的距离测度就能计算备选方案与理想解的距离。TOPSIS 法所用的是欧氏(欧几里得)距离。至于既用正理想解又用负理想解是因为在仅仅使用正理想解时有时会出现某两个备选方案与正理想解的距离相同的情况,为了区分这两个方案的优劣,引入负理想解并计算这两个方案与负理想解的距离,与正理想解的距离相同的方案离负理想解远者为优。
1.2、TOPSIS法的算法步骤
二、示例
2.1、题目 :研究生院试评估。
为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,收集有关数据资料进行了试评估,表 1 是所给出的部分数据。
i \ j | 人均专著/(本/人) | 生师比 | 科研经费 /(万元/年) | 逾期毕业率 / % |
---|---|---|---|---|
1 | 0.1 | 5 | 5000 | 4.7 |
2 | 0.2 | 6 | 6000 | 5.6 |
3 | 0.4 | 7 | 7000 | 6.7 |
4 | 0.9 | 10 | 10000 | 2.3 |
5 | 1.2 | 2 | 400 | 1.8 |
2.2、建立模型
解:第一步:数据预处理
数据的预处理又称属性值的规范化。属性具有多种类型,包括效益型、成本型和区间型等。这三种属性,效益型属性越大越好,成本型屈性越小越好,区间型属性是在某个区间最佳。
在进行决策时,一般要进行属性值的规范化,主要有如下三个作用:
① 属性值有多种类型,上述三种属性放在同一个表中不便于直接从数值大小判断方案的优劣,因此需要对数据进行预处理,必须在综合评价之前将属性的类型做一致化处理,使得表中任一属性下性能越优的方案变换后的属性值越大。
② 无量纲化,多属性决策与评估的困难之一是属性间的不可公度性,即在属性值表中的每一列数值具有不同的单位(量纲)。即使对同一属性,采用不同的计量单位,表中的数值也就不同。在用各种多属性决策方法进行分析评价时,需要排除量纲的选用对决策或评估结果的影响,这就是无量纲化。
③ 归一化,属性值表中不同指标的属性值的数值大小差别很大,为了直观,更为了便于采用各种多属性决策与评估方法进行评价,需要把属性值表中的数值归一化,即把表中数值均变换到[0,1]区间上。
此外,还可在属性规范时用非线形变换或其它办法,来解决或部分解决某些目标的达到程度与属性值之间的非线性关系,以及目标间的不完全补偿性。常用的属性规范化方法有以下几种。
在这道题中,人均专著、科研经费属于上述的效益型属性,越大越好, 逾期毕业率属于成本型属性越小越好。对于成本型和效益型,直接建立正理想解和负理想解,判断距离,就可以知道最优方案是哪个了。
再根据线性变换或标准0-1变换进行归一化数据处理,让它们在[0,1]的区间内;
而生师比既不属于效益性,也不属于成本型,属于区间型;
设研究生院的生师比最佳区间为[5,6], =2、 =12。
表1的师生比属性的数据处理结果见表2;
i \ j | 生师比 | 处理后的生师比 |
---|---|---|
1 | 5 | 1 |
2 | 6 | 1 |
3 | 7 | 0.8333 |
4 | 10 | 0.3333 |
5 | 2 | 0 |
问:处理后的师生比是怎么算的?
答:以3为例,已知我们设的 ,所以,按照区间型属性的变换公式,在区间范围内,可以求得:;
MATLAB程序如下:
clc, clear
x2=@(qujian,lb,ub,x)(1-(qujian(1)-x)./(qujian(1)-lb)).*...
(x>=lb & x<qujian(1))+(x>=qujian(1) & x<=qujian(2))+...
(1-(x-qujian(2))./(ub-qujian(2))).*(x>qujian(2) & x<=ub);
%上述语句定义变换的匿名函数,语句太长,使用了两个续行符
qujian=[5,6]; lb=2; ub=12; %最优区间,无法容忍下界和上界
x2data=[5 6 7 10 2]'; %x2属性值
y2=x2(qujian,lb,ub,x2data) %调用匿名函数,进行数据变换
直接用MATLAB函数进行标准化数据处理,如下:
x=[0.1 5 5000 4.7
0.2 6 6000 5.6
0.4 7 7000 6.7
0.9 10 10000 2.3
1.2 2 400 1.8];
format short,y=zscore(x)
运算结果:
y =
-0.9741 -0.3430 -0.1946 0.2274
-0.7623 0 0.0916 0.6537
-0.3388 0.3430 0.3777 1.1747
0.7200 1.3720 1.2362 -0.9095
1.3553 -1.3720 -1.5109 -1.1463
i \ j | 人均专著/(本/人) | 生师比 | 科研经费 /(万元/年) | 逾期毕业率 / % |
---|---|---|---|---|
1 | -0.9741 | -0.3430 | -0.1946 | 0.2274 |
2 | -0.7623 | 0 | 0.0916 | 0.6537 |
3 | -0.3388 | 0.3430 | 0.3777 | 1.1747 |
4 | 0.7200 | 1.3720 | 1.2362 | -0.9095 |
5 | 1.3553 | -1.3720 | -1.5109 | -1.1463 |
2.3、模型求解
首先对表 1 中的师生比数据进行最优值为给定区间的变化,用区间属性变换做,这里我们已经变换好啦,为表2。 然后对属性值进行向量规范化。
i \ j | 人均专著/(本/人) | 生师比 | 科研经费 /(万元/年) | 逾期毕业率 / % |
---|---|---|---|---|
1 | 0.0638 | 0.597 | 0.3449 | 0.4546 |
2 | 0.1275 | 0.597 | 0.4139 | 0.5417 |
3 | 0.2550 | 0.4975 | 0.4829 | 0.6481 |
4 | 0.5738 | 0.199 | 0.6898 | 0.2225 |
5 | 0.7651 | 0 | 0.0276 | 0.1741 |
问:规范化数值是怎么算的啊?
答: 按照向量规范化给的公式进行计算,以人均专著举例:
;
第二步,设权向量为,得加权的向量规范化属性矩阵见表 5
i \ j | 人均专著/(本/人) | 生师比 | 科研经费 /(万元/年) | 逾期毕业率 / % |
---|---|---|---|---|
1 | 0.0128 | 0.1791 | 0.1380 | 0.0455 |
2 | 0.0255 | 0.1791 | 0.1656 | 0.0542 |
3 | 0.0510 | 0.1493 | 0.1931 | 0.0648 |
4 | 0.1148 | 0.0597 | 0.2759 | 0.2222 |
5 | 0.1530 | 0 | 0.0110 | 0.0174 |
第三步,由表5和式(3)、式(4),得
正理想解:,
负理想解:。
第四步,分别用式(5) 和式(6)求各方案到正理想解的距离 和负理想解的距离 ,列表6。
1 | 0.1987 | 0.2204 | 0.5258 |
---|---|---|---|
2 | 0.1726 | 0.2371 | 0.5787 |
3 | 0.1428 | 0.2385 | 0.6255 |
4 | 0.1255 | 0.2932 | 0.7003 |
5 | 0.3198 | 0.1481 | 0.3165 |
第5步,计算排序指标值(表 6),由值的大小可确定各方案的从优到劣的次序为 4,3,2,1,5。
MATLAB程序设计,如下:
clc, clear
a=[0.1 5 5000 4.7
0.2 6 6000 5.6
0.4 7 7000 6.7
0.9 10 10000 2.3
1.2 2 400 1.8];
[m,n]=size(a);
x2=@(qujian,lb,ub,x)(1-(qujian(1)-x)./(qujian(1)-lb)).*...
(x>=lb & x<qujian(1))+(x>=qujian(1) & x<=qujian(2))+...
(1-(x-qujian(2))./(ub-qujian(2))).*(x>qujian(2) & x<=ub);
qujian=[5,6]; lb=2; ub=12;
a(:,2)=x2(qujian,lb,ub,a(:,2)); %对属性2进行变换
for j=1:n
b(:,j)=a(:,j)/norm(a(:,j)); %向量规划化
end
w=[0.2 0.3 0.4 0.1];
c=b.*repmat(w,m,1); %求加权矩阵
Cstar=max(c); %求正理想解
Cstar(4)=min(c(:,4)) %属性4为成本型的
C0=min(c); %q求负理想解
C0(4)=max(c(:,4)) %属性4为成本型的
for i=1:m
Sstar(i)=norm(c(i,:)-Cstar); %求到正理想解的距离
S0(i)=norm(c(i,:)-C0); %求到负理想的距离
end
f=S0./(Sstar+S0);
[sf,ind]=sort(f,'descend') %求排序结果