【2024_CUMCM】TOPSIS法(優劣解距離法)

目錄

引入

層次分析法的局限性

簡介

例子

想法1?

想法2 運用實際分數進行處理

想法3

問題?

擴展問題:增加指標個數

極大型指標與極小型指標

統一指標類型-指標正向化

標準化處理

計算公式

計算得分

?對原公式進行變化

升級到m個指標和n個對象

代碼?

第一步 將原始矩陣正向化

常見的四種指標

極小型-->極大型

中間型-->極大型

區間型-->極大型

第二步 正向化矩陣標準化

第三步 計算得分并歸一化

練習

思路

代碼

模型擴展——帶權重的TOPSISI


引入

層次分析法的局限性

1)評價的決策層不能太多,太多n太大,導致判斷矩陣和一致矩陣有差異

2)填數據

簡介

TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻譯為逼近理想解排序法,國內常簡稱為優劣解距離法。TOPSIS 法是一種常用的綜合評價方法,其能充分利用原始數據的信息, 其結果能精確地反映各評價方案之間的差距。


例子

想法1?

按排名,之間進行占比,如第一名-4-0.4,第二名-3-0.3

具備不合理,如果分數跨度過大,會出現嚴重不公平,例如如果最高分是99,最低分是10,而他們分數分布是0.4和0.1

想法2 運用實際分數進行處理

x - min / max - min

運用公式計算,然后進行歸一化

新問題:如果最后一面考60是0分,如果最后一名考10分還是零分

想法3

這樣就相對來說公平些

問題?

  • 比較的對象不可能只有四個
  • 比較的指標不會只有一個
  • 很多指標不存在理論上的最大和最小值,例如GDP增速?

擴展問題:增加指標個數

不難發現,成績是越高越好,與他人爭吵次數是越低越好

極大型指標與極小型指標

越高越好的指標是極大型指標(效益型),越低越好的指標是極小型指標?(成本型)


統一指標類型-指標正向化

極小型指標轉化為及大型指標公式

max - x?


標準化處理

標準化處理就是在消去量綱,即消去不同指標的影響

計算公式

會看即可,即xij除以列向量里面每一個元素的平方和再開方?

計算得分

?對原公式進行變化

| x - min | / ( |?x + max |?+ |?x - min | )

升級到m個指標和n個對象

與最大/小值的距離,也就是兩點距離公式的推廣

代碼?

???


第一步 將原始矩陣正向化

常見的四種指標

  • 極大型指標?
    • 越大越好
    • 成績、GDP增速、企業利潤
  • 極小型指標
    • 越小越好
    • 費用、壞頻率、污染程度
  • 中間型指標
    • 接近某個中間值越好
    • PH
  • 區間型指標
    • 落在某個區間越好
    • 體溫
所謂的將原始矩陣正向化,就是要將所有的指標類型統一轉化為 極大型指標。 (轉換的函數形式可以不唯一 ?

極小型-->極大型

最常用的還是` max - x `?

中間型-->極大型

?M指的是原值到中間值的距離的最大值

帶入公式即可

區間型-->極大型

a和b表示區間的端點,按上述公式進行求解即可

第二步 正向化矩陣標準化

消去不同指標量綱的影響

本文在前面有提到并附有代碼,不在贅述

第三步 計算得分并歸一化


練習

思路

這是一個評價問題,用topsis方法

按照上面講過的步驟進行:

第一步,正向化,一般默認化為極大型指標,含氧量-極大型,PH-中間型,細菌總數-極小型,植物性營養物量-區間型,所以后面三個指標需要正向化;編寫matlab,按照上面介紹的公式進行即可。

第二步,標準化

第三步,計算與最大值和最小值的距離并歸一化

看熟代碼,了解原理即可

代碼

[n,m] = size(X);
disp(['共有' num2str(n) '個評價對象, ' num2str(m) '個評價指標']) 
Judge = input(['這' num2str(m) '個指標是否需要經過正向化處理,需要請輸入1 ,不需要輸入0:  ']);if Judge == 1Position = input('請輸入需要正向化處理的指標所在的列,例如第2、3、6三列需要處理,那么你需要輸入[2,3,6]: '); %[2,3,4]disp('請輸入需要處理的這些列的指標類型(1:極小型, 2:中間型, 3:區間型) ')Type = input('例如:第2列是極小型,第3列是區間型,第6列是中間型,就輸入[1,3,2]:  '); %[2,1,3]% 注意,Position和Type是兩個同維度的行向量for i = 1 : size(Position,2)  %這里需要對這些列分別處理,因此我們需要知道一共要處理的次數,即循環的次數X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));% Positivization是我們自己定義的函數,其作用是進行正向化,其一共接收三個參數% 第一個參數是要正向化處理的那一列向量 X(:,Position(i))   回顧上一講的知識,X(:,n)表示取第n列的全部元素% 第二個參數是對應的這一列的指標類型(1:極小型, 2:中間型, 3:區間型)% 第三個參數是告訴函數我們正在處理的是原始矩陣中的哪一列% 該函數有一個返回值,它返回正向化之后的指標,我們可以將其直接賦值給我們原始要處理的那一列向量enddisp('正向化后的矩陣 X =  ')disp(X)
end%% 對正向化后的矩陣進行標準化
Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);
disp('標準化矩陣 Z = ')
disp(Z)%% 計算與最大值的距離和最小值的距離,并算出得分
D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) .^ 0.5;   % D+ 與最大值的距離向量
D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ],2) .^ 0.5;   % D- 與最小值的距離向量
S = D_N ./ (D_P+D_N);    % 未歸一化的得分
disp('最后的得分為:')
stand_S = S / sum(S)
[sorted_S,index] = sort(stand_S ,'descend')

