数学建模之灰色关联分析(GRA)

article/2025/10/19 14:16:52

本文参考的是司守奎,孙兆亮主编的数学建模算法与应用(第二版)

灰色关联分析不仅能够用做关联分析,也能够用于评价。
其具体分析步骤如下:

第一步,需要确定评价对象和参考数列。
评价对象一般指的就是待分析的各个特征组,例如需要评价一个同学的成绩,那么他的语文成绩、数学成绩、英语成绩等就是一个特征组,即一个评价对象。
参考数列有两种选择,一种是从各个特征组中抽取出各自特征最优的值,构成一个虚拟的最优方案,并将此作为参考数列,那么其他方案都是参考最优方案得出的关联系数,即能够作为方案的评价,这也很容易理解,与最优方案关联越大,说明这个方案实际也是越优的。另一种是将待分析的方案中,挑选一组方案作为参考数列,例如需要分析小红、小明、小兰三者之间小红的成绩的和谁的关系比较大,那么就可以以小红的成绩作为参考数列,进行关联性分析,分析出的关联系数即可说明小红的成绩与谁的相关性越大,从而分析谁对小红的影响比较大(这是我随便举得例子,也不知道恰不恰当)
在这里插入图片描述
第二步,可以通过熵权法、层次分析法等确定权重,一般这里取等权重即可。
在这里插入图片描述
第三步,计算灰色关联系数。其中分辨系数一般取0.5即可
在这里插入图片描述
第四步,计算加权关联度。
在这里插入图片描述
第五步,评价分析。
在这里插入图片描述
接下来展示一个例题
在这里插入图片描述
其实最开始,需要进行的步骤是对数据进行预处理,这是任何任务顺利进行下去不可或缺的环节。对于这题,数据预处理主要是将效益型指标归一化以及将成本型指标归一化为效益型的形式,即通过数值大小直接能够反应此指标的优劣。

data = [0.83 0.90 0.99 0.92 0.87 0.95326 295 340 287 310 30321 38 25 19 27 103.2 2.4 2.2 2.0 0.9 1.70.20 0.25 0.12 0.33 0.20 0.090.15 0.20 0.14 0.09 0.15 0.17250 180 300 200 150 1750.23 0.15 0.27 0.30 0.18 0.260.87 0.95 0.99 0.89 0.82 0.94];%效益型指标归一化
for i =[1 5:9]data(i,:) = (data(i,:)-min(data(i,:)))/(max(data(i,:))-min(data(i,:)));
end
%成本型指标归一化
for i = 2:4data(i,:) = (max(data(i,:))-data(i,:))/(max(data(i,:))-min(data(i,:)));
end

预处理后结果如下:
在这里插入图片描述

接下来开始灰色关联分析。
第一步,确定评价对象和参考数列,由于我们是用于评价,那么评价对象就为各个方案,参考数列即为虚拟最优方案,即各个实际方案的最优值。

