- 相關(guān)推薦
基于Matlab的層次分析法與運用
摘要:本文通過(guò)使用Matlab軟件進(jìn)行編程,在滿(mǎn)足同一層次中各指標對所有的下級指標均產(chǎn)生影響的假定條件下,實(shí)現了層次分析法的分析運算。本程序允許用戶(hù)自由設定指標層次結構內的層次數以及各層次內的指標數,通過(guò)程序的循環(huán),用戶(hù)只需輸入判斷矩陣的部分數據,程序可依據層次分析法的計算流程進(jìn)行計算并作出判斷。本程序可以方便地處理層次分析法下較大的運算量,解決層次分析法的效率問(wèn)題,提高計算機輔助決策的時(shí)效性。
關(guān)鍵詞:Matlab層次分析法 判斷矩陣 決策
在當前信息化、全球化的大背景下,傳統的手工計算已不能滿(mǎn)足人們高效率、高準確度的決策需求。因此計算機輔助決策當仁不讓地成為了管理決策的新工具、新方法;诖,本文在充分發(fā)揮計算機強大運算功能的基礎上,選用美國MathWorks公司的集成數學(xué)建模環(huán)境Matlab R2009a作為開(kāi)發(fā)平臺,使用M語(yǔ)言進(jìn)行編程,對計算機輔助決策在層次分析法中的運用進(jìn)行討論。試圖通過(guò)程序實(shí)現層次分析法在計算機系統上的運用,為管理決策探索出新的道路職稱(chēng)論文。
1 層次分析法的計算流程
根據層次分析法的相關(guān)理論,層次分析法的基本思想是將復雜的決策問(wèn)題進(jìn)行分解,得到若干個(gè)下層指標,再對下層指標進(jìn)行分解,得到若干個(gè)再下層指標,如此建立層次結構模型,然后根據結構模型構造判斷矩陣,進(jìn)行單排序,最后,求出各指標對應的權重系數,進(jìn)行層次總排序。
1.1 構造層次結構模型 在進(jìn)行層次分析法的分析時(shí),最主要的步驟是建立指標的層次結構模型,根據結構模型構造判斷矩陣,只有判斷矩陣通過(guò)了一致性檢驗后,方可進(jìn)行分析和計算。其中,結構模型可以設計成三個(gè)層次,最高層為目標層,是決策的目的和要解決的問(wèn)題,中間層為決策需考慮的因素,是決策的準則,最低層則是決策時(shí)的備選方案。一般來(lái)講,準則層中各個(gè)指標的下級指標數沒(méi)有限制,但在本文中設計的程序尚且只能在各指標具有相同數量的下級指標的假定下,完成層次分析法的分析,故本文后文選取的案例也滿(mǎn)足這一假定。
1.2 建立判斷矩陣 判斷矩陣是表示本層所有因素針對上一層某一個(gè)因素的相對重要性的比較給判斷矩陣的要素賦值時(shí),常采用九級標度法(即用數字1到9及其倒數表示指標間的相對重要程度),具體標度方法如表1所示。
1.3 檢驗判斷矩陣的一致性 由于多階判斷的復雜性,往往使得判斷矩陣中某些數值具有前后矛盾的可能性,即各判斷矩陣并不能保證完全協(xié)調一致。當判斷矩陣不能保證具有完全一致性時(shí),相應判斷矩陣的特征根也將發(fā)生變化,于是就可以用判斷矩陣特征根的變化來(lái)檢驗判斷的一致性程度。在層次分析法中,令判斷矩陣最大的特征值為λmax,階數為n,則判斷矩陣的一致性檢驗的指標記為:
⑴
CI的值越大,判斷矩陣的一致性越差。當階數大于2時(shí),判斷矩陣的一致性指標CI與同階平均隨機一致性指標RI之比稱(chēng)為隨機一致性比率,其中RI的值由表2確定,CR的計算公式為:
⑵
當CR<0.1時(shí),即可認為判斷矩陣具有滿(mǎn)意的一致性。然而由于在為各指標間相互重要性程度大小的判定過(guò)程中存在人為主觀(guān)因素,因此在判斷矩陣不能通過(guò)一致性檢驗時(shí),需要對各指標間相互重要性程度重新進(jìn)行賦值,直至其通過(guò)矩陣一致性檢驗。其最大特征值對應的特征向量即為該指標相對于上一級指標的重要性排序。
1.4 進(jìn)行層次總排序 在通過(guò)層次單排序得出各指標相對上一級指標的重要性排序向量后,沿遞階層次結構逐級依次由下往上進(jìn)行矩陣計算,則可得到各底層指標對最高層的相對重要性權重,從而可對各底層指標的優(yōu)先次序進(jìn)行排序,找出重點(diǎn)指標并予以特別關(guān)注。
2 Matlab層次分析法程序設計思路
Matlab是矩陣實(shí)驗室(Matrix Laboratory)的簡(jiǎn)稱(chēng),是美國MathWorks公司出品的數學(xué)軟件,用于算法開(kāi)發(fā)、數據可視化、數據分析以及數值計算的高級技術(shù)計算語(yǔ)言和交互式環(huán)境。Matlab可以進(jìn)行矩陣運算、繪制函數和數據圖像、設計算法、創(chuàng )建用戶(hù)界面、連接用其他編程語(yǔ)言編寫(xiě)的程序等。Matlab以矩陣為計算單位,采用M語(yǔ)言作為程序語(yǔ)言,與C語(yǔ)言有諸多相似之處,并可方便地與C/C++、Microsoft Excel等工具和軟件進(jìn)行結合并進(jìn)行代碼共享和數據交換,可以方便地進(jìn)行數值分析、圖像處理等功能,配合功能強大的統計和金融工具箱,Matlab已經(jīng)可以在概率統計、經(jīng)濟管理等方面發(fā)揮強大的作用。
筆者所編程序即是運用Matlab豐富的函數、矩陣運算和程序控制功能,探索其在層次分析法分析中的運用。程序通過(guò)三層循環(huán)結構,按照表1所示的方法和規則,實(shí)現多個(gè)層次上各個(gè)判斷矩陣的輸入和生成,并可以通過(guò)計算它們的特征值,按照上述公式⑴、公式⑵和表2所示的方法進(jìn)行矩陣的一致性檢驗。當所有的判斷矩陣一致性檢驗均通過(guò)后,程序將對各層次從下往上依次計算,最終得出各底層指標相對于準則層的權重系數,從而有助于選擇最優(yōu)方案,程序流程如圖1所示,其中的平行四邊形表示輸入數據,菱形表示判斷,根據判斷結果的不同出現2個(gè)分支。
程序中,用于生成判斷矩陣的部分程序如下:
for a=1:mp
for b=1:mp
A(b,b)=1;
if a fprintf('Line %i, Row %i\n',[a;b]);
A(a,b)=input('Please input the value: ');
A(b,a)=1/A(a,b);
end
end
生成層次總排序權重矩陣的部分程序如下:
for r=p-1:1
v=['vect=vect*vector' int2str(r)];
evalc(v)
end
fprintf('The final judging vector is:')
fprintf('\n%.4f',vect)
[m,maxpl]=max(vect);
fprintf('\n\nThe Scheme %i is the best solution.\n\n',maxpl)
其中,mp為該層內的指標數,p為指標的層數,均在程序開(kāi)始時(shí)由用戶(hù)指定;vect初始被賦值為空矩陣,經(jīng)循環(huán)后生成第一指標層的判斷向量;m為vect向量的最大值,maxpl記錄該最大值所處的位置。
由于本程序結構上的限制,本程序尚且只能在同一層次各個(gè)指標均對所有下一層次指標產(chǎn)生影響時(shí)處理層次分析法的問(wèn)題,故本文舉例亦遵照該假定進(jìn)行。
3 應用舉例
某市一十字路口常常因行人過(guò)街擁擠,存在安全隱患,市政部門(mén)欲對該路口進(jìn)行改造,現提出了3套改造方案:
方案1(S1):建地下通道;
方案2(S2):建人行天橋;
方案3(S3):拆除周?chē)呐f建筑,拓寬街面。
市政部門(mén)認為,該改造工程需考慮如下幾個(gè)方面的指標:
指標1(P1):通車(chē)能力的大小;
指標2(P2):交通安全系數的高低;
指標3(P3):建筑費用的高低;
指標4(P4):群眾出行方便度的大小;
指標5(P5):市容整潔程度的高低。
現在需要就以上問(wèn)題進(jìn)行決策,需決定在三套方案(S1~S3)中選用最優(yōu)方案。其主要步驟及操作如下所示。
第1步:根據題目建立層次結構模型
由于題目要求對3套方案均需考慮5個(gè)指標,故可畫(huà)出如圖2所示的指標體系結構圖。
第2步:形成判斷矩陣
形成判斷矩陣,需要對各指標相互的重要性進(jìn)行標度,矩陣的上三角部分與下三角部分以對角線(xiàn)為分界,對稱(chēng)呈倒數排列,對角線(xiàn)上元素均為1,因為各指標與自身的重要性為“同等重要”,不同的指標A1對A2的重要性與A2對A1的重要性互為倒數。根據經(jīng)驗對圖2中各指標相互的重要性進(jìn)行標度后,可得如下幾個(gè)矩陣:
第3步:將以上各矩陣輸入程序,進(jìn)行計算
在Matlab的命令窗口依次按提示輸入表 3~表 8所示矩陣后,程序輸出結果經(jīng)整理如下表:
接著(zhù),程序對各矩陣計算所得的最大特征值對應的特征向量按下式進(jìn)行標準化:
再給出各指標的特征向量組成的矩陣:
進(jìn)而得出三套方案相對于目標的權重向量為:
程序經(jīng)比較,發(fā)現方案1權重系數最大,進(jìn)而得出最終結論:方案1(地下通道)占優(yōu)。
4 總結及分析
本程序在運行開(kāi)始時(shí),會(huì )要求用戶(hù)輸入指標的層數和第一層的指標數,在每一個(gè)層次的矩陣元素輸入完成后,程序會(huì )要求用戶(hù)輸入下一個(gè)層次中的指標數,因此本程序可進(jìn)行無(wú)限個(gè)層次的迭代運算。當然,程序只能替代層次分析法的運算部分,由于對判斷矩陣賦值具有主觀(guān)性,常常需要通過(guò)其他的方法進(jìn)行確定,如Delphi方法等。在把設定好的判斷矩陣輸入程序進(jìn)行運算時(shí),程序可以保證矩陣運算的精度和效率,在對代碼進(jìn)行優(yōu)化和擴展后,還可以將過(guò)程與結果數據導出到Excel和Eviews,以方便進(jìn)行后續的數據整理和計量分析。
另外,如前所述,本程序存在一個(gè)局限,即需要在滿(mǎn)足同一層次內各指標對所有下一層次指標均產(chǎn)生影響的假定時(shí)才能正確運行。筆者將在今后對程序進(jìn)行進(jìn)一步的完善,提升其功能和易用性,使其能滿(mǎn)足不同類(lèi)型、不同條件下的層次分析法分析,在日常生活的計算機輔助決策領(lǐng)域發(fā)揮更大的作用。
參考文獻:
[1]凌澤華.層次分析法在企業(yè)核心員工界定中的運用[J].經(jīng)營(yíng)管理者, 2010,(2).
[2]劉文琦,熊惠珍.層次分析法在財務(wù)指標分析中的應用[J].審計與理財,2010,(1).
[3]王翼,王歆明.MATLAB基礎及在經(jīng)濟學(xué)與管理科學(xué)中的應用[M].北京:機械工業(yè)出版社,2009,7.
【基于Matlab的層次分析法與運用】相關(guān)文章:
試論基于Matlab的層次分析法與運用12-03
基于matlab的節電模糊控制系統03-07
食品工業(yè)中層次分析法的應用03-29
基于MATLAB的正交振幅調制與解調仿真分析(一)03-07
基于MATLAB的非線(xiàn)性電路模型分析與仿真03-07
基于維度的圖形設計教學(xué)與運用03-21
基于MATLAB的FIR數字濾波器設計03-07