灰色关联与TOPSIS法 —— matlab

目录

1.简介

2.算法详解

2.1 指标正向化及标准化

2.2 找到最大最小参考向量

2.3 计算与参考向量的相关系数

2.4 求评分

3.实例分析

3.1 读取数据

3.2 数据标准化

3.3 得到最大最小参考行

3.4 与最大值的灰色相关系数

 3.5 与最小值的灰色相关系数

3.6 计算综合评分

完整代码


1.简介

TOPSIS法 —— matlab :传送门

灰色关联法 —— matlab:传送门

2.算法详解

2.1 指标正向化及标准化

        设有m个待评对象,n个评价指标,可以构成数据矩阵X=(xij)m*n,设数据矩阵内元素,经过指标正向化处理过后的元素为xij'

  • 若xj为负向指标(越小越优型指标)

  • 若xj为正向指标(越大越优型指标)

2.2 找到最大最小参考向量

设正向化标准化后的数据矩阵

最大参考向量由各个指标的最大值构成

最小参考向量由各个指标的最小值构成

2.3 计算与参考向量的相关系数

求出标准化后数据矩阵X和最大参考向量Vmax和最小参考向量Vmin的灰色相关系数。

该过程仿照灰色关联度分析法做就行

  • 参考向量的选择

        例如研究x2指标与x1指标之间的灰色关联度。所以将x1列作为参考向量,即要研究与谁的关系,就将谁作为参考。设参考向量为Y1=x1,生成新的数据矩阵 X1=x2.

  • 生成绝对值矩阵 

设生成的绝对值矩阵为A

A=[X1-Y1],亦是A=[x2-x1]

设dmax为绝对值矩阵A的最大值,dmin为绝对值矩阵A的最小值。

  • 计算灰色关联矩阵

设灰色关联矩阵为B

  • 计算灰色关联

2.4 求评分

3.实例分析

数据来源:蓝奏云

3.1 读取数据

data=xlsread('D:\桌面\TOPSIS.xlsx')' %横坐标为评价指标,纵坐标为评价对象

返回:

 

3.2 数据标准化

%% 标准化
data1=mapminmax(data,0.002,1);%标准化到0.002-1区间

返回:

3.3 得到最大最小参考行

data1=data1';
V_max=max(data1);%最大参考行,指标最大
V_min=min(data1);%最小参考行,指标最小

3.4 与最大值的灰色相关系数

