当前位置: 首页 > 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。如何构建特征选择…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...