灰色关联分析“交响曲”
乐谱概要
1、确定比较对象(评价对象)和参考数列;
2、确定各指标对应的权重;
3、计算灰色关联系数;
4、计算灰色加权关联度;
5、评价分析。
演奏开始
灰色关联分析的前奏
1、确定比较对象(评价对象)和参考数列(评价标准)。设评价对象有
m
m
m个,评价指标有
n
n
n个,参考数列为
x
0
=
[
x
0
(
k
)
∣
k
=
1
,
2
,
.
.
.
,
n
]
x_0=[x_0(k)|k=1,2,...,n]
x0=[x0(k)∣k=1,2,...,n],比较数列为
x
i
=
[
x
i
(
k
)
∣
k
=
1
,
2
,
.
.
.
,
n
]
,
i
=
1
,
2
,
.
.
.
,
m
x_i=[x_i(k)|k=1,2,...,n],i=1,2,...,m
xi=[xi(k)∣k=1,2,...,n],i=1,2,...,m。
2、确定各指标对应的权重。权重的确定需要采用层次分析法来实现,具体的步骤详见后面的介绍博客。由层次分析法等确定各指标对应的权重
w
=
[
w
1
,
w
2
,
.
.
.
,
w
n
]
w=[w_1,w_2,...,w_n]
w=[w1,w2,...,wn],其中
w
k
(
k
=
1
,
2
,
.
.
.
,
n
)
w_k(k=1,2,...,n)
wk(k=1,2,...,n)为第
k
k
k个评价指标对应的权重。
灰色关联分析的高潮
3、计算灰色关联系数:
上述表达式为比较数列
x
i
x_i
xi对参考数列
x
0
x_0
x0在第
k
k
k个指标上的关联系数,其中
ρ
∈
[
0
,
1
]
ρ∈[0,1]
ρ∈[0,1]为分辨系数。其中,称
分别为两级最小差及两级最大差。
一般来讲,分辨系数
ρ
ρ
ρ越大,分辨率越大;
ρ
ρ
ρ越小,分辨率越小。
4、计算灰色加权关联度。灰色加权关联度的计算公式为:
其中,
r
i
r_i
ri为第
i
i
i个评价对象对理想对象的灰色加权关联度。
灰色关联分析的尾声
5、评价分析。根据灰色加权关联度的大小,对各评价对象进行排序,可建立评价对象的关联序,关联度越大,其评价结果越好。
参考函数代码
function [gsort,index] = grey_correlation(a,bar_code)
% grey_correlation 该函数进行灰色关联分析
% bar_code是一个向量,只能取1或者2,它相当于一个条形码,用于区分效益型指标和成本型指标
% 在bar_code中,数字1表示为效益型指标,数字2表示为成本型指标
% 输入的数据矩阵中,每一行表示为评价指标,每一列表示为评价对象
ind1=find(bar_code==1);%确定效益型指标的索引号
ind2=find(bar_code==2);%确定成本型指标的索引号
for i=1:length(ind1) %效益型指标标准化
a(ind1(i),:)=(a(ind1(i),:)-min(a(ind1(i),:)))/(max(a(ind1(i),:))-min(a(ind1(i),:)));
end
for j=1:length(ind2) %成本型指标标准化
a(ind2(j),:)=(max(a(ind2(j),:))-a(ind2(j),:))/(max(a(ind2(j),:))-min(a(ind2(j),:)));
end
[~,n]=size(a);
cankao=max(a,[],2); %求参考序列的取值(此处区别于书中的代码做了简化)
t=repmat(cankao,[1,n])-a; %求参考序列与每一个序列的差
mmin=min(min(t)); %计算最小差
mmax=max(max(t)); %计算最大差
rho=0.5; %分辨系数
xishu=(mmin+rho*mmax)./(t+rho*mmax); %计算灰色关联系数
guanliandu=mean(xishu); %取等权重,计算关联度
[gsort,index]=sort(guanliandu,'descend'); %对关联度按照从大到小排序
end
如果想要自定义分辨系数,可以修改函数为:
function [gsort,index] = grey_correlation(a,bar_code,rho)
% grey_correlation 该函数进行灰色关联分析
% bar_code是一个向量,只能取1或者2,它相当于一个条形码,用于区分效益型指标和成本型指标
% 在bar_code中,数字1表示为效益型指标,数字2表示为成本型指标
% 输入的数据矩阵中,每一行表示为评价指标,每一列表示为评价对象
% rho设置为了输入变量,可以自行定义
ind1=find(bar_code==1);%确定效益型指标的索引号
ind2=find(bar_code==2);%确定成本型指标的索引号
for i=1:length(ind1) %效益型指标标准化
a(ind1(i),:)=(a(ind1(i),:)-min(a(ind1(i),:)))/(max(a(ind1(i),:))-min(a(ind1(i),:)));
end
for j=1:length(ind2) %成本型指标标准化
a(ind2(j),:)=(max(a(ind2(j),:))-a(ind2(j),:))/(max(a(ind2(j),:))-min(a(ind2(j),:)));
end
[~,n]=size(a);
cankao=max(a,[],2); %求参考序列的取值(此处区别于书中的代码做了简化)
t=repmat(cankao,[1,n])-a; %求参考序列与每一个序列的差
mmin=min(min(t)); %计算最小差
mmax=max(max(t)); %计算最大差
xishu=(mmin+rho*mmax)./(t+rho*mmax); %计算灰色关联系数
guanliandu=mean(xishu); %取等权重,计算关联度
[gsort,index]=sort(guanliandu,'descend'); %对关联度按照从大到小排序
end
灰色关联分析用于供应商选择决策中可以针对大量不确定性因素及其相互关系,将定量和定性方法有机结合起来,使原本复杂的问题更加清晰简单,并可在一定程度上排除决策者的主观任意性。
上述的函数可以通过书中的例子加一验证。
参考文献
司守奎,孙玺菁. 数学建模算法与应用. 北京:国防工业出版社,2011.