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

数学建模:TOPSIS分析

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

TOPSIS分析法

算法流程

  1. 假设有m个评价对象,n个评价指标,首先需要进行指标的正向化
    1. 极大型
    2. 极小型
    3. 单点型
    4. 区间型
  2. 然后对正向化后的矩阵进行标准化,得到 Z Z Z 矩阵:假设 X X X 为正向化后的矩阵,则 Z Z Z 是标准化后的矩阵:

X = [ x 11 x 11 . . . x 1 n x 21 x 22 . . . x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 . . . x m n ] ; X=\begin{bmatrix}x_{11}&x_{11}&...&x_{1n}\\x_{21}&x_{22}&...&x_{2n}\\\vdots&\vdots&\ddots&\vdots\\x_{m1}&x_{m2}&...&x_{mn}\end{bmatrix}; X= x11x21xm1x11x22xm2.........x1nx2nxmn ;

Z i j = x i j ∑ i = 1 n x i j 2 Z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^nx_{ij}^2}} Zij=i=1nxij2 xij

  1. 得到标准化后的矩阵后,我们要进行打分:计算出第 i i i个评价对象与最大值的距离 D i + D^{+}_i Di+ ,和最小值的距离 D i − D^{-}_i Di
    1. 计算带组合权重的 TOPSIS 分析法还需要 D i + D^{+}_i Di+ D i − D^{-}_i Di 分别再乘以权重 W W W
      然后再开方。

Z = [ z 11 z 11 . . . z 1 n z 21 z 22 . . . z 2 n ⋮ ⋮ ⋱ ⋮ z m 1 z m 2 . . . z m n ] ; Z=\begin{bmatrix}z_{11}&z_{11}&...&z_{1n}\\z_{21}&z_{22}&...&z_{2n}\\\vdots&\vdots&\ddots&\vdots\\z_{m1}&z_{m2}&...&z_{mn}\end{bmatrix}; Z= z11z21zm1z11z22zm2.........z1nz2nzmn ;

最大值 ( z 1 + , z 2 + . . . z n + ) = ( max ⁡ { z 11 , z 21 , . . . , z m 1 } , max ⁡ { z 12 , z 22 , . . . , z m 2 } , . . . , max ⁡ { z 1 n , z 2 n , . . . , z m n } ) ∣ 最大值(z^{+}_1,z^{+}_2 ...z^{+}_n) = \left.\left(\max\begin{Bmatrix}z_{11},z_{21},...,z_{m1}\end{Bmatrix},\max\begin{Bmatrix}z_{12},z_{22},...,z_{m2}\end{Bmatrix},...,\max\begin{Bmatrix}z_{1n},z_{2n},...,z_{mn}\end{Bmatrix}\right)\right| 最大值(z1+,z2+...zn+)=(max{z11,z21,...,zm1},max{z12,z22,...,zm2},...,max{z1n,z2n,...,zmn})

最小值 ( z 1 − , z 2 − . . . z n − ) = ( min ⁡ { z 11 , z 21 , . . . , z m 1 } , min ⁡ { z 12 , z 22 , . . . , z m 2 } , . . . , min ⁡ { z 1 n , z 2 n , . . . , z m n } ) ∣ 最小值(z^{-}_1,z^{-}_2 ...z^{-}_n) = \left.\left(\min\begin{Bmatrix}z_{11},z_{21},...,z_{m1}\end{Bmatrix},\min\begin{Bmatrix}z_{12},z_{22},...,z_{m2}\end{Bmatrix},...,\min\begin{Bmatrix}z_{1n},z_{2n},...,z_{mn}\end{Bmatrix}\right)\right| 最小值(z1,z2...zn)=(min{z11,z21,...,zm1},min{z12,z22,...,zm2},...,min{z1n,z2n,...,zmn})

