灰色系统理论由我国著名学者邓聚龙教授于1982提出。灰色关联分析是灰色系统理论的一个分支,应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法。

一、灰色关联分析法的建模过程

灰色关联分析法的基本思想是根据各比较数列集构成的曲线族与参考数列构成的曲线之间的几何相似程度来确定比较数列集与参考数列之间的关联度,比较数列构成的曲线与参考数列构成的曲线的儿何形状越相似,其关联度越大。

参考数据列应该是一个理想的比较标准,可以以各指标的最优值 (或最劣值)构成参考数据列,也可根据评价目的选择其它参照值。例如,在某多属性综合评价问题中,可将各属性的最优值组成一个参考数列,各个评价方案(对象)构成比较数列集,若关联度越大,该方案(对象)越优,反之越劣。利用灰色关联分析进行综合评价的步骤如下。

1、根据评价目的确定评价指标体系,收集评价数据,确定原始评价矩阵及参考数列。

2、对指标数据进行标准化处理,并记标准化处理后的数据序列为:

对于不同的指标类型(如正向型、逆向型、最优值为给定区间的指标,等等),应采取不同的标准化处理策略。常用的几种标准化处理的方法见http://blog.sina.com.cn/s/blog_b3509cfd0101bsky.html,这里不赘述。

3、对标准化处理的数据序列,逐个计算每个被评价对象指标序列(比较序列)与参考数列对应元素的绝对差值,即:

4、确定

5、计算每个比较序列与参考数列对应元素的关联系数:

6、计算关联度。

7、依据各观察对象的关联度,得出综合评价结果。如果参考数列由各指标的最优值组成,则关联度越大,该评价对象与理想的比较标准越相似,评价结果越优,反之越劣。

二、灰色关联分析法的Matlab程序实现

首先声明:不失一般性,以下程序假设所有指标均为正向型指标(越大越好)进行标准化处理,在实际应用中需根据具体情况对不同类型的指标进行标准化处理。另外,这里采用熵权法求客观权重,详见:http://blog.sina.com.cn/s/blog_b3509cfd0101bm0f.html。另外,注意程序注释。

--------------------------------------------以下是程序代码-------------------------------------

function GreyRelationDegree(stats) %%

stats是一个m×n的评价矩阵,即m个评价对象、n个评价指标

%% [重要]设置参考数列,即各指标的理想最优值组成的行向量,长度必需要与stats列数一致

optArray=max(stats,[],1);

% 这里设置假设所有指标均为正向型指标,各指标的最大值组成参考数列,在实际应用中根据具体情况进行设置

%% 原始评价矩阵及样本序号

[r,c]=size(stats);

% stats的行数和列数,即评价对象的个数及评价指标的个数

samNo=1:r;

% 样本序号

%% 数据规范化处理,将各指标数据与参考数列一起规范化到0-1之间

% 这里假设全为正向指标,即假设全部指标值越大越好,在实际应用中根据具体情况分别需对不同类型的指标数据进行标准化处理,然后再这里修改相应的代码

stdMatrix=zeros(r+1,c); % 给标准化矩阵分配空间,第一行为参考数列的标准化值,第二行至最后一行为原始评价矩阵的标准化值

optArryAndStat=[optArray;stats];

maxOfCols=max(optArryAndStat);

% 包括参考数列在内的各列的最大值

minOfCols=min(optArryAndStat);

% 包括参考数列在内的各列的最小值

for j=1:c

for i=1:r+1

stdMatrix(i,j)=(optArryAndStat(i,j)-minOfCols(j))./(maxOfCols(j)-minOfCols(j));

% 计算标准化指标值

end

end

%% 计算关联系数

absValue=zeros(r,c);

% 给绝对差值序列分配空间

R_0 = stdMatrix(1,:); % 标准化处理后的参考数列

for i=2:r+1

absValue(i-1,:)=abs(stdMatrix(i,:)-R_0); % 绝对差值序列计算

end

minAbsValueOfCols=min(absValue,[],1);

% absValue每一列的最小值

maxAbsValueOfCols=max(absValue,[],1);

% absValue每一列的最大值

minAbsValue=min(minAbsValueOfCols);

% absValue的最小值

