Topsis優劣解距離法 mlx程式碼
阿新 • • 發佈:2020-07-05
請參考https://blog.csdn.net/qq_36384657/article/details/98188769
mlx程式碼
topsis 優劣解距離法 引數說明: 分數、獲獎次數、價值等 屬於極大型指標(效益型) 不及格次數、被批評次數、成本等 屬於極小型指標(成本型) clc;clear; judge1 = [89 60 74 99]'; % 分數 judge2 = [89 60 74 99; 2 0 1 3]'; % 分數 和 被批評次數 演算法核心: 一個指標的情況: (排序不就行了???) 多個指標的情況: https://blog.csdn.net/qq_36384657/article/details/98188769 % 1.將指標【轉化為極大型】 x = max - x; judge2(:,2) = max(judge2(:,2)) - judge2(:,2); % 2.【標準化】處理 [每個元素除以其所在列各元素平方和的開方] judge2 = judge2 ./ sqrt( sum(judge2 .^ 2) ); % 3.【找出距離】 找出與最大最小值的距離 % 這裡的最大(小)值 (max1,max2,max3,...)為各列的最大(小)值 nmax = max(judge2); nmin = min(judge2); distanceMax = sqrt(sum((judge2 - nmax) .^ 2 ,2)); % 減去最大值,平方,按照行求和,開根號 distanceMin = sqrt(sum((judge2 - nmin) .^ 2 ,2)); % 減去最小值,平方,按照行求和,開根號 % 4.【計算分值】 (x - min) / (max - min) score = distanceMin ./ (distanceMax + distanceMin); % 5.【歸一化】 score = score ./ sum(score); end % 顯示名次 [~,I] = sort(score); disp('最終排名:'); disp([score I])