D i + = ∑ j = 1 m ( z j + − z i j ) 2 D_{i}^{+}=\sqrt{\sum_{j=1}^{m}(z_{j}^{+}-z_{ij})^{2}} Di+=j=1m(zj+zij)2

D i − = ∑ j = 1 m ( z j − − z i j ) 2 {\cal D}_{i}^{-}=\sqrt{\sum_{j=1}^{m}(z_{j}^{-}-z_{ij})^{2}} Di=j=1m(zjzij)2

  1. 计算出第 i i i 个评价对象未归一化后的得分: S i S_i Si ,很明显 0 < = S i < = 1 0<= S_i <=1 0<=Si<=1,且 S i S_i Si 越大 D i + D^{+}_i Di+ 越小,越接近最大值

S i = D i − D i + + D i − S_i=\frac{D_i^-}{D_i^++D_i^-} Si=Di++DiDi

  1. 计算归一化后的得分:即每分数除以所有分数之和:

s t a n d _ S = S i ∑ i = 1 n S i stand\_S=\frac{S_i}{\sum_{i=1}^nS_i} stand_S=i=1nSiSi

程序代码

function [score]=mfunc_TOPSIS(data,W)  % TOPSIS方法:求解每个对象的综合评价得分% paramts: %      data: 原始数据矩阵,(m,n) m为评价对象,n为评价指标%      W: 每个指标的初始权重% returns:%      Score:每个评价对象的综合得分%X输入的数据,W各指标的权重[n,~]=size(data);%Z=zscore(X);Z = data ./ repmat(sum(data.*data) .^ 0.5, n, 1); %矩阵标准化V_D = sum(((Z - repmat(max(Z),n,1)) .^ 2 ) .* repmat(W,n,1) ,2) .^ 0.5; V_X = sum(((Z - repmat(min(Z),n,1)) .^ 2 ) .* repmat(W,n,1) ,2) .^ 0.5; S = V_X ./ (V_D+V_X); %未归一化得分Score_S = S / sum(S); %归一化得分,即为每个企业的投资风险评分,值越大,投资风险也越大% score=Score_S;score=100*Score_S/max(Score_S);
end

相关文章:

数学建模:TOPSIS分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 TOPSIS分析法 算法流程 假设有m个评价对象&#xff0c;n个评价指标&#xff0c;首先需要进行指标的正向化&#xff1a; 极大型极小型单点型区间型 然后对正向化后的矩阵进行标准化&#xff0c;得到 Z Z Z…...

【Qt学习】10 利用QSharedMemory实现单例运行

问题 让应用程序只有一个运行实例 QSharedMemory除了可以完成进程间通信&#xff0c;还可以实现应用程序单例化。 解法 首先&#xff0c;看看QSharedMemory的几个函数&#xff1a; 1、QSharedMemory(const QString &key, QObject *parent Q_NULLPTR)构造函数 该构造函数…...

FPGA应用于图像处理

FPGA应用于图像处理 FPGA&#xff08;Field-Programmable Gate Array&#xff09;直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件&#xff0c;具有高度的灵活性&#xff0c;可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电…...

vscode python 无法引入上层目录解决

在vscode 中.vscode 配置如下 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurati…...

[开发|java] java list 取某个属性最大的项