[row,col] = size(data);
cankao = max(data')'; %获取参考数列
cankao %由于评价这里取虚拟最优方案作为参考数列

可得参考数列:
在这里插入图片描述
第二步,确定权重,可以通过熵权法、层次分析法等确定权重,一般这里取等权重即可。

第三步,计算关联系数。分辨系数一般取0.5即可

t = repmat(cankao,[1,col])-data;%求参考序列与每一个序列的差
mmin = min(min(t));%计算最小差
mmax = max(max(t));%计算最大差
rho = 0.5;%分辨系数
xishu = (mmin + rho * mmax)./(t + rho * mmax)%计算灰色关联分析

第四步,计算加权关联度,由于我们权重为等权重,即权重都为1,那么直接取均值即可。

guanliandu = mean(xishu)%取等权重,计算关联度

第五步,评价分析。

[gsort,ind] = sort(guanliandu,'descend')%对关联度从大到小排序

结果如下:
在这里插入图片描述
matlab完整代码如下:

clc,clear
data = [0.83 0.90 0.99 0.92 0.87 0.95326 295 340 287 310 30321 38 25 19 27 103.2 2.4 2.2 2.0 0.9 1.70.20 0.25 0.12 0.33 0.20 0.090.15 0.20 0.14 0.09 0.15 0.17250 180 300 200 150 1750.23 0.15 0.27 0.30 0.18 0.260.87 0.95 0.99 0.89 0.82 0.94];%效益型指标归一化
for i =[1 5:9]data(i,:) = (data(i,:)-min(data(i,:)))/(max(data(i,:))-min(data(i,:)));
end
%成本型指标归一化
for i = 2:4data(i,:) = (max(data(i,:))-data(i,:))/(max(data(i,:))-min(data(i,:)));
end[row,col] = size(data);
cankao = max(data')'; %获取参考数列
cankao %由于评价这里取虚拟最优方案作为参考数列t = repmat(cankao,[1,col])-data;%求参考序列与每一个序列的差
mmin = min(min(t));%计算最小差
mmax = max(max(t));%计算最大差
rho = 0.5;%分辨系数
xishu = (mmin + rho * mmax)./(t + rho * mmax)%计算灰色关联分析
guanliandu = mean(xishu)%取等权重,计算关联度
[gsort,ind] = sort(guanliandu,'descend')%对关联度从大到小排序

http://chatgpt.dhexx.cn/article/4xbh0TYA.shtml

相关文章

【DOM】DOM操作之如何添加、删除、替换元素_04

目录 一. 添加删除替换元素 1. 添加新元素: 3步: (1). 创建一个新的空元素对象 (2). 为新元素设置必要的属性: 新元素.属性名"属性值" (3). 将新元素添加到DOM树 2. 示例: 动态创建a元素和input元素 3. 示例: 动态生成表格内容 4. 优化 5. 删除元素: 父元素.re…

DOM操作_获取元素

概述 DOM (Document objectModal) :文档对象模型。 DOM;是浏览器提供的(浏览器特有),专[ ]用来操作网页内容的一些JS对象。 目的:让我们可以使用Js/TS代码来操作页面(HTML) 内容,让页面“动”起来,从而实现Web开发。 HTML:超文本标记语言…

DOM操作class属性的方法

新增标签对象.classList.add(新增属性值) 删除 标签对象.classList.remove(删除属性值) 替换标签对象.classList.replace(原始 , 新的) 切换标签对象.classList.toggle(切换属性值)有执行删除,没有执行新增 <body><div class "box box2 "></div&…

js DOM操作自定义属性

自定义属性&#xff1a;在日常开发中&#xff0c;html的内置属性已经无法满足程序员的日常开发&#xff0c;所以需要我们自己定义属性&#xff0c;H5给我们新增了自定义属性&#xff0c;为了防止自定义属性和内置属性引起歧义&#xff0c;所以H5规定自定义属性以data-开头定义。…

JavaScript之DOM操作获取元素、事件、操作元素、节点操作

什么是 DOM&#xff1f; 文档对象模型&#xff08;Document Object Model&#xff0c;简称 DOM&#xff09;&#xff0c;是 W3C 组织推荐的处理可扩展标记语言&#xff08;HTML或者XML&#xff09;的标准编程接口。W3C 已经定义了一系列的 DOM 接口&#xff0c;通过这些 DOM 接…

DOM 基础操作

文章目录 前言一、DOM 简介1.1 什么是 DOM 二、获取元素2.1 如何获取页面元素2.2 根据 ID 获取2.3 根据标签名获取2.4 通过 HTML5 新增的方法获取2.5 获取特殊元素&#xff08;body&#xff0c;html&#xff09; 三、事件基础3.1事件三要素3.2 执行事件的步骤3.3常见的鼠标事件…

[js]DOM操作

DOM也就是文档对象模型&#xff1a;document object model 主要用来动态操作HTML的元素节点&#xff0c;dom操作文档是居于DOM树为根据操作的。DOM树为html整体结构框架&#xff0c;其中有各种嵌套标签&#xff0c;最典型的就是以body为主容器&#xff0c;在body内部设置各种元…

DOM操作总结  (。♥ᴗ♥。) 哇!!

知识点 DOM 本质DOM 节点操作DOM 结构操作DOM 性能 前言 各种框架层出不穷&#xff0c;但DOM操作一直都会是前端工程师的基础&#xff0c;必备知识。 只会Vue和React等框架&#xff0c;而不懂DOM操作的前端程序员们。。。 DOM的本质&#xff1f; Do you know&#xff1f; 首…

JavaScript中DOM操作

Web前端基础修炼 HTML基本标签详解与运行截图 CSS基本操作详解及截图演示 JavaScript基础(ECMAScript) JavaScript中DOM操作 JavaScript中BOM操作 目录 DOM介绍 获取元素 操作元素 节点操作 DOM介绍 JavaScript一共包括三部分&#xff0c;分别是ECMAScript也就是Jav…

Dom操作的性能优化

在 开发过程中&#xff0c;或多或少都会遇到要操作dom的情况&#xff0c;而dom操作多多少少都会耗费一些性能&#xff0c;那今天我们就一起来看看在操作dom的时候有哪些性能优化方式吧&#xff1a; 1.选择性能更好的获取dom元素的方法 首先&#xff0c;我们一起来看看&#xf…

常见的DOM操作有哪些

这里是修真院前端小课堂&#xff0c;本篇分析的主题是 【常见的DOM操作有哪些】 这里是修真院前端小课堂&#xff0c;每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能&…

js中Dom操作

简单的Dom获取 什么是Dom操作&#xff1f; 1.DOM使一个"使程序"和"脚本"有能力的"动态地访问"和"更新文档内容结构"&#xff0c;以及"样式"的平台和语言中立的接口. 2.在HTML和JavaScript的学习中&#xff0c;DOM操作可谓时…

TypeScript Dom操作

文章目录 介绍获取元素类型断言获取多个DOM元素操作文本内容操作样式操作事件 介绍 DOM 是浏览器提供的&#xff08;浏览器特有)&#xff0c;专门用来操作网页内容的一些JS对象(API) 通过DOM操作&#xff0c;可以让Js/Ts控制页面&#xff08;(HTML)内容&#xff0c;让页面“动…

JavaScript DOM操作

文章目录 JavaScript DOM操作DOM操作元素DOM查询修改元素内容/属性获取元素节点 DOM的增删改 DOM操作CSS内联样式获得当前正在显示的样式 DOM的事件操作事件对象事件对象的属性 事件的冒泡和事件的委托事件冒泡事件委派事件的传播事件的绑定 JavaScript DOM操作 DOM操作元素 …

DOM的操作

一、DOM的操作 1、复制节点 cloneNode(deep) 参数deep是boolean类型&#xff0c;true/false true&#xff1a;表示深度复制&#xff08;将节点及其子节点都进行复制&#xff09; --- 深拷贝 false&#xff1a;表示浅复制&#xff08;只复制节点而不复制子节点&#xff09; ----…

DOM(操作)

DOM 1 作用和分类 作用&#xff1a;使用 JS 去操作 html 和浏览器 分类&#xff1a;DOM(文档对象模型)、BOM(浏览 器对象模型) DOM 是用来呈现以及与任意HTML 或 XML文档交互的API简单说&#xff1a;DOM 是浏览器提供的一套专门用来 操作网页内容 的功能DOM的作用&am…

13前端学习之WebAPI(三):节点操作、事件高级、DOM事件流、事件委托冒泡

文章目录 一、节点操作:1. 删除节点:1.2. 案例&#xff1a;删除留言 2. 赋值(克隆)节点:3. 案例:动态生成表格:3.1 案例分析:3.2 实现: 4. 创建元素的三种方式:4.1 区别:4.2 innerTHML和createElement效率对比: 5. DOM的核心总结:5.1 创建:5.2 增加:5.3 删除:5.4 改:5.5 查&…

DOM操作

今天开始进入JS的核心操作 DOM&#xff0c;DOM操作其实很简单&#xff0c;就是增删改查这几个操作&#xff0c;先看一下思维导图&#xff1a; 1.增加操作 1.新建&#xff1a; fn creatElement(标签名) 创建元素节点 fn setAttribute&#xff08;name,value&#xff09;直接设置…

JS中DOM元素的操作

一、DOM元素的获取 1&#xff09;document.getElementsByClassName ( “class”) 返回集 htmlcollection ,用法和数组一致 说明: class为DOM元素上class属性的值 2&#xff09;document.getElementById( “id” ) 功能:返回对拥有指定ID的第一个对象的引用 返回值: DOM对象 说明…

java锁结构之无锁偏向锁轻量级锁重量级锁

一、对象的本质&#xff08;锁在对象中的体现&#xff09; 1.1、对象的结构 对象由多部分构成的&#xff0c;对象头、属性字段、补齐字段等。补齐字段是指如果对象总大小不是4字节的整数倍&#xff0c;会填充上一段内存地址是之成为4的整数倍。 其中&#xff0c;对象头在对象…