数学建模——灰色关联分析法

前言

本文将通过案例详细介绍灰色关联分析法,包括完整建模和编程(matlab编写)过程。

正文

问题:

供应商选择决策。某核心企业需要在6个待选的零部件供应商中选择一个合作伙伴,各待选供应商有关数据见下表:

求解:

1、确定比较数列和参考数列

比较数列即为表中元素:

ini 复制代码
clc,clear
a=[0.83 0.9 0.99 0.92 0.87 0.95;
    326 295 340 287 310 303;
    21 38 25 19 27 10;
    3.2 2.4 2.2 2.0 0.9 1.7;
    0.2 0.25 0.12 0.33 0.2 0.09;
    0.15 0.2 0.14 0.09 0.15 0.17;
    250 180 300 200 150 175;
    0.23 0.15 0.27 0.3 0.18 0.26;
    0.87 0.95 0.99 0.89 0.82 0.94];%比较数列

然后对数列中的元素进行标准化处理,方法为"标准0-1变换":

为了使每个属性变换后的最优值为1且最差值为0,可以进行标准0-1变换。

对效益型属性而言,公式为:

对成本型属性而言,公式为:

对应在本题的代码就是:

css 复制代码
for i=[1 5:9]                          %效益型指标标准化
    a(i,:)=(a(i,:)-min(a(i,:)))/(max(a(i,:))-min(a(i,:)));
end

for i=2:4                              %成本型指标标准化
    a(i,:)=(min(a(i,:))-a(i,:))/(max(a(i,:))-min(a(i,:)));
end

这里第1行和5------9行为效益型指标,2------4行为成本型指标。

然后根据比较数列求参考数列,参考数列相当于一个虚拟的最好评价对象的各指标值。

ini 复制代码
[m,n]=size(a);
ck=max(a,[],2);                  %逐行求最大值,得参考数列

(2)、确定各指标对应的权重

可用层次分析法等方法确定各指标对应的权重,这一步可有可没有,本题中便没有给出。

3、计算灰色关联系数

关联系数公式为:

其中,X0表示参考数列,Xi表示比较数列,p表示分辨系数,一般来说,有:

p越大,分辨率越大;p越小,分辨率越小。

代码为:

ini 复制代码
t=abs(ck-a);     %求参考数列与每一个比较数列的差
mmin=min(min(t));
mmax=max(max(t));
rho=0.5;%分辨系数
xishu=(mmin+rho*mmax)./(t+rho*mmax)

4、计算灰色加权关联度。

关联系数是描述比较数列与参考数列在某时刻关联程度的一种指标,由于各个时刻都有一个关联系数,因此信息显得过于分散,不便于比较,为此我们给出关联度。

灰色加权关联度的计算公式为:

对应的代码为:

ini 复制代码
guanliandu=mean(xishu).*w;%w是第二步给出的权重矩阵,以本题为例,大小是1*6的。

若没有给出权重,即w=1/n,就是默认每个指标都同等重要,公式为:

对应的代码为:

ini 复制代码
guanliandu=mean(xishu)

5、评价分析

根据灰色(加权)关联度的大小,对各评价对象进行排序,可建立评价对象的关联序,关联度越大,其评价效果越好。本题排序代码为:

scss 复制代码
[gsort,ind]=sort(guanliandu,'descend')

结果为:

所以供应商4与虚拟最优供应商的关联最大,即供应商4优于其他供应商,企业决策者可以优先考虑从供应商4处采购零部件以达到整体最优。

补充

如果含有区间型属性 ,请参考文章:数学建模------TOPSIS模型,其中有区间型属性的处理方法。

结语

本文内含笔者自己的理解,如有错误,敬请斧正。

相关推荐
GeminiGlory2 分钟前
算法练习6-大数乘法(高精度乘法)
算法
熬了夜的程序员24 分钟前
【华为机试】HJ61 放苹果
算法·华为·面试·golang
马特说35 分钟前
基于随机森林的金融时间序列预测系统:从数据处理到实时预测的完整流水线
算法·随机森林·金融
呆呆的小鳄鱼36 分钟前
leetcode:HJ18 识别有效的IP地址和掩码并进行分类统计[华为机考][字符串]
算法·leetcode·华为
蓝桉(努力版)1 小时前
MATLAB可视化5:华夫图(饼图的平替可以表示种类的分布,附有完整代码详细讲解)(求个关注、点赞和收藏)(对配色不满意可以自己调节配色,附调色教程)
开发语言·数学建模·matlab·信息可视化·matlab可视化
艾莉丝努力练剑1 小时前
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(五)
c语言·开发语言·数据结构·学习·算法
freexyn1 小时前
Matlab自学笔记六十二:求解三角函数方程的通解周期解
笔记·算法·matlab
zstar-_1 小时前
【算法笔记】7.LeetCode-Hot100-图论专项
笔记·算法·leetcode
xienda1 小时前
冒泡、选择、插入排序:三大基础排序算法深度解析(C语言实现)
数据结构·算法·排序算法
用户40315986396632 小时前
带 WriteBuffer 的内存读写操作
java·算法