模型擴展——帶權重的TOPSISI

在前面計算得分時,我們都是默認指標的權重相同進行計算,而在實際運用中,應該時有權重關系的。

層次分析法的主觀性太強了,更推薦使用熵權法來進行客觀賦值。?后面會補充熵權topsis法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43192.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43192.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統分析師-基礎知識

基礎知識 一、計算機組成與結構1、計算機系統基礎知識1.1 計算機硬件組成1.2 中央處理單元(CPU)1.3 數據表示1.3.1 R進制轉十進制:1.3.2 十進制轉R進制: 1.4 校驗碼(3種校驗碼)1.4.1 基本知識1.4.2 奇偶校驗…

D-DPCC: Deep Dynamic Point Cloud Compression via 3D Motion Prediction

1. 論文基本信息 發布于: 2022 2. 創新點 首先提出了一種端到端深度動態點云壓縮框架(D-DPCC),用于運動估計、運動補償、運動壓縮和殘差壓縮的聯合優化。提出了一種新的多尺度運動融合(MMF)模塊用于點云幀間預測,該模塊提取和融合不同運動流…

首屆UTON區塊鏈開發者計劃大會在馬來西亞圓滿落幕

7月9日,首屆UTON區塊鏈開發者計劃大會在馬來西亞吉隆坡成功舉辦! 來自全球頂尖的行業領袖、技術精英和眾多區塊鏈愛好者參與了此次盛會,也標志著UTON區塊鏈生態進入了一個全新的發展階段。 會上,UTON區塊鏈創始人之一唐毅先生以“…

Python 中什么是遞歸函數,如何編寫遞歸函數?

遞歸是計算機科學中的一種基本概念,它指的是函數調用自身的編程技巧。在Python中,遞歸函數是一種通過調用自身來解決問題的函數。這種方法常用于解決可以被分解為較小相同問題的場景,例如階乘計算、斐波那契數列、全排列生成等。 一、遞歸的…

TCP 握手數據流

這張圖詳細描述了 TCP 握手過程中,從客戶端發送 SYN 包到服務器最終建立連接的整個數據流轉過程,包括網卡、內核、進程中的各個環節。下面對每個步驟進行詳細解釋: 客戶端到服務器的初始連接請求 客戶端發送 SYN 包: 客戶端發起…

添加點擊跳轉頁面,優化登錄和注冊頁路由

一、給注銷按鈕添加點擊跳轉至登錄頁 1、在路由中添加登錄頁路由 2、自定義登錄頁面 3、在app.vue頁面找到下拉框組件,添加點擊事件 4、使用vue-router中的useRoute和useRouter 點擊后可以跳轉,但是還存在問題,路徑這里如果我們需要更改登錄…

Linux——公網 IP別名設置,清屏,刪除別名,在linux中提供alias永久化的方法,命令歷史

#### ipe - 公網 IP別名設置: bash alias ipecurl ipinfo.io/ip [rootserver ~]# alias ipecurl ipinfo.io/ip [rootserver ~]# ipe 113.132.176.202[rootserver ~]# #### c - 清屏,一般使用 ctrl l 快捷鍵,也可以將 clear 命令定義得更短&…

JavaScript 作用域 與 var、let、const關鍵字

目錄 一、JavaScript 作用域 1、全局作用域 2、函數作用域 3、塊級作用域 4、綜合示例 5、總結 二、var、let、const 1、var 關鍵字 2、let 關鍵字 3、const 關鍵字 4、總結 5、使用場景 一、JavaScript 作用域 在JavaScript中,作用域是指程序中可訪問…