%% 与最大值的灰色相关系数
[m,n]=size(data1);%得到行数和列数
data2=data1;
for i=1:mdata2(i,:)=abs(data1(i,:)-V_min);
end
%得到绝对值矩阵的全局最大值和最小值
d_max=max(max(data2));
d_min=min(min(data2));
%灰色关联矩阵
a=0.5;   %分辨系数
data3=(d_min+a*d_max)./(data2+a*d_max);
xi_min=mean(data3')

 返回:

 3.5 与最小值的灰色相关系数

%%  与最小值的灰色相关系数
[m,n]=size(data1);%得到行数和列数
data2=data1;
for i=1:mdata2(i,:)=abs(data1(i,:)-V_max);
end
% data2=abs(data1-V_max);
%得到绝对值矩阵的全局最大值和最小值
d_max=max(max(data2));
d_min=min(min(data2));
data3=(d_min+a*d_max)./(data2+a*d_max);
xi_max=mean(data3')

返回:

3.6 计算综合评分

%% 综合评分
%与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
Score=1./(1+xi_min./xi_max).^2;
for i=1:length(Score)fprintf('第%d个投标者评分为:%4.2f\n',i,Score(i));   
end

返回:

完整代码

clc;clear;
data=xlsread('D:\桌面\TOPSIS.xlsx')'; %横坐标为评价指标,纵坐标为评价对象
%% 标准化
data1=mapminmax(data,0.002,1);%标准化到0.002-1区间
data1=data1';
V_max=max(data1);%最大参考行,指标最大
V_min=min(data1);%最小参考行,指标最小
%% 与最大值的灰色相关系数
[m,n]=size(data1);%得到行数和列数
data2=data1;
for i=1:mdata2(i,:)=abs(data1(i,:)-V_min);
end
%得到绝对值矩阵的全局最大值和最小值
d_max=max(max(data2));
d_min=min(min(data2));
%灰色关联矩阵
a=0.5;   %分辨系数
data3=(d_min+a*d_max)./(data2+a*d_max);
xi_min=mean(data3');
%%  与最小值的灰色相关系数
[m,n]=size(data1);%得到行数和列数
data2=data1;
for i=1:mdata2(i,:)=abs(data1(i,:)-V_max);
end
% data2=abs(data1-V_max);
%得到绝对值矩阵的全局最大值和最小值
d_max=max(max(data2));
d_min=min(min(data2));
data3=(d_min+a*d_max)./(data2+a*d_max);
xi_max=mean(data3');
%% 综合评分
%与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
Score=1./(1+xi_min./xi_max).^2;
for i=1:length(Score)fprintf('第%d个投标者评分为:%4.2f\n',i,Score(i));   
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java @SafeVarargs注解

在介绍 SafeVarargs 注解用法之前,先来看看如下代码: public class HelloWorld {public static void main(String[] args) {// 传递可变参数,参数是泛型集合display(10, 20, 30);// 传递可变参数,参数是非泛型集合display("…

mmap函数_Linux内存映射mmap原理分析

一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后&#…

灰色关联法 —— python

目录 1.简介 2.算法详解 2.1 数据标准化 2.2 计算灰色相关系数 2.3 计算灰色关联度系数 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 绘制 x1,x4,x5,x6,x7 的折线图 3.4 计算灰色相关系数 完整代码 1.简介 对于两个系统之间的因素,其随时间或不同对象而变…

arraylist线程安全吗_Java中的集合和线程安全

通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务,我们应该如何在单线程和多线程中使用集合(Collection)。话题有点高端,我们不是很好理解。所以,我会尽可能的描述的简单点。通过这篇指南,你将会对Java集合…

Java @FunctionalInterface注解

FunctionalInterface 就是用来指定某个接口必须是函数式接口,所以 FunInterface 只能修饰接口,不能修饰其它程序元素。 函数式接口就是为 Java 8 的 Lambda 表达式准备的,Java 8 允许使用 Lambda 表达式创建函数式接口的实例,因此…

灰色关联与TOPSIS法 —— python

目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得到最大最小参考行 3.4 与最大值的灰色相关系数 3.5 与最小值的灰色相关系数 3.6 计算综合评分…

spark 数据框 删除列_pandas 常用的数据处理函数

在数据分析过程中,首先就是对数据进行清洗和处理,而使用 python 进行处理的朋友们,对 pandas 包肯定是熟悉不过的了。pandas 的功能很强大,基本的数据处理操作都可以找到对应函数去使用,想全面了解的朋友可以查看相关文…

Java元注解作用及使用

元注解是负责对其它注解进行说明的注解,自定义注解时可以使用元注解。Java 5 定义了 4 个注解,分别是 Documented、Target、Retention 和 Inherited。Java 8 又增加了 Repeatable 和 Native 两个注解。这些注解都可以在 java.lang.annotation 包中找到。…

灰色预测法 —— matlab

目录 1.简介 2.算法详解 2.1 生成累加数据 2.2 累加后的数据表达式 2.3 求解2.2的未知参数 3.实例分析 3.1 导入数据 3.2 进行累加数据 3.3 求解系数 3.4 预测数据及对比 完整代码 1.简介 灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测&a…

jpa 自定义sql if_SpringBoot整合JPA实现多数据源及读写分离

SpringBoot整合JPA实现多数据源及读写分离项目地址:https://github.com/baojingyu/spring-boot-jpa-dynamic-datasource本项目使用 SpringBoot 和 SpringData JPA 实现多数据源,动态数据源的切换。前段时间写 MySQL 主从复制的技术分享,我就在…

时间序列分析简介

目录 1.引言 2.时间序列的定义 3.时间序列分析方法 (1)描述性时间序列分析 (2)统计时序分析 时序分析方法 时域分析方法 1.引言 最早的时间序列分析可以追溯到7000年前,古埃及把尼罗河涨落的情况逐天记录下来&a…

jupyter notebook和python有什么区别_Jupyter Notebook 有哪些奇技淫巧?

Towards Data Science专栏的作者Parul Pandey总结了七大Jupyter的进阶用法: 一、执行shell命令 Shell是一种与计算机进行文本交互的方式。 一般来讲,当你正在使用Python编译器,需要用到命令行工具的时候,要在shell和IDLE之间进行切…

时间序列的预处理

目录 一、特征统计量 1.概率分布 2.特征统计量 二、平稳时间序列的定义 严平稳与宽平稳的关系 三、平稳时间序列的统计性 四、平稳性的重大意义 五、平稳性检验 时序图检验 自相关图检验 R绘图 一、特征统计量 平稳性是某些时间序列具有的一种统计特征要描述清楚这个…

Java系统流

每个 Java 程序运行时都带有一个系统流,系统流对应的类为 java.lang.System。Sytem 类封装了 Java 程序运行时的 3 个系统流,分别通过 in、out 和 err 变量来引用。这 3 个系统流如下所示: System.in:标准输入流,默认设…

R中‘ts‘ object must have one or more observations

错误如下: 为什么会出现,如下错误是因为我读取数据是,没有对数据进行分割,而是直接读取,然后使用的 最初读取方式为: 改变后的读取方式: 此时,再调用上面提示错误的那行代码试试&am…

python编码和解码_uu --- 对 uuencode 文件进行编码与解码 — Python 3.7.9 文档

uu --- 对 uuencode 文件进行编码与解码 此模块使用 uuencode 格式来编码和解码文件,以便任意二进制数据可通过仅限 ASCII 码的连接进行传输。 在任何要求文件参数的地方,这些方法都接受文件类对象。 为了保持向下兼容,也接受包含路径名称的字…

Java字符编码介绍

在计算机中,任何的文字都是以指定的编码方式存在的,在 Java 程序的开发中最常见的是 ISO8859-1、GBK/GB2312、Unicode、 UTF 编码。 Java 中常见编码说明如下: ISO8859-1:属于单字节编码,最多只能表示 0~255 的字符范…

灰色预测法 —— python

目录 1.简介 2.算法详解 2.1 生成累加数据 2.2 累加后的数据表达式 2.3 求解2.2的未知参数 3.实例分析 3.1 导入数据 3.2 进行累加数据 3.3 求解系数 3.4 预测数据及对比 完整代码 1.简介 灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测&am…

python爬虫怎么爬小说_python爬虫爬取笔趣网小说网站过程图解

首先:文章用到的解析库介绍 BeautifulSoup: Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代…

Java File类详解

在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。 File …