數模 02多屬性決策 歸一化處理


多屬性決策

什么是多屬性決策

它指的是利用已有的決策信息通過移動的方式對一組(有限個)備選方案進行排序或者擇優。它的主要組成部分有如下2種:

1、獲取決策信息:屬性權重和屬性值(實數、區間數和語言)。

2、通過一定的方式對決策信息進行集結並對方案進行排序和擇優

現在我們暫時先拋開屬性權重和屬性值不講,我們先來講一講第二點,也就是如何對決策的信息進行集結。信息集結的方法有很多,包括

  • 加權算術平均算子(WAA)
  • 加權幾何平均算子(WGA)
  • 有序加權平均算子(OWA)

在本文中,我們只講最重要的,也是應用最廣泛的加權算術平均算子(WAA)

舉個栗子:

也可以類比大學中,每科的成績都是由出勤,作業分,期末考試等等加權得到的。

在多屬性決策中,因為屬性類型的不同,通常需要歸一化處理。

  • 效益型:屬性值越大越好(比如利潤);
  • 成本型:屬性值越小越好(比如成本價);
  • 固定型:屬性值越接近某個固定值α越好(生產標注寬度);
  • 偏離型:屬性值越偏離某個固定值β越好;
  • 區間型:屬性值越接近某個固定區間[q1,q2]越好;
  • 偏離區間型:屬性值越偏離某個固定區間[q1,q2]越好;

 

 下面,我們給出歸一化處理代碼。

 

用函數mapminmax

1 默認的map范圍是[-1, 1],所以如果需要[0, 1],則按這樣的格式提供參數:
MappedData = mapminmax(OriginalData, 0, 1);


2 只按行歸一化,如果是矩陣,則每行各自歸一化,如果需要對整個矩陣歸一化,用如下方法:
FlattenedData = OriginalData(:)'; % 展開矩陣為一列,然后轉置為一行。
MappedFlattened = mapminmax(FlattenedData, 0, 1); % 歸一化。
MappedData = reshape(MappedFlattened, size(OriginalData)); % 還原為原始矩陣形式。此處不需轉置回去,因為reshape恰好是按列重新排序
MATLAB

python歸一化,標准化,正則化見機器學習博客。

下面為一個數模實例。

實例中屬性值的正則化處理:

構建成對比較矩陣,計算每一個屬性的權重。

成對比較矩陣的matlab代碼

disp('請輸入判斷矩陣A(n階)');
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while  k>p
  i=i+1;
  x(:,i)=A*y(:,i-1);
  m(i)=max(x(:,i));
  y(:,i)=x(:,i)/m(i);
  k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);
         %以下是一致性檢驗
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
    disp('此矩陣的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end
層次分析法,成對比較矩陣

利用WAA的求解方法,求出結果:

最后,分別計算4家企業的WAA:

結果顯示,第三家最高,所以選擇第三家。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM