TOPSIS综合评价

TOPSIS法(Technique for Order Preference by Similarity to an Ideal Solution)是一种常用的综合评价方法,该方法根据有限个评价对象与理想化目标的接近程度进行排序,是在现有的对象中进行相对优劣的评价。

TOPSIS法的原理是通过检测评价对象与最优解、最劣解的距离来进行排序。具体来说,它首先确定各效用函数的单调性,然后计算评价对象与最优解和最劣解的距离,最后根据距离进行排序。其中,最优解的各指标值都达到各评价指标的最优值,而最劣解的各指标值都达到各评价指标的最差值。评价对象离最优解越近、离最劣解越远越好。

TOPSIS方法的一般步骤如下:
  1. 确定决策矩阵:首先,根据决策者的需求和各备选方案的特点,建立一个决策矩阵,其中每一行代表一个备选方案,每一列代表一个评价准则。
  2. 标准化决策矩阵:由于各准则的量纲和数值范围可能不同,需要对决策矩阵进行标准化处理,得到无量纲的决策矩阵。
  3. 确定加权决策矩阵:根据各准则的重要性,赋予相应的权重,然后计算加权决策矩阵。
  4. 确定理想解和负理想解:理想解是指在所有准则下都是最优的解,而负理想解则是在所有准则下都是最差的解。
  5. 计算各备选方案与理想解和负理想解的距离:对每个备选方案,分别计算其与理想解和负理想解的距离。
  6. 计算相对贴近度:根据各备选方案与理想解的距离和与负理想解的距离,计算其相对贴近度。
  7. 进行排序:根据相对贴近度的大小,对所有备选方案进行排序,贴近度越大的方案越优。

案例背景

本案例以2022年广西各地市的农产品产量进行建模,综合评价各地市的农业规模和水平。要求:求出各个评价对象与正理想解和负理想解的距离,并以此对各评价对象进行优劣排序。

在这里插入图片描述在这里插入图片描述

import pandas as pd
import numpy as np
data = pd.read_clipboard()
data

在这里插入图片描述

# 向量归一化:极大型指标
normalization = np.linalg.norm(data.iloc[:,1:], axis=0)
norm_data = data.iloc[:,1:] / normalization
norm_data

在这里插入图片描述

# 求正理想解和负理想解
positive_ideal_solve = norm_data.max(axis=0)
negative_ideal_solve = norm_data.min(axis=0)
# 求正理想解的距离
positive_distance = np.linalg.norm(norm_data - positive_ideal_solve, axis=1)
# 求负理想解的距离
negative_distance = np.linalg.norm(norm_data - negative_ideal_solve, axis=1)
# 计算相对接近度
f1 = negative_distance / (negative_distance + positive_distance)
(data.assign(正理想解距离=positive_distance).assign(负理想解距离=negative_distance).assign(相对接近度=f1).assign(排名=lambda x: x.相对接近度.transform('rank', ascending=False))
)

在这里插入图片描述

总结

TOPSIS方法的优点在于它简单直观,易于理解和操作,且不需要复杂的数学运算。它适用于准则间存在冲突的情况,可以为决策者提供一个相对客观的决策依据。然而,TOPSIS方法也有其局限性,比如它假设准则之间是独立的,而实际上准则之间可能存在相互影响。此外,权重的确定在TOPSIS中也是一个主观的过程,可能会影响最终的决策结果。

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

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

相关文章

Java-文件操作

一、创建文件 1.创建文件夹 创建文件夹时,注意两个条件,该路径对应的是否为目录(dir),该文件夹是否存在。 File Apathnew File("./文件夹A"); //当前路径文件夹的存储路径if(!Apath.exists() &&am…

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.05.01-2024.05.10

文章目录~ 1.Pseudo-Prompt Generating in Pre-trained Vision-Language Models for Multi-Label Medical Image Classification2.VLSM-Adapter: Finetuning Vision-Language Segmentation Efficiently with Lightweight Blocks3.Memory-Space Visual Prompting for Efficient …

WeightedRandomSamplerDDP, 加权的DDP采样器

