灰色关联与TOPSIS法 —— matlab
目錄
1.簡介
2.算法詳解
2.1 指標(biāo)正向化及標(biāo)準(zhǔn)化
2.2?找到最大最小參考向量
2.3?計算與參考向量的相關(guān)系數(shù)
2.4?求評分
3.實例分析
3.1 讀取數(shù)據(jù)
3.2 數(shù)據(jù)標(biāo)準(zhǔn)化
3.3 得到最大最小參考行
3.4?與最大值的灰色相關(guān)系數(shù)
?3.5?與最小值的灰色相關(guān)系數(shù)
3.6 計算綜合評分
完整代碼
1.簡介
TOPSIS法 —— matlab :傳送門
灰色關(guān)聯(lián)法 —— matlab:傳送門
2.算法詳解
2.1 指標(biāo)正向化及標(biāo)準(zhǔn)化
????????設(shè)有m個待評對象,n個評價指標(biāo),可以構(gòu)成數(shù)據(jù)矩陣X=(xij)m*n,設(shè)數(shù)據(jù)矩陣內(nèi)元素,經(jīng)過指標(biāo)正向化處理過后的元素為xij'
- 若xj為負(fù)向指標(biāo)(越小越優(yōu)型指標(biāo))
- 若xj為正向指標(biāo)(越大越優(yōu)型指標(biāo))
2.2?找到最大最小參考向量
設(shè)正向化標(biāo)準(zhǔn)化后的數(shù)據(jù)矩陣。
最大參考向量由各個指標(biāo)的最大值構(gòu)成
最小參考向量由各個指標(biāo)的最小值構(gòu)成
2.3?計算與參考向量的相關(guān)系數(shù)
求出標(biāo)準(zhǔn)化后數(shù)據(jù)矩陣X和最大參考向量Vmax和最小參考向量Vmin的灰色相關(guān)系數(shù)。
該過程仿照灰色關(guān)聯(lián)度分析法做就行
- 參考向量的選擇
????????例如研究x2指標(biāo)與x1指標(biāo)之間的灰色關(guān)聯(lián)度。所以將x1列作為參考向量,即要研究與誰的關(guān)系,就將誰作為參考。設(shè)參考向量為Y1=x1,生成新的數(shù)據(jù)矩陣 X1=x2.
- 生成絕對值矩陣?
設(shè)生成的絕對值矩陣為A
A=[X1-Y1],亦是A=[x2-x1]
設(shè)dmax為絕對值矩陣A的最大值,dmin為絕對值矩陣A的最小值。
-
計算灰色關(guān)聯(lián)矩陣
設(shè)灰色關(guān)聯(lián)矩陣為B
- 計算灰色關(guān)聯(lián)度
2.4?求評分
3.實例分析
數(shù)據(jù)來源:藍(lán)奏云
3.1 讀取數(shù)據(jù)
data=xlsread('D:\桌面\TOPSIS.xlsx')' %橫坐標(biāo)為評價指標(biāo),縱坐標(biāo)為評價對象返回:
?
3.2 數(shù)據(jù)標(biāo)準(zhǔn)化
%% 標(biāo)準(zhǔn)化 data1=mapminmax(data,0.002,1);%標(biāo)準(zhǔn)化到0.002-1區(qū)間返回:
3.3 得到最大最小參考行
data1=data1'; V_max=max(data1);%最大參考行,指標(biāo)最大 V_min=min(data1);%最小參考行,指標(biāo)最小3.4?與最大值的灰色相關(guān)系數(shù)
%% 與最大值的灰色相關(guān)系數(shù) [m,n]=size(data1);%得到行數(shù)和列數(shù) data2=data1; for i=1:mdata2(i,:)=abs(data1(i,:)-V_min); end %得到絕對值矩陣的全局最大值和最小值 d_max=max(max(data2)); d_min=min(min(data2)); %灰色關(guān)聯(lián)矩陣 a=0.5; %分辨系數(shù) data3=(d_min+a*d_max)./(data2+a*d_max); xi_min=mean(data3')?返回:
?3.5?與最小值的灰色相關(guān)系數(shù)
%% 與最小值的灰色相關(guān)系數(shù) [m,n]=size(data1);%得到行數(shù)和列數(shù) 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 計算綜合評分
%% 綜合評分 %與最大指標(biāo)行相關(guān)系數(shù)越大,最小指標(biāo)構(gòu)成的行相關(guān)系數(shù)越小得分大 Score=1./(1+xi_min./xi_max).^2; for i=1:length(Score)fprintf('第%d個投標(biāo)者評分為:%4.2f\n',i,Score(i)); end返回:
完整代碼
clc;clear; data=xlsread('D:\桌面\TOPSIS.xlsx')'; %橫坐標(biāo)為評價指標(biāo),縱坐標(biāo)為評價對象 %% 標(biāo)準(zhǔn)化 data1=mapminmax(data,0.002,1);%標(biāo)準(zhǔn)化到0.002-1區(qū)間 data1=data1'; V_max=max(data1);%最大參考行,指標(biāo)最大 V_min=min(data1);%最小參考行,指標(biāo)最小 %% 與最大值的灰色相關(guān)系數(shù) [m,n]=size(data1);%得到行數(shù)和列數(shù) data2=data1; for i=1:mdata2(i,:)=abs(data1(i,:)-V_min); end %得到絕對值矩陣的全局最大值和最小值 d_max=max(max(data2)); d_min=min(min(data2)); %灰色關(guān)聯(lián)矩陣 a=0.5; %分辨系數(shù) data3=(d_min+a*d_max)./(data2+a*d_max); xi_min=mean(data3'); %% 與最小值的灰色相關(guān)系數(shù) [m,n]=size(data1);%得到行數(shù)和列數(shù) 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'); %% 綜合評分 %與最大指標(biāo)行相關(guān)系數(shù)越大,最小指標(biāo)構(gòu)成的行相關(guān)系數(shù)越小得分大 Score=1./(1+xi_min./xi_max).^2; for i=1:length(Score)fprintf('第%d個投標(biāo)者評分為:%4.2f\n',i,Score(i)); end總結(jié)
以上是生活随笔為你收集整理的灰色关联与TOPSIS法 —— matlab的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没有bug队——加贝——Python 练
- 下一篇: 主成分分析(PCA)及其可视化——mat