跳到主要內容區塊

學習Matlab並執行層級分析法的經驗分享第八河川分署

  發刊期數:第0598期/ 發布日期:113/06/28

層級分析法(Analytic Hierarchy Process, AHP)常被利用於各種方案決策的案例,搜尋引擎即可找到「分析層級程序法應用於大甲溪橋樑改善綜合評估之研究」、「簡化層級分析法在橡皮自動倒伏上之應用」等使用AHP於水利工程的實例,今筆者為了學習Matlab軟體的操作,又不想收集大量問卷,所以選擇了朋友的「如何增加電繪市場曝光率」個人方案來執行簡單的AHP分析,在此分享學習後的心得。

AHP分析法還可運用在「選擇就讀大學」等主題,而且AHP簡單易行,又運用了分層結構來排除個人主觀上的偏差,對於水利人在方案決策上不失為一項利器。

MATLAB(矩陣實驗室)是一個高階程式語言和平台,專為工程師和科學家設計,用於分析和設計改變我們世界的系統和產品。

AHP是由美國運籌學家托馬斯·賽蒂(Thomas L. Saaty)於1970年代初期所創立的一種決策支援工具。這種方法通過將複雜的決策問題分解為更小的組成部分,並在這些部分之間建立層級結構,從而使決策過程更加系統化和量化。AHP尤其適用於那些難以直接量化的決策問題,它允許決策者通過成對比較的方式來評估各個因素的相對重要性,並最終得出最佳決策方案。這種方法在多個領域,包括商業、政府規劃、衛生保健和教育等,都有廣泛的應用。

AHP的基本思路與人們對複雜決策問題的思維過程相似。它將問題分解為不同層次的結構,從總目標到子目標,再到具體的方案。然後,通過計算判斷矩陣的特徵向量,找到每個層次的元素對上一層次某元素的優先權重,最終加權和以得出最佳方案。在使用Matlab實現AHP時,我們通常會經歷以下步驟:

  1. 建立層級結構模型:首先,我們需要確定決策的目標、涉及的各種因素(準則)以及可供選擇的方案。
  2. 構造判斷矩陣:對於每一層的元素,我們需要通過成對比較來評估它們相對於上一層元素的重要性。
  3. 計算權重和一致性檢驗:利用特定的數學方法(如特徵值法、算術平均法或幾何平均法)來計算權重,並進行一致性檢驗以確保判斷矩陣的合理性。
  4. 合成總排序:將各層級的權重合成,得到最終的方案排序。

在Matlab中實現AHP時,我們可以編寫函數來自動化這些步驟。例如,我們可以創建一個函數來計算權重和進行一致性檢驗。這樣的函數可能會包含以下代碼片段,其中%符號右側文字,係為代碼功能之說明敘述:

01  function [weights, CR] = AHP(matrix)
02     % 計算權重
03     [V, D] = eig(matrix);
04     max_eig = max(max(D));
05     weights = V(:, find(max(D) == max_eig)) ./ sum(V(:, find(max(D) == max_eig)));
06     % 進行一致性檢驗
07     n = size(matrix, 1);
08     CI = (max_eig - n) / (n - 1);
10     % RI值表,實際運用n很少超過10,若指標個數大於10,
11     % 則考慮建立二級指標體系,或使用模糊綜合評價模型
12     RI = [0, 0, 0.58, 0.90, 1.12, 1.26, 1.36, 1.41, 1.46, 1.49];
13     % CR < 0.1,則可認定判斷矩陣的一致性可以接受;否則需要修正
14     CR = CI / RI(n); 
15  end

這段摘錄的代碼首先計算了判斷矩陣的權重,然後進行了一致性檢驗。如果CR值小於0.1,則認為判斷矩陣具有良好的一致性。 使用Matlab進行AHP分析的體驗是非常有趣且富有成就感的。Matlab提供了強大的數學計算功能,使得處理複雜的數學運算變得簡單。此外,Matlab的編程環境也支持高度自定義和自動化,這對於進行多次分析和測試非常有幫助。總而言之,Matlab是實現AHP分析的強大工具,它能夠幫助我們更有效地進行決策分析。

 

參考連結:

附註:

  • 圖1為筆者實驗之「增加電繪市場曝光度分析結果」。
  • 圖2為AHP的評估尺度,摘自「維基百科:層級分析法」。