先来看一下WeighedRandomSampler: [docs]class WeightedRandomSampler(Sampler[int]):r"""Samples elements from [0,..,len(weights)-1] with given probabilities (weights).Args:weights (sequence) : a sequence of weights, not necessary s…

JAVA基础----线程池

①什么是线程池? 线程池是对所有线程进行统一的管理和控制,从而提高系统的运行效率。当我们要使用线程的时候可以直接从线程池中拿,用完也不用自己去销毁,省去创建和销毁的时间,提升系统的响应时间。 ②线程池的七大核…

单链表的相关题目

1.删除链表中给定值val的所有结点 public void removeall(int key) {//由于是删除链表中所有和key值相同的结点,所以可以设置两个ListNode类型的数据,一个在前面,一个在后面.//直到前面的走到链表的最后,这样完成了遍历.//先判断一下这个链表是否为空if(headnull){System.out.…

【ArcGIS For JS】前端geojson渲染行政区划图层并加标签

原理 通过DataV工具 生成行政区的geojson(得到各区的面元素数据), 随后使用手动绘制featureLayer与Label,并加载到地图。 //vue3加载geojson数据public/geojson/pt.json,在MapView渲染上加载geojson数据 type是"MultiPolygon"fetc…

Vue 3中的v-for指令使用详解

Vue 3中的v-for指令使用详解 一、前言1. 基本语法2. 循环渲染对象3. 在组件中使用v-for4.普通案例5. 其他用法 二、结语 一、前言 在Vue 3中,v-for指令是一个非常强大且常用的指令,它用于在模板中循环渲染数组或对象的内容。本文将为您详细介绍Vue 3中v…

Android项目实战 —— 手把手教你实现一款本地音乐播放器Dora Music

今天带大家实现一款基于Dora SDK的Android本地音乐播放器app,本项目也作为Dora SDK的实践项目或使用教程。使用到开源库有[https://github.com/dora4/dora] 、[https://github.com/dora4/dcache-android] 等。先声明一点,本项目主要作为框架的使用教程&a…

Unity【入门】环境搭建、界面基础、工作原理

Unity环境搭建、界面基础、工作原理 Unity环境搭建 文章目录 Unity环境搭建1、Unity引擎概念1、什么是游戏引擎2、游戏引擎对于我们的意义3、如何学习游戏引擎 2、软件下载和安装3、新工程和工程文件夹 Unity界面基础1、Scene场景和Hierarchy层级窗口1、窗口布局2、Hierarchy层…

跨平台游戏引擎 Axmol-2.1.3 发布

我们非常荣幸,axmol 能在发布此版本之前被 awsome-cpp 收录! The 2.1.3 release is a minor LTS release for bugfixes and improvements, we also have new home page: https://axmol.dev , thanks to all contributers of axmol, especially iAndyHD…

多分支拓扑阻抗匹配

最近测试信号质量,发现在有过冲、振铃等问题的时候大部分硬件工程师喜欢直接调大匹配电阻或者减小驱动电流,虽然这种操作是有效果的,但是我认为应该还可以更严谨的计算下,而不是选几个电阻多次尝试,显得不是很专业。 …

一文了解Redis及场景应用

Redis是一个高性能的、开源的、基于键值对(Key-Value)的数据结构存储系统,它支持网络、内存存储以及可选的持久化特性。 以下是关于Redis的一些详细说明: 核心特性 数据结构丰富: Strings:最基本的数据类型…

call函数实现

call 函数的实现步骤: 判断调用对象是否为函数,即使我们是定义在函数的原型上的,但是可能出现使用 call 等方式调用的情况。 判断传入上下文对象是否存在,如果不存在,则设置为 window 。 处理传入的参数,…

推送镜像到私有harbor仓库

本地已制作镜像:tomcat-8.5.100-centos7.9:1.0。 本地已经搭建私有仓库:harbor.igmwx.com。 现在需要把镜像 tomcat-8.5.100-centos7.9:1.0 推送到harbor。 (1)查看本地镜像:sudo docker images zhangzkzhangzk:~/d…

人脸识别--Dlib(二)

Dlib 是一个现代化的 C 工具库,包含了机器学习、计算机视觉和图像处理的广泛功能。它特别在面部识别和检测方面非常流行。Dlib 的主要优点是其易用性、广泛的功能集和跨平台支持。下面是对 Dlib 的详细介绍,包括其主要功能、使用方法和优缺点。 主要功能…

java 对接农行支付相关业务(二)

文章目录 农行掌银集成第三方APP1:掌银支付对接快e通的流程1.1 在农行网站上注册我们的app信息([网址](https://openbank.abchina.com/Portal/index/index.html))1.2:java整合农行的jar包依赖1.3:把相关配置信息整合到项目中1.4:前端获取授权码信息1.5:后端根据授权码信…

【动态规划】速解简单多状态类问题

目录 17.16 按摩师 题⽬描述: 解法(动态规划): 1. 状态表⽰: 2. 状态转移⽅程: 3. 初始化: 4. 填表顺序 5. 返回值 代码 总结: 213.打家劫舍II(medium&#x…

Android 之广播监听网络变化

网络状态变化监听帮助类 NetBroadcastReceiverHelper public class NetBroadcastReceiverHelper {private static final String TAG "NetBroadcastReceiverHelper";private static final String NET_CHANGE_ACTION "android.net.conn.CONNECTIVITY_CHANGE&qu…

大模型中GPTs,Assistants API, 原生API的使用场景?

在大模型的使用中,GPTs、Assistants API和原生API各有其独特的应用场景和优势。以下是它们各自的使用场景: GPTs场景: 自然语言处理任务: GPTs擅长处理各种自然语言处理任务,如文本生成、翻译、摘要、情感分析等。 对…

C++ 基于vs2019创建并使用动态链接库(dll)

库的基本认识 静态库(Static Library) 基本概念:静态库是在编译时链接到目标程序中的库文件。它包含了程序运行所需的所有函数和数据,这些函数和数据会被直接嵌入到最终生成的可执行文件中。静态库通常以.a(在Unix-l…