maxAbsValue=max(maxAbsValueOfCols);

% absValue的最大值

defCoeff=0.5;

% 设置分辨系数为0.5

relCoeff=(minAbsValue+defCoeff*maxAbsValue)./(absValue+defCoeff*maxAbsValue);

% 关联系数计算

%% 计算关联度

% 在实际应用中可采用不同的方法确定权重,然后再这里修改相应的代码

weights=EntropyWeight(stdMatrix(2:r,:)); % 权重

P=zeros(r,1);

% 给关联度序列分配空间

for i=1:r

for j=1:c

P(i,1)=relCoeff(i,j)*weights(j); % 关联度计算

end

end

%% 权重可视化

[sortW,IXW]=sort(weights,'descend');

% 权重降序排序,IXW确保对应的指标名称一致

indexes={};

for i=1:c

indexes(i)={strcat('指标',num2str(i))}; % 指标名称为“指标1”、指标“2”……

end

sortIndex=indexes(IXW);

% 排序后与权重对应的指标名称

figure;

subplot(1,2,1);

bar(weights);

xlim([0 c+1]);

% 设置x轴范围

xlabel('指标名称','FontSize',12,'FontWeight','bold');

set(gca,'xtick',1:c);

set(gca,'XTickLabel',indexes,'FontWeight','light');

ylabel('权重','FontSize',12,'FontWeight','bold');

set(gca,'YGrid','on');

for i=1:c

text(i-0.35,weights(i)+0.005,sprintf('%.3f',weights(i)));

end

title('指标权重可视化');

box off;

subplot(1,2,2);

bar(sortW);

xlim([0 c+1]);

% 设置x轴范围

xlabel('指标名称','FontSize',12,'FontWeight','bold');

set(gca,'xtick',1:c);

set(gca,'XTickLabel',sortIndex,'FontWeight','light');

ylabel('权重','FontSize',12,'FontWeight','bold');

set(gca,'YGrid','on');

for i=1:c

text(i-0.35,sortW(i)+0.005,sprintf('%.3f',sortW(i)));

end

title('指标权重可视化(降序排列)');

box off;

%% 关联度分析结果展示

[sortP,IX]=sort(P,'descend'); % 关联度降序排序,IX确保对应的样本序号一致

sortSamNo=samNo(IX);

% 排序后与关联度对应的样本序号

figure;

subplot(2,1,1);

plot(P,'--rs',...

'LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',10);

xlim([1 r]);

% 设置x轴范围

xlabel('样本序号','FontSize',12,'FontWeight','bold');

set(gca,'xtick',1:r);

set(gca,'XTickLabel',samNo,'FontWeight','light');

ylabel('关联度','FontSize',12,'FontWeight','bold');

title('XXX事物灰色关联度综合评价结果');

grid on;

subplot(2,1,2);

plot(sortP,'--rs',...

'LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',10);

xlim([1 r]);

% 设置x轴范围

xlabel('样本序号','FontSize',10,'FontWeight','bold');

set(gca,'xtick',1:r);

set(gca,'XTickLabel',sortSamNo,'FontWeight','light');

ylabel('关联度','FontSize',10,'FontWeight','bold');

title('XXX事物灰色关联度综合评价结果(降序排列)');

grid on;

hold off;

end

三、程序演示

1、随机生成一个20×5的评价矩阵,即20个评价对象、5个评价指标,matlab命令窗口中输入:test=80+12*randn(20,8);

2、调用灰色关联度函数,命令窗口中输入:GreyRelationDegree(test)

3、程序运行结果如下:

四、参考文献

[1] 刘思峰,党耀国,等. 灰色系统理论及其应用(第5版) [M]. 北京:科学出版社:2010.

[2] 穆瑞,张家泰. 基于灰色关联分析的层次综合评价[J]. 系统工程理论与实践,2008,28(10):125-130.

