灰色关联与TOPSIS法 —— matlab
生活随笔
收集整理的這篇文章主要介紹了
灰色关联与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總結
以上是生活随笔為你收集整理的灰色关联与TOPSIS法 —— matlab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没有bug队——加贝——Python 练
- 下一篇: 两万字详细爬虫知识储备,数据采集与清洗基