示例代码: import java.util.*;class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public int getAge() {return age;} }public class Main {public static void main(String[] args) {List<Person…...

关闭浏览器的跨域校验

首发博客地址 问题描述 当你访问资源失败&#xff0c;并遇到以下类似提示时&#xff1a; Access to script at 资源路径 from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrom…...

USRP 简介,对于NI软件无线电你所需要了解的一切

什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…...

RTE_Driver驱动框架和Keil下开发需要支持的xxx_DFP软件包分析

1.RTE_Driver驱动框架 RTE_Driver代表"Run-Time Environment Driver"&#xff0c;是Keil MDK&#xff08;Microcontroller Development Kit&#xff09;中的一个概念。Keil MDK是一种用于嵌入式系统开发的集成开发环境&#xff0c;提供了开发、编译、调试等一系列工具…...

ImportError: Cannot load dynamic library. Did you compile LSD?

1、问题描述 >>> import pylsd2 Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/data/data/wangzy-p-wangzy-p3-volume-pvc-0fee40a7-7013-49b4-8cfb-b4ab0394165b/.conda/envs/paddle/lib/python3.8/sit…...

音频应用编程

目录 ALSA 概述alsa-lib 简介sound 设备节点alsa-lib 移植编写一个简单地alsa-lib 应用程序一些基本概念打开PCM 设备设置硬件参数读/写数据示例代码之PCM 播放示例代码值PCM 录音 使用异步方式PCM 播放示例-异步方式PCM 录音示例-异步方式 使用poll()函数使用poll I/O 多路复用…...

软件测试/测试开发丨Python 学习笔记 之 链表

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26458 链表与数组的区别 复杂度分析 时间复杂度数组链表插入删除O(n)O(1)随机访问O(1)O(n) 其他角度分析 内存连续&#xff0c;利用CPU的机制&#xff0…...

Matlab 使用经验分享(常用函数介绍;矩阵常见计算)

Matlab 使用经验分享 大家好&#xff01;最近有很多朋友询问我关于 Matlab 的使用&#xff0c;于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说&#xff0c;Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么&#xff0c;…...

软件工程(十七) 行为型设计模式(三)

1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…...

在抖音中使用语聚AI,实现自动回复用户视频评论、私信问答

您可以通过集简云数据流程&#xff0c;将语聚AI助手集成到抖音视频评论、抖音私信&#xff0c;实现自动回复用户视频评论、私信问答&#xff0c;大大提升账号互动与运营效率。 效果如下&#xff1a; 自动化流程&#xff1a; ● 抖音普通号评论对接语聚AI&#xff08;点击可一…...

pyqt5-快捷键QShortcut

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *""" 下面示例揭示了&#xff0c;当关键字绑定的控件出现的时候&#xff0c;快捷键才管用&#xff0c; 绑定的控件没有出现的时候快捷键无效 """…...

匿名函数( lambda 表达式)

在 C 中&#xff0c;匿名函数也被称为 lambda 表达式。C11 引入了 lambda 表达式&#xff0c;使得在需要函数对象&#xff08;函数符&#xff09;的地方可以使用匿名函数来代替。 lambda 表达式的基本语法如下&#xff1a; [capture list] (parameter list) -> return typ…...

基于SSM的汽车维修管理系统——LW模板

摘要 随着人们生活水平的不断提高&#xff0c;私家车的数量正在逐年攀升。这带动了汽车维修行业的发展。越来越多的汽车维修厂如雨后春笋般涌现。同时&#xff0c;维修厂的业务操作产生了庞大的数据&#xff0c;这给汽车维修厂工作人员的数据管理提出了新的要求&#xff0c;他们…...

Ceph的纠删码特性 EC(Erasure Code)代码流程

从GitHub上Clone Ceph项目&#xff0c;我是基于(ceph version 12.2.11 luminous 版本)的代码来分析的 一、EC&#xff08;Erasure Code&#xff09;是什么&#xff1f; Ceph的纠删码特性EC&#xff1a;将写入的数据分成N份原始数据&#xff0c;通过这N份原始数据计算出M份效验…...

盘点那些国际知名黑客(上篇)

电影中的黑客仅靠一部电脑就可以窃取别人的信息&#xff0c;利用自己高超的技术让公司甚至国家都胆战心惊。“黑客”原指热心于计算机技术、水平高超的电脑高手&#xff0c;但逐渐区分为黑帽、白帽、灰帽。这些术语源自美国流行文化的老式西部电影&#xff0c;其中主角戴白色或…...

机器学习基础12-Pipeline实现自动化流程处理(基于印第安糖尿病Pima 数据集)

有一些标准的流程可以实现对机器学习问题的自动化处理&#xff0c;在 scikitlearn 中通过Pipeline来定义和自动化运行这些流程。本节就将介绍如何通过Pipeline实现自动化流程处理。 如何通过Pipeline来最小化数据缺失。如何构建数据准备和生成模型的Pipeline。如何构建特征选择…...

Ansible学习笔记15

1、roles&#xff1a;&#xff08;难点&#xff09; roles介绍&#xff1a; roles&#xff08;角色&#xff09;&#xff1a;就是通过分别将variables&#xff0c;tasks及handlers等放置于单独的目录中&#xff0c;并可以便捷地调用他们的一种机制。 假设我们要写一个playbo…...

圆圈加数字的css

方式一 .circle { width: 50px; height: 50px; border-radius: 50%; background-color: #f00; color: #fff; text-align: center; line-height: 50px; } .circle::before { content: attr(data-number); display: block; } <div class"circle" data-number"…...

YOLOV5/YOLOV7/YOLOV8改进:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:SPD-Conv提升小目标识别,实现有效…...

Docker数据管理(数据卷与数据卷容器)

目录 一、数据卷&#xff08;Data Volumes&#xff09; 1、概述 2、原理 3、作用 4、示例&#xff1a;宿主机目录 /var/test 挂载同步到容器中的 /data1 二、数据卷容器&#xff08;DataVolumes Containers&#xff09; 1、概述 2、作用 3、示例&#xff1a;创建并使用…...

大量TCP连接滞留TIME_WAIT、SYN_SENT、CLOSE_WAIT状态的分析

文章目录 一、统计各类状态的tcp连接数量二、TIME_WAIT应用服务器上&#xff0c;来自反向代理的连接反向代理上&#xff0c;访问应用服务的连接反向代理上&#xff0c;来自用户的连接 三、SYN_SENT反向代理上&#xff0c;访问位于防火墙另一侧的目标反向代理上&#xff0c;访问…...

kotlin怎么定义类

在Kotlin中&#xff0c;你可以使用class关键字来定义一个类。以下是一个简单的例子&#xff1a; class MyClass {// class body} 这个例子定义了一个名为MyClass的类。你可以在类体中定义属性和方法。 如果你想定义一个带有属性的类&#xff0c;你可以这样做&#xff1a; cla…...

如何查看数据集下载后保存的绝对路径?

1.问题 当我们下载torchvision.datasets里面的数据集时&#xff0c;有时候会遇到找不到数据集保存路径的问题。 2.解决 引入os库 import os调用如下方法 os.path.abspath(数据集对象.root)以下面代码为例 import os import torchvision.datasets as datasets# 指定数据集…...

使用php实现微信登录其实并不难,可以简单地分为三步进行

使用php实现微信登录其实并不难&#xff0c;可以简单地分为三步进行。 第一步&#xff1a;用户同意授权&#xff0c;获取code //微信登录public function wxlogin(){$appid "";$secret "";$str"http://***.***.com/getToken";$redirect_uriu…...

【LeetCode-中等题】24. 两两交换链表中的节点

文章目录 题目方法一&#xff1a;递归方法二&#xff1a;三指针迭代 题目 方法一&#xff1a;递归 图解&#xff1a; 详细版 public ListNode swapPairs(ListNode head) {/*递归法:宗旨就是紧紧抓住原来的函数究竟返回的是什么?作用是什么即可其余的细枝末节不要细究,编译器…...

5.10 汇编语言:汇编过程与结构

过程的实现离不开堆栈的应用&#xff0c;堆栈是一种后进先出(LIFO)的数据结构&#xff0c;最后压入栈的值总是最先被弹出&#xff0c;而新数值在执行压栈时总是被压入到栈的最顶端&#xff0c;栈主要功能是暂时存放数据和地址&#xff0c;通常用来保护断点和现场。 栈是由CPU管…...