关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现相关推荐

  1. matlab读取jra55数据,[转载][原创]灰色关联分析及Matlab程序实现

    灰色系统理论由我国著名学者邓聚龙教授于1982提出.灰色关联分析是灰色系统理论的一个分支,应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法. 一.灰色关 ...

  2. 灰色关联分析及MATLAB实现

    目录 一.灰色关联分析概述 灰色关联分析的基本思想: 二.灰色关联分析应用实例 举例一: 1. 确定分析数列 2. 对变量进行预处理 3. 计算子序列中各个指标与母序列的关联系数 三. MATLAB实 ...

  3. 灰色关联分析(MATLAB)

    本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:清风数学建模:https://www.bilibili.com/video/BV1DW411s7wi 一.灰色关联分析概述 ...

  4. 【数学建模】灰色关联分析 + Matlab代码实现

    文章目录 一.学习内容: 二.学习时间: 三.学习产出: 3.1 灰色关联分析基本思想 3.2 运用灰色关联分析的基本步骤 3.3 灰色关联分析代码实现(Matlab) 3.3.1 应用一:分析产业对 ...

  5. 让书写的Matlab代码运行更快 Recipes for Faster Matlab Code

    Matlab 在 Research 中用得非常多,确实也是非常方便实用,只是有一个问题就是写 Matlab 代码的时候经常需要用一些比较奇怪独特的方式来思考和处理问题,否则写出来的代码虽然同样能工作, ...

  6. matlab关联度排序模型,灰色关联和加权关联分析法matlab程序

    %by allen %灰色关联分析法和灰色加权关联分析法matlab程序,其区别主要在于求关联度是使用平均值法还是加权法 %平均值法为一般普通求法,加权值法可以根据侧重点不同进行分析 %matlab6 ...

  7. 灰色关联分析法 (附代码)

    可参考司守奎<数学建模算法与应用>P384,概念+例题+代码 ------------------------------ 文章目录 1.概述 2.代码复现 3.Python实现+可视化 ...

  8. matlab之灰色关联分析法

    matlab之灰色关联分析法 https://blog.csdn.net/m0_37286282/article/details/79183333

  9. python灰色关联度分析代码_灰色关联分析法步骤 - osc_uwnmtz9n的个人空间 - OSCHINA - 中文开源技术交流社区...

    https://wenku.baidu.com/view/dc356290af1ffc4fff47ac0d.html?rec_flag=default&sxts=1538121950212 利 ...

最新文章

  1. PyTorch 笔记(11)— Tensor内部存储结构(头信息区 Tensor,存储区 Storage)
  2. python读取文件夹图片_读取文件夹里的图片,并且与标签对应
  3. 【10.9】multiprocessing多进程编程
  4. 理解Vue 2.5的Diff算法
  5. $http中文乱码|param乱码|angular提交后台乱码|
  6. mysql 多列索引的生效规则,生成1000w数据的存储过程
  7. 【Machine Learning】监督学习、非监督学习及强化学习对比
  8. 漫画:如何给女朋友解释什么是2PC(二阶段提交)?
  9. Java设计模式应用到数据库_Java设计模式在数据库编程中的应用研究
  10. 【macOS】Desktop桌面文件突然消失不见解决办法
  11. 揭秘springboot集成tomcat原理
  12. 宁波大学2014年数学分析考研试题
  13. android常用api大全,Android API详解大全.pdf
  14. Codeforces Round #739 (Div. 3) ABCDEF1F2 解题思路
  15. JavaWeb --- JavaScript
  16. 穿过黑暗的夜,才懂黎明的晨
  17. 2021全球与中国波长选择开关(WSS)市场现状及未来发展趋势
  18. 【Python-5】Conditionals Control Flow
  19. 使用codesense的GJB 8114模板对c++源代码规则检测示例
  20. BRVAH官方使用指南(持续更新)--BaseRecyclerViewAdapterHelper

热门文章

  1. JNI学习积累之一 ---- 常用函数大全
  2. 云服务器与传统服务器的优势差异
  3. 关灯看视频(Turn Off the Lights)
  4. DP备份任务失败原因解析
  5. 马来西亚热情拥抱阿里巴巴 马云倡议的eWTP首次落地海外
  6. Design Compiler指南——施加设计约束
  7. halcon Matching-3D 3D匹配,持续更新
  8. HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别
  9. matlab调用mstg,实验五 双线性变换法设计IIR数字滤波器
  10. 外链引入css有哪些方式_HTML+CSS基础(三) CSS的引入方式和CSS选择器