灰色关联分析运用于综合评价问题

对于传统的解决综合评价问题,一般用层次分析法或者Topsis法。在这我们引入一个新的方法来解决综合评价问题,这个方法就是灰色关联分析

接下来看一道例题,边做边学。

题目:评价下表中20条河流的水质情况。
注︰含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10-20之间最佳,超过20或低于10均不好。

1.先对各指标进行正向化。常见的指标类型有:极大型、极小型、中间型。

2.对正向化后的矩阵进行预处理,也就是矩阵中的每一列的元素除以每一列的均值Xij / X(平均)。

3.将预处理后的矩阵每一行取出最大值构成母序列(虚拟的)

4.计算各指标与母序列的灰色关联度:r1、r2、···、rn。(上一篇博客有详细讲解

5.计算各指标的权重:w1=r1 / (r1+r2+···rn)、w2=r2 / (r1+r2+···rn)、···

6.计算各评价对象的评分:s1 = 正向化矩阵对应的列的权重 * 正向化矩阵对应列的各对象

7.对计算出来的得分进行归一化:S1 = s1/(s1+s2+...+sn)

对应的matlab代码:

1.导入数据,对各指标进行正向化。

clear;clc
load data_water_quality.mat

[n,m] = size(X);
disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标']) 
Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0:  ']);  

if Judge == 1
    Position = input('请输入需要正向化处理的指标所在的列,例如第2、3、6三列需要处理,那么你需要输入[2,3,6]: '); 
    disp('请输入需要处理的这些列的指  标类型(1:极小型, 2:中间型, 3:区间型) ')
    Type = input('例如:第2列是极小型,第3列是区间型,第6列是中间型,就输入[1,3,2]:  '); 
    for i = 1 : size(Position,2) 
        X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));
    end
    disp('正向化后的矩阵 X =  ')
    disp(X)
end

正向化后的矩阵 X =  
    4.6900    0.7172    3.0000    1.0000
    2.0300    0.4069   35.0000    0.6940
    9.1100    0.5241    8.0000    0.9058
    8.6100    0.9655    8.0000    0.4443
    7.1300    0.6552    4.0000    0.6914
    2.3900    0.8414   16.0000    0.6007
    7.6900    0.8552   16.0000    0.6551
    9.3000    0.8690   27.0000         0
    5.4500    0.5724   49.0000    1.0000
    6.1900    0.8138   37.0000    0.7848
    7.9300    0.6345   45.0000    0.6992
    4.4000    0.8069   37.0000    0.5419
    7.4600    0.1448   31.0000    1.0000
    2.0100         0    7.0000    0.4546
    2.0400    0.5862   31.0000    1.0000
    7.7300    0.4069    2.0000    1.0000
    6.3500    0.6000   29.0000    0.1824
    8.2900    0.0276   15.0000    1.0000
    3.5400    0.8138         0    0.4088
    7.4400    0.4897   46.0000    0.2731

2. 对正向化后的矩阵进行预处理


Mean = mean(X);  % 求出每一列的均值以供后续的数据预处理
Z = X ./ repmat(Mean,size(X,1),1);  
disp('预处理后的矩阵为:'); disp(Z)

3. 构造母序列和子序列

Y = max(Z,[],2); 
X = Z;

4. 计算得分

absX0_Xi = abs(X - repmat(Y,1,size(X,2)))  
a = min(min(absX0_Xi))  
b = max(max(absX0_Xi)) 
rho = 0.5; 
gamma = (a+rho*b) ./ (absX0_Xi  + rho*b)  
weight = mean(gamma) / sum(mean(gamma)); 
score = sum(X .* repmat(weight,size(X,1),1),2);  
stand_S = score / sum(score);  
[sorted_S,index] = sort(stand_S ,'descend') 

计算结果为:

河流灰色关联分析
I0.070290076
K0.068667839
J0.065921762
L0.057567199
T0.057162107
G0.055282289
M0.05493685
O0.053267616
H0.052856294
C0.051264824
D0.05089714
B0.046000825
Q0.045762573
A0.045261809
R0.044907571
P0.044292596
E0.043671145
F0.043201062
S0.03210557
N0.016682853

我们可以得出I条河流最优。

小结:用灰色关联分析进行综合评价,其理论还不太完善、成熟。建议优先使用Topsis法。

  • 4
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值