当前位置: 首页 > news >正文

数学建模:灰色关联分析

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛

灰色关联分析法

算法流程

  1. 建立一个m行 n列的矩阵 X X X ,其中 m 表示评价对象, n表示评价指标
  2. 首先进行矩阵的归一化,得到归一化后的矩阵 d a t a data data
  3. 获取参考向量,即获取归一化后的矩阵的最大参考指标行,假设为 Y Y Y,即得到所有n个指标的最大值。
    1. 如果n表示评价指标,m表示评价对象,矩阵为 n ∗ m n*m nm ,则我们应该得到一个最大的参考指标列
  4. 生成绝对值矩阵 A A A

A = ∣ X 1 − Y 1 ∣ A = ∣ x 4 − x 1 , x 5 − x 1 , x 6 − x 1 , x 7 − x 1 ∣ \begin{aligned}A&=|X_1-Y_1|\\A&=|x_4-x_1,x_5-x_1,x_6-x_1,x_7-x_1|\end{aligned} AA=X1Y1=x4x1,x5x1,x6x1,x7x1

  1. 计算绝对值矩阵的最大值 d m a x d_{max} dmax和最小值 d m i n d_{min} dmin
  2. 计算灰色关联矩阵,假设为 B B B :其中 ρ \rho ρ 为一个分辨系数,设置为 0.5 为最佳。

B i j = d m i n + ρ d m a x A i j + ρ d m a x B_{ij}=\frac{d_{min}+\rho d_{max}}{A_{ij}+\rho d_{max}} Bij=Aij+ρdmaxdmin+ρdmax

  1. 分别计算最大与最小灰色关联度 ξ \xi ξ ,因此得到 ξ m i n \xi_{min} ξmin ξ m a x \xi_{max} ξmax

ξ j = ∑ i = 1 m B i j m \xi_j=\frac{\sum_{i=1}^mB_{ij}}m ξj=mi=1mBij

  1. 计算评价总分:每个对象的 S c o r e j Score_j Scorej 如果与最大灰色关联度 ξ m a x \xi_{max} ξmax 越大,或者与最小灰色关联度 ξ m i n \xi_{min} ξmin 越大,则评价得分越高

S c o r e j = 1 1 + ( ξ j ( m i n ) / ξ j ( m a x ) ) 2 Score_j=\frac{1}{1+(\xi_j^{(min)}/\xi_j^{(max)})^2} Scorej=1+(ξj(min)/ξj(max))21

代码实现

function [Score] = mfunc_GreyCorrelationAnalysis(data)% data表示一个 m * n 列的原始数据矩阵% 标准化mapminmax是对行操作的,因此转置一下,如果使用zscore(data)标准化则无须转置,但是无法标准化到0,1data1=mapminmax(data',0,1);%标准化到0.002-1区间% data1=data1'; % mapminmax在再转置回来%V_max=max(data1);%最大参考指标行,指标最大V_min=min(data1);%最小参考指标行,指标最小% 与最大值的灰色关联度data2=abs(data1-V_max);%得到绝对值矩阵的全局最大值和最小值d_max=max(max(data2));d_min=min(min(data2));% 计算灰色关联矩阵a=0.5;   %分辨系数默认为0.5data3=(d_min+a*d_max)./(data2+a*d_max);%  计算灰色关联度xi_max=mean(data3'); %计算每个评价对象的灰色关联度,求mean平均值% 与最小值的灰色关联度data2=abs(data1-V_min);%得到绝对值矩阵的全局最大值和最小值d_max=max(max(data2));d_min=min(min(data2));data3=(d_min+a*d_max)./(data2+a*d_max);xi_min=mean(data3');% 综合评分%与最大相关系数越大,最小相关系数越小得分大Score=1./(1+(xi_min./xi_max)).^2;for i=1:length(Score)fprintf('第%d个投标者评分为:%4.2f\n',i,Score(i));   end
end
http://www.lryc.cn/news/146843.html

相关文章:

  • nodepad++ 插件的安装
  • 学习分享:Ubuntu 下使用 Qt 打开串口报错 Permission denied
  • Javaweb入门
  • 后端开发基础概念
  • ELK原理和介绍
  • FBX SDK 开发环境配置 visual studio 2022
  • vue面试题_vue2和vue3的区别
  • Shiro整合SpringBoot,实战下的应用场景
  • C语言——全局变量和局部变量重名了会怎么样
  • linux下vi或vim操作Found a swap file by the name的原因及解决方法--九五小庞
  • 通过RD Client远程连接windows电脑踩坑点
  • 学习node之——如何在项目中使用MySQL、前后端的身份认证
  • AUTOSAR从入门到精通-【应用篇】参照AUTOSAR架构的柴油车后处理集成电控系统软件设计与研究(续)
  • Linux 内核动态打印调试(dev_info、 dev_dbg )
  • 深入浅出AXI协议(3)——握手过程
  • Ansible学习笔记5
  • LeetCode 面试题 02.06. 回文链表
  • linux环境没有curl或者telnet命令解决方法与区分linux环境类型
  • golang channel
  • 高等职业学校物联网实训室建设方案
  • Python基础学习第四天:Python注释
  • Puppeteer中使用Stealth.min.js库
  • JVM ZGC垃圾收集器
  • 事务管理-事务进阶-propagation属性
  • 树多选搜索查询,搜索后选中状态仍保留
  • 数据结构--字典树(trie)
  • iframe通过postMessage进行跨域通信以及在Angular中使用
  • rust学习-引用C库
  • WebAssembly 在云原生中的实践指南
  • Azure sqlserver 更改字符集