组合赋权法之matlab
目錄
?
1.簡介
2.算法原理
2.1 指標(biāo)正向化
2.2 數(shù)據(jù)標(biāo)準(zhǔn)化
2.3 計算主觀權(quán)重
2.4 計算客觀權(quán)重
2.5 計算組合權(quán)重
2.6 計算的得分
3.實例分析
3.1 讀取數(shù)據(jù)
3.2 指標(biāo)正向化
3.3 數(shù)據(jù)范圍標(biāo)準(zhǔn)化
3.4 計算主觀權(quán)重
3.5 計算客觀權(quán)重
3.6 計算組合權(quán)重
3.7 計算得分
完整代碼
1.簡介
????????主觀賦權(quán)法(AHP)在根據(jù)決策者意圖確定權(quán)重方面比客觀賦權(quán)法(熵權(quán)法)具有更大的優(yōu)勢,但客觀性相對較差,主觀性相對較強(qiáng);
????????而采用客觀賦權(quán)法有著客觀優(yōu)勢,但不能反映出參與決策者對不同指標(biāo)重視程度,并且會有一定的權(quán)重和與實際指標(biāo)相反的程度。
????????針對主客觀賦權(quán)方法的優(yōu)缺點,我們還力求將主觀隨機(jī)性控制在一定范圍內(nèi),實現(xiàn)主客觀賦權(quán)中的中正。客觀方面。指標(biāo)賦權(quán)公正,實現(xiàn)了主客觀內(nèi)在統(tǒng)一,評價結(jié)果真實、科學(xué)、可信。
????????因此,在對指標(biāo)進(jìn)行權(quán)重分配時,應(yīng)考慮指標(biāo)數(shù)據(jù)之間的內(nèi)在統(tǒng)計規(guī)律和權(quán)威值。給出了合理的決策指標(biāo)賦權(quán)方法,即采用主觀賦權(quán)法(AHP)和客觀賦權(quán)法(熵權(quán)法)相結(jié)合的組合賦權(quán)方法,以彌補(bǔ)單一賦權(quán)帶來的不足。將兩種賦權(quán)方法相結(jié)合的加權(quán)方法稱為組合賦權(quán)法。
注意:本文所介紹的組合權(quán)重法請大家結(jié)合實際情況慎重使用,因為這個方法不太好
2.算法原理
2.1 指標(biāo)正向化
這個步驟視情況自己決定把。。。。
????????不同的指標(biāo)代表含義不一樣,有的指標(biāo)越大越好,稱為越大越優(yōu)型指標(biāo)。有的指標(biāo)越小越好,稱為越小越優(yōu)型指標(biāo),而有些指標(biāo)在某個點是最好的,稱為某點最優(yōu)型指標(biāo)。為方便評價,應(yīng)把所有指標(biāo)轉(zhuǎn)化成越大越優(yōu)型指標(biāo)。
設(shè)有m個待評對象,n個評價指標(biāo),可以構(gòu)成數(shù)據(jù)矩陣?
設(shè)數(shù)據(jù)矩陣內(nèi)元素,經(jīng)過指標(biāo)正向化處理過后的元素為? (Xij)'
-
越小越優(yōu)型指標(biāo):C,D屬于此類指標(biāo)
其他處理方法也可,只要指標(biāo)性質(zhì)不變即可
-
某點最優(yōu)型指標(biāo):E屬于此類指標(biāo)
????????設(shè)最優(yōu)點為a, 當(dāng)a=90時E最優(yōu)。
? ? ? ? ??其他處理方法也可,只要指標(biāo)性質(zhì)不變即可
-
越大越優(yōu)型指標(biāo):其余所有指標(biāo)屬于此類指標(biāo)
? ?此類指標(biāo)可以不用處理,想要處理也可,只要指標(biāo)性質(zhì)不變
2.2 數(shù)據(jù)標(biāo)準(zhǔn)化
?因為每個指標(biāo)的數(shù)量級不一樣,需要把它們化到同一個范圍內(nèi)再比較。標(biāo)準(zhǔn)化的方法比較多,這里僅用最大最小值標(biāo)準(zhǔn)化方法。
????????設(shè)標(biāo)準(zhǔn)化后的數(shù)據(jù)矩陣元素為rij,由上可得指標(biāo)正向化后數(shù)據(jù)矩陣元素為?(Xij)'
2.3 計算主觀權(quán)重
- 得到最大特征值對應(yīng)特征向量
- 得到權(quán)重向量
2.4 計算客觀權(quán)重
- 計算信息熵
- 得到權(quán)重
2.5 計算組合權(quán)重
主客觀組合權(quán)重是:指標(biāo)的綜合權(quán)數(shù)?Wj :
αj?——層次分析法計算所得的權(quán)重
βj ?——熵值法計算所得權(quán)重
層次分析法
熵值法
2.6 計算的得分
3.實例分析
3.1 讀取數(shù)據(jù)
data=xlsread('D:\桌面\zuhefuquan.xlsx')返回:
3.2 指標(biāo)正向化
本實例中P1、P3屬于此類指標(biāo)
因此負(fù)向指標(biāo)正向化:
data1=data; %%越小越優(yōu)型處理 index=[1,3];%越小越優(yōu)指標(biāo)位置 for i=1:length(index)data1(:,index(i))=max(data(:,index(i)))-data(:,index(i)); end data1返回:
在對剩余正向指標(biāo)數(shù)據(jù)可以不做處理
3.3 數(shù)據(jù)范圍標(biāo)準(zhǔn)化
為什么不做0,1的標(biāo)準(zhǔn)化呢,因為一標(biāo)準(zhǔn)化有不少數(shù)據(jù)變成了0,對結(jié)果起到副作用
data1=mapminmax(data1',0.02,1) %標(biāo)準(zhǔn)化到0.002-1區(qū)間返回:
3.4 計算主觀權(quán)重
%求特征值特征向量,找到最大特征值對應(yīng)的特征向量 [V,D]=eig(data1); tzz=max(max(D)); %找到最大的特征值 c1=find(D(1,:)==tzz);%找到最大的特征值位置 tzx=V(:,c1) %最大特征值對應(yīng)的特征向量 %賦權(quán)重 [n,m]=size(data); %查看數(shù)據(jù)行數(shù)和列數(shù) quan=zeros(n,1); for i=1:n quan(i,1)=tzx(i,1)/sum(tzx); end a=quan'返回:
3.5 計算客觀權(quán)重
data3 = data1; %得到信息熵 [m,n]=size(data3); p=zeros(m,n); for j=1:np(:,j)=data3(:,j)/sum(data3(:,j)); end for j=1:nE(j)=-1/log(m)*sum(p(:,j).*log(p(:,j))); end %計算權(quán)重 b=(1-E)/sum(1-E)返回:
3.6 計算組合權(quán)重
w=b; sum = 0; for i=1:n sum=sum+sqrt(a(i)*b(i)); end for i=1:n w(i)=sqrt(a(i)*b(i))/sum; end w返回:
3.7 計算得分
%計算得分 s=data1*w'; Score=100*s/max(s); for i=1:length(Score)fprintf('方案%d百分制評分為:%4.2f\n',i,Score(i)); end返回:
完整代碼
%組合賦權(quán)法 clc;clear; data=xlsread('D:\桌面\zuhefuquan.xlsx'); data1=data; %%越小越優(yōu)型處理 index=[1,3];%第一三個指標(biāo)為負(fù)向指標(biāo), for i=1:length(index)data1(:,index(i))=max(data(:,index(i)))-data(:,index(i)); end data1; data1=mapminmax(data1',0.02,1); %標(biāo)準(zhǔn)化到0.002-1區(qū)間data2 = data1; %求特征值特征向量,找到最大特征值對應(yīng)的特征向量 [V,D]=eig(data2); tzz=max(max(D)); %找到最大的特征值 c1=find(D(1,:)==tzz);%找到最大的特征值位置 tzx=V(:,c1); %最大特征值對應(yīng)的特征向量 %賦權(quán)重 [n,m]=size(data); %查看數(shù)據(jù)行數(shù)和列數(shù) quan=zeros(n,1); for i=1:n quan(i,1)=tzx(i,1)/sum(tzx); end a=quan';data3 = data1; %得到信息熵 [m,n]=size(data3); p=zeros(m,n); for j=1:np(:,j)=data3(:,j)/sum(data3(:,j)); end for j=1:nE(j)=-1/log(m)*sum(p(:,j).*log(p(:,j))); end %計算權(quán)重 b=(1-E)/sum(1-E); w=b; sum = 0; for i=1:n sum=sum+sqrt(a(i)*b(i)); end for i=1:n w(i)=sqrt(a(i)*b(i))/sum; end w; %計算得分 s=data1*w'; Score=100*s/max(s); for i=1:length(Score)fprintf('方案%d百分制評分為:%4.2f\n',i,Score(i)); end總結(jié)
以上是生活随笔為你收集整理的组合赋权法之matlab的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 组合赋权法之python
- 下一篇: matlab mat文件 太大,MATL