訂單到期關閉

文章目錄 前言一、場景?二、使用步驟1.項目配置好rocketmq2.讀入數據 其他方式處理訂單到期關閉定時任務 前言 實習期間在做訂單模塊。遇到過訂單到時關閉的場景。 因為我們在通過回調接收第三方訂單狀態的時候,使用了rocketmq,在遇到訂單超…

叁[3],使用Newtonsoft.Json.dll,異常記錄

開發環境 VS2022/.net6.0/WPF 1,異常1,反序列化數組異常。 convertError:"[{"不拉不拉***************************** 原因:檢查是Json字符串的數組格式異常。 正常數組字符串 "result":[{"key1":"value1"…

神經網絡構成、優化、常用函數+激活函數

Iris分類 數據集介紹,共有數據150組,每組包括長寬等4個輸入特征,同時給出輸入特征對應的Iris類別,分別用0,1,2表示。 從sklearn包datasets讀入數據集。 from sklearn import darasets from pandas impor…

vulnhub-NOOB-1

確認靶機 掃描靶機發現ftp Anonymous 的A大小寫都可以 查看文件 解密 登錄網頁 點擊about us會下載一個壓縮包 使用工具提取 steghide info 目標文件 //查看隱藏信息 steghide extract -sf 目標文件 //提取隱藏的文件 steghide embed -cf 隱藏信息的文件 -ef…

什么樣的開放式耳機好用舒服?南卡、倍思、Oladance高人氣質量絕佳產品力薦!

?開放式耳機在如今社會中已經迅速成為大家購買耳機的新趨勢,深受喜歡聽歌和熱愛運動的人群歡迎。當大家談到佩戴的穩固性時,開放式耳機都會收到一致好評。對于熱愛運動的人士而言,高品質的開放式耳機無疑是理想之選。特別是在近年來的一些騎…

算法學習記錄4

L2-012 關于堆的判斷 def checkHeap(heap, target):if target 0:return heapif heap[target] < heap[(target - 1) // 2]:temp heap[target]heap[target] heap[(target - 1) // 2]heap[(target - 1) // 2] tempheap checkHeap(heap, (target - 1) // 2)return heapdef…

2024.7.7刷題記錄

目錄 一、849. Dijkstra求最短路 I - AcWing題庫 二、850. Dijkstra求最短路 II - AcWing題庫 根據講解視頻寫的代碼 一、849. Dijkstra求最短路 I - AcWing題庫 N 600 MAXL 10010 # 最長邊長 # 稠密圖鄰接矩陣 g [[MAXL] * N for _ in range(N)] dist [MAXL] * N …

圖片kb太大了怎么改小?修改圖片kb的方法介紹

圖片kb太大了怎么改小&#xff1f;將圖片的文件大小&#xff08;以KB為單位&#xff09;縮小可以帶來多種優點&#xff0c;但也有一些缺點需要注意。縮小圖片文件大小可以顯著減少它在硬盤或其他存儲設備上占用的空間&#xff0c;使你能夠存儲更多的圖片和其他文件。而且&#…

KIVY 3D Rotating Monkey Head?

7 Python Kivy Projects (With Full Tutorials) – Pythonista Planet KIVY 3D Rotating Monkey Head kivy 3D 旋轉猴子頭How to display rotating monkey example in a given layout. Issue #6688 kivy/kivy GitHub 3d 模型下載鏈接 P99 - Download Free 3D model by …

【Qt】QItemSelectionModel 添加選中行

1. 介紹 QItemSelectionModel 中沒有直接添加選中行的方法&#xff0c;可以通過下面的方式添加。 2. 代碼 //定義 QSqlTableModel* m_tableModel; QItemSelectionModel* m_selectionModel;//添加選中行, 全選 void addAllLine() {for(int i0; i<m_tableModel->rowCoun…

【AI大模型新型智算中心技術體系深度分析 2024】

文末有福利&#xff01; ChatGPT 系 列 大 模 型 的 發 布&#xff0c; 不 僅 引 爆 全 球 科 技 圈&#xff0c; 更 加 夯 實 了 人 工 智 能&#xff08;Artificial Intelligence, AI&#xff09;在未來改變人類生產生活方式、引發社會文明和競爭力代際躍遷的戰略性地位。當…

mysql select count返回null

注意 mysql select count返回null 下面是百度的回答 在MySQL中&#xff0c;當SELECT COUNT(*)查詢返回NULL時&#xff0c;通常意味著查詢結果為空集&#xff0c;即沒有記錄匹配查詢條件。COUNT()函數在沒有匹配行的情況下返回NULL&#xff0c;而不是0。 解決方法&#xff1a…