TOPSIS与模糊Borda 的组合应用(以第二届大湾区杯和国赛为案例)
目錄
一、TOPSIS(優劣解距離法)簡介
二、TOPSIS(優劣解距離法)主要步驟
(1)數據進行標準化
(2)構建決策矩陣
(3)構造加權規范陣
(4)計算正負理想解
(5)計算各方案與正負理想解間的距離
(6)計算各方案與正理想解的相對貼近度
三、TOPSIS算法代碼(MATLAB)
四、模糊Borda組合評價簡介
五、模糊Borda組合評價步驟
(1)計算隸屬度
(2)計算模糊頻數
(3)計算模糊頻率
(4)將排序轉化為得分
(5)計算模糊Borda數FBi
六、模糊Borda組合評價代碼(MATLAB)
七、案例分析
(1)2021年國賽C題
(2)2021 年第二屆“大灣區杯”粵港澳金融數學建模競賽B題
八、總結
(1)TOPSIS
(2)模糊Borda
一、TOPSIS(優劣解距離法)簡介
TOPSIS法亦被稱為理想解法,是一種綜合評價方法,該方法能夠充分利用原始數據,精確反映各評價方案之間的差距,對數據分布及其樣本含量沒有嚴格限制。能有效地解決多指標評價問題,該方法通過構造評價問題的正理想解(最優解)和負理想解(最劣解),計算每個方案到理想方案的相近貼進度,即靠近最優解和遠離最劣解的程度,來對方案進行排序,從而選出最佳方案,具體流程如下圖所示。
TOPSIS算法流程圖?二、TOPSIS(優劣解距離法)主要步驟
用理想解法求解多屬性決策問題的概念簡單,只要在屬性空間定義適當的距離測度就能計算備選方案與理想解的距離。TOPSIS法所用的是歐幾里得距離。至于既用最優解又用最劣解是因為在僅僅使用最優解時可能會出現某兩個備選方案與最優解的距離相同的情況,為了區分這兩個方案的優劣,引入最劣解并計算這兩個方案與最劣解的距離,與最優解的距離相同的方案離最劣解遠者為優。
(1)數據進行標準化
依據你建立的評價指標體系,建立歸一化矩陣,將數據進行標準化。
?(2)構建決策矩陣
用向量規劃化的方法求得規范決策矩陣。設多屬性決策問題的決策矩陣,規范化決策矩陣,其中
?(3)構造加權規范陣
構造加權規范陣。設由決策人給定各屬性的權重向量為,則
?權重可通過熵權法、FAHP、相關性等方法確定,使用熵權法確定權重,首先計算各個指標的信息熵,在通過信息熵計算各指標的權重。
?(4)計算正負理想解
確定最優解和最劣解。則
(5)計算各方案與正負理想解間的距離
計算所選取的指標與最優向量的歐氏距離和最劣向量的距離。
?(6)計算各方案與正理想解的相對貼近度
三、TOPSIS算法代碼(MATLAB)
clear clc A=[1 2 3;4 5 6;7 8 9];%【初始矩陣,列為指標,行為方案】 [n,m]=size(A); %n為A矩陣的行數,m為A矩陣的列數 c=sqrt(sum(A.*A)); %規范化決策矩陣 d=A./c; w=[0.33 0.33 0.33];%權重 c=w.*d; cmax=max(c); cmin=min(c); for i=1:nc1=c(i,:)-cmax;s1(i)=norm(c1);c2=c(i,:)-cmin;s2(i)=norm(c2);T(i)=s2(i)/(s1(i)+s2(i)); end %排名 [~,pm]=sort(T,'descend'); disp('評分結果,評分區間[0,1]') disp(T) disp('方案排名') disp(pm)四、模糊Borda組合評價簡介
模糊Borda組合評價模型是在幾種評價方法結果相似的前提下,通過將多個評價方法進行組合,以求得一個更有參考價值的結果。本文在使用秩和比綜合評價法和TOPSIS法之后,嘗試使用模糊Borda組合評價模型進行運算,以求得到效果更好的結果。
五、模糊Borda組合評價步驟
(1)計算隸屬度
(2)計算模糊頻數
(3)計算模糊頻率
(4)將排序轉化為得分
(5)計算模糊Borda數FBi
詳細原理、步驟及代碼見本人之前寫的一篇博客,歡迎大家移步觀看,這里就不過多贅述。[刨根問底] 五分鐘搞懂組合評價模型—模糊Borda (以2021 年大學生數模國賽C題為例)_飼養猿的博客-CSDN博客
六、模糊Borda組合評價代碼(MATLAB)
x=[ ]; %x矩陣儲存各評價方法的得分,一行代表一家供應商,列代表不同的評價方法 Ma = max(x,[],2); %求每列最大值 Mi = min(x,[],2); %求每列最小值 for i = 1:402 %402家供應商for j = 1:N %N種評價方法,記得把N改為你自己選擇的評價方法數,不然會報錯u(i,j) = ((x(i,j)-Mi(i,1))./(Ma(i,1)-Mi(i,1))).*0.9+0.1;end end B=zeros(402,402);%儲存模糊頻數矩陣 BB1=();%儲存第一種評價方法排名 BB2=();%儲存第二種評價方法排名%求模糊頻數矩陣 for i=1:402B(i,BB1(i,1))=1; end for j=1:402B(j,BB2(j,1))=1; end %計算模糊頻率 for h = 1 : 402for i = 1 : 402p(h,i) = sum(B(h,i) .* u(i,:));end end for h = 1 : 402for i = 1 : 402w(h,i) = p(h,i) ./ sum(p(:,i));end end %計算最終得分 for h = 1 : 402for i = 1 : 402Q(h,i) = 0.5 * (402- h) * (402 - h + 1);end end Q=Q'; %計算模糊Borda數FBi,然后輸出排名 FB = sum(w.*Q,2); [a,PX]=sort(FB(end:-1:1)); PX七、案例分析
(1)2021年國賽C題
[刨根問底] 五分鐘搞懂組合評價模型—模糊Borda (以2021 年大學生數模國賽C題為例)_飼養猿的博客-CSDN博客
(2)2021 年第二屆“大灣區杯”粵港澳金融數學建模競賽B題
針對問題二,使用多元線性回歸將公因子對股票走勢分別進行擬合,在95%的顯著性水平下,收益率與盈利能力因子、估值因子成負相關關系,收益率與成長因子成正相關關系。確定投資策略時,構建了兩種選股模型。第一種基于馬科維茨證券組合選擇理論,計算10支股票投資組合的有效前沿曲線;第二種采用熵權-TOPSIS法對10支股票的各個季度的投資價值進行打分排名,再綜合四十個季度的排名和得分做模糊Borda組合評價,立訊精密、國星光電、生益科技、順絡電子、長盈精密的綜合得分相同且最高,投資價值相對來說最優。
clear;clc; %清除變量和數據 %% %讀取數據 [x,id]=xlsread('C:\Users\86178\Desktop\數據');%讀取文件 jieguo=zeros(10,41);%用來儲存40個季度各股票TOPSIS得分 jieguo(:,1)=[1:10]';%用來儲存股票代碼 jieguo2=zeros(10,40);%用來儲存40個季度各股票的得分排序 %1-10分別代表{'分眾傳媒';'億緯鋰能';'立訊精密';'風華高科';'國星光電';'生益科技';'德賽電池';'順絡電子';'長盈精密';'廣電運通'}%% %劃分數據 count=1; for a = 1:40%提取矩陣數據YM = x(count:count+9,2:end); count=count+10;%%%Topsis綜合評價[n,m] = size(YM);%n代表數據,m代表6個指標disp(['共有' num2str(n) '個評價對象, ' num2str(m) '個評價指標']) y=[];%空矩陣,存儲歸一化后數據for i=1:my(:,i)=YM(:,i)/sum([YM(:,i)]);%數據歸一化endfor i=1:maa(i)=max(y(:,i));%最大化指標bb(i)=min(y(:,i));%最小化指標enddd1=zeros(n,1);dd2=zeros(n,1);for i=1:nfor j=1:mmaxzhi(i,j)=(y(i,j)-aa(j))^2;%計算到最優值距離minzhi(i,j)=(y(i,j)-bb(j))^2;%計算到最劣值距離dd1(i,1)=dd1(i,1)+maxzhi(i,j);dd2(i,1)=dd2(i,1)+minzhi(i,j);enddd1(i,1)=sqrt(dd1(i,1));%求s+,與最優解的距離dd2(i,1)=sqrt(dd2(i,1));%求s-,與最劣解的距離endfor i=1:nc(i)=dd2(i,1)/(dd1(i,1)+dd2(i,1));%求接近程度end[xx,yy]=sort(c,'descend');%排序jieguo2(:,a)=yy';%將排名填入相應列jieguo(:,a+1)=c';%將對應得分填入相應列subplot(4,10,a) %將圖按行列號分布plot(jieguo(:,a+1),'LineWidth',2)set(gca,'yticklabel',{'0','0.2','0.4','0.6','0.8','1'})set(gca,'fontname','宋體','FontSize',14)set(gca,'xticklabel',{'0','5','10'})title({['YM',num2str(ceil(a))]})grid on end save('得分', 'jieguo'); save('得分排序', 'jieguo2');%%%模糊Borda%組合評價就是將多個評價方法的結果再算一下,得到一個更有參考價值的結果 N=zeros(10,40); for i=1:40N(:,i)=jieguo(:,i+1); endMaxzhi = max(N,[],2); %求每行最大值 Minzhi = min(N,[],2); %求每行最小值 for i = 1:10 %10只股票for j = 1:40 %40種評價得分u(i,j) = ((N(i,j)-Minzhi(i,1))./(Maxzhi(i,1)-Minzhi(i,1))).*0.9+0.1;end end B=zeros(10,10);%儲存模糊頻數矩陣%求模糊頻數矩陣 for j=1:40 for i=1:10B(i,jieguo2(i,j))=1; end end%計算模糊頻率 for h = 1 : 10for i = 1 : 10p(h,i) = sum(B(h,i) .* u(i,:));end end for h = 1 : 10for i = 1 : 10w(h,i) = p(h,i) ./ sum(p(:,i));end end%計算最終得分 for h = 1 : 10for i = 1 : 10Q(h,i) = 0.5 * (10- h) * (10 - h + 1);end end Q=Q';%計算模糊Borda數FBi,然后輸出排名 FB = sum(w.*Q,2); [a,PX]=sort(FB,'descend');%排序 PM=zeros(10,2); PM(:,1)=PX; PM(:,2)=a;%結果可視化figure plot(sort(FB,'descend'),'LineWidth',2) title('模糊Borda得分結果圖','FontSize',14) set(gca,'FontSize',12,'color','white'); az=1;八、總結
(1)TOPSIS
TOPSIS模型避免了數據的主觀性,不需要目標函數,相較于層次分析法,更為客觀,能夠很好的刻畫多個影響指標的綜合影響力度,缺點是必須具有兩個及以上的研究對象才可以使用。
(2)模糊Borda
模糊Barda法可以綜合多種評價方法的不同結果,該方法既考慮不同方法下排序名次的差異,又考慮相應評價方法下各項目的得分值,能更好地利用已有的評價信息,從而使得評價結果具有較高的合理性和優越性。
模糊Borda法冠名為“模糊”的理由是,計算了所謂的“隸屬度”。其實,只不過是實際評價值的一個區間線性變換(極差變換或極大值相對化變換)。通過變換之后,所有的評價方法輸出值的取值區間均為[0,1]。它充其量也只是“評語等級退化為單個等級”時的隸屬度,或者稱為“隸屬優度”,從整個過程來看,該方法并沒有與模糊數學中的有關運算規則、特殊概念發生很強的聯系。
在學習中成功、在學習中進步!我們一起學習不放棄~
記得三連哦~mua 你們的支持是我最大的動力!!歡迎大家閱讀往期文章哈~
小編聯系方式如下,歡迎各位大佬溝通交流。
int[] arr=new int[]{4,8,3,2,6,5,1}; int[] index= new int[]{6,4,5,0,3,0,2,6,3,1}; String QQ = "";for (int i : index){QQ +=arr[i]; } System.out.println("小編的QQ:" + QQ);總結
以上是生活随笔為你收集整理的TOPSIS与模糊Borda 的组合应用(以第二届大湾区杯和国赛为案例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实例 65,66
- 下一篇: 蒙特卡罗模拟法 —— matlab