1. 程式人生 > >數學建模中的層次分析法

數學建模中的層次分析法

層次分析法(Analytic Hierarchy Process,簡稱 AHP)是對一些較為複雜、較為模 糊的問題作出決策的簡易方法,它特別適用於那些難於完全定量分析的問題。

層次分析法的基本原理與步驟

人們在進行社會的、經濟的以及科學管理領域問題的系統分析中,面臨的常常是 一個由相互關聯、相互制約的眾多因素構成的複雜而往往缺少定量資料的系統。層次 分析法為這類問題的決策和排序提供了一種新的、簡潔而實用的建模方法。
運用層次分析法建模,大體上可按下面四個步驟進行:
(i)建立遞階層次結構模型;
(ii)構造出各層次中的所有判斷矩陣;
(iii)層次單排序及一致性檢驗;
(iv)層次總排序及一致性檢驗

1.1 遞階層次結構的建立與特點

應用 AHP 分析決策問題時,首先要把問題條理化、層次化,構造出一個有層次 的結構模型。在這個模型下,複雜問題被分解為元素的組成部分。這些元素又按其屬 性及關係形成若干層次。上一層次的元素作為準則對下一層次有關元素起支配作用。 這些層次可以分為三類:
(i)最高層:這一層次中只有一個元素,一般它是分析問題的預定目標或理想結 果,因此也稱為目標層。
(ii)中間層:這一層次中包含了為實現目標所涉及的中間環節,它可以由若干 個層次組成,包括所需考慮的準則、子準則,因此也稱為準則層。
(iii)最底層:這一層次包括了為實現目標可供選擇的各種措施、決策方案等, 因此也稱為措施層或方案層。
遞階層次結構中的層次數與問題的複雜程度及需要分析的詳盡程度有關,一般地 層次數不受限制。每一層次中各元素所支配的元素一般不要超過 9 個。這是因為支配 的元素過多會給兩兩比較判斷帶來困難。
下面結合一個例項來說明遞階層次結構的建立。
這裡寫圖片描述

1.2 構造判斷矩陣

層次結構反映了因素之間的關係,但準則層中的各準則在目標衡量中所佔的比重 並不一定相同,在決策者的心目中,它們各佔有一定的比例。
在確定影響某因素的諸因子在該因素中所佔的比重時,遇到的主要困難是這些比 重常常不易定量化。此外,當影響某因素的因子較多時,直接考慮各因子對該因素有 多大程度的影響時,常常會因考慮不周全、顧此失彼而使決策者提出與他實際認為的 重要性程度不相一致的資料,甚至有可能提出一組隱含矛盾的資料。
這裡寫圖片描述
關於如何確定 aij的值,Saaty 等建議引用數字 1~9 及其倒數作為標度。表 1 列出 了 1~9 標度的含義:
這裡寫圖片描述
從心理學觀點來看,分級太多會超越人們的判斷能力,既增加了作判斷的難度, 又容易因此而提供虛假資料。Saaty 等人還用實驗方法比較了在各種不同標度下人們判 斷結果的正確性,實驗結果也表明,採用 1~9 標度最為合適。

1.3 層次單排序及一致性檢驗

判斷矩陣 A對應於最大特徵值 λmax的特徵向量W,經歸一化後即為同一層次相應因素對於上一層次某因素相對重要性的排序權值,這一過程稱為層次單排序。
上述構造成對比較判斷矩陣的辦法雖能減少其它因素的干擾,較客觀地反映出一 對因子影響力的差別。但綜合全部比較結果時,其中難免包含一定程度的非一致性。 如果比較結果是前後完全一致的,則矩陣 A的元素還應當滿足:
這裡寫圖片描述
這裡寫圖片描述
根據定理 3,我們可以由λmax是否等於n 來檢驗判斷矩陣 A是否為一致矩陣。由於特徵根連續地依賴於aij ,故λmax比n大得越多, A的非一致性程度也就越嚴重,λmax對應的標準化特徵向量也就越不能真實地反映出X={x1,x2,…,xn}在對因素Z的影響中所佔的比重。因此,對決策者提供的判斷矩陣有必要作一次一致性檢驗,以決定是否能接受它。
對判斷矩陣的一致性檢驗的步驟如下:
這裡寫圖片描述

1.4 層次總排序及一致性檢驗

上面我們得到的是一組元素對其上一層中某元素的權重向量。我們最終要得到各 元素,特別是最低層中各方案對於目標的排序權重,從而進行方案選擇。總排序權重 要自上而下地將單準則下的權重進行合成。
這裡寫圖片描述
對層次總排序也需作一致性檢驗,檢驗仍象層次總排序那樣由高層到低層逐層進 行。這是因為雖然各層次均已經過層次單排序的一致性檢驗,各成對比較判斷矩陣都 已具有較為滿意的一致性。但當綜合考察時,各層次的非一致性仍有可能積累起來, 引起最終分析結果較嚴重的非一致性。
這裡寫圖片描述

層次分析法的應用

在應用層次分析法研究問題時,遇到的主要困難有兩個:
(i)如何根據實際情況 抽象出較為貼切的層次結構;
(ii)如何將某些定性的量作比較接近實際定量化處理。
層次分析法對人們的思維過程進行了加工整理,提出了一套系統分析問題的方法,為科學管理和決策提供了較有說服力的依據。但層次分析法也有其侷限性,主要表現在:
(i)它在很大程度上依賴於人們的經驗,主觀因素的影響很大,它至多隻能排除思維 過程中的嚴重非一致性,卻無法排除決策者個人可能存在的嚴重片面性。
(ii)比較、 判斷過程較為粗糙,不能用於精度要求較高的決策問題。AHP 至多隻能算是一種半定 量(或定性與定量結合)的方法。
在應用層次分析法時,建立層次結構模型是十分關鍵的一步。現再分析一個例項, 以便說明如何從實際問題中抽象出相應的層次結構。
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
根據層次總排序權值,該生最滿意的工作為工作1。
計算的 Matlab 程式如下:

clc,clear 
fid=fopen('txt3.txt','r');  
n1=6;n2=3; % n1為準則層矩陣大小,n2為方案層矩陣大小
a=[]; 
for i=1:n1    
    tmp=str2num(fgetl(fid));      
    a=[a;tmp]; %讀準則層判斷矩陣 
end
for i=1:n1     
    str1=char(['b',int2str(i),'=[];']);     
    str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']);     
    eval(str1);     
    for j=1:n2         
        tmp=str2num(fgetl(fid));         
        eval(str2); %讀方案層的判斷矩陣     
    end
end
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指標 
[x,y]=eig(a); % 求判斷矩陣的特徵值和特徵向量,y特徵值,x特徵向量;
lamda=max(diag(y)); % 矩陣最大特徵值
num=find(diag(y)==lamda); 
w0=x(:,num)/sum(x(:,num)); % 歸一化特徵向量
cr0=(lamda-n1)/(n1-1)/ri(n1) % 計算一致性比例CR 
for i=1:n1     
    [x,y]=eig(eval(char(['b',int2str(i)])));     
    lamda=max(diag(y));     
    num=find(diag(y)==lamda);     
    w1(:,i)=x(:,num)/sum(x(:,num));     
    cr1(i)=(lamda-n2)/(n2-1)/ri(n2); 
end
cr1, ts=w1*w0, cr=cr1*w0

這裡寫圖片描述
輸出結果:
這裡寫圖片描述