当前位置: 首页 > news >正文

层次分析法(Analytic Hierarchy Process,AHP)简介与简单示例

前言

提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。

内容由AI辅助生成,仅经笔者审核整理,请甄别食用。

文章目录

  • 前言
      • 1. 构建层次结构
      • 2. 构造判断矩阵
      • 3. 计算权重向量
      • 4. 一致性检验
      • 5. 方案层权重计算与总权重合成
    • 简单示例
      • ✅ 示例:选择最佳出行方式
      • 📌 MATLAB AHP 示例代码
      • 📊 运行效果
      • 📎 提示


层次分析法(Analytic Hierarchy Process,AHP) 是由美国运筹学家托马斯·塞蒂(Thomas L. Saaty)在20世纪70年代初期提出的一种多准则决策方法。它将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础上进行定性和定量分析,常用于在多个相互冲突的准则下,对备选方案进行排序和选择。下面结合相关数学公式来详细介绍该算法:

1. 构建层次结构

AHP将决策问题分解为不同的层次结构,一般包括:

  • 目标层:决策的最终目标,例如“选择最佳的投资项目” 。
  • 准则层:实现目标所涉及的中间环节或评价准则,比如在投资项目选择中,可能包括 “成本”“收益”“风险”“市场前景” 等准则。
  • 方案层:可供选择的具体方案,如 “投资项目A”“投资项目B”“投资项目C” 等。

2. 构造判断矩阵

在同一层次内,针对上一层次的某个元素,对该层次的元素进行两两比较,以确定它们相对重要性。使用1 - 9标度法来量化比较结果,如下表所示:

标度值含义
1两个元素相比,具有同样重要性
3两个元素相比,一个元素比另一个元素稍微重要
5两个元素相比,一个元素比另一个元素明显重要
7两个元素相比,一个元素比另一个元素强烈重要
9两个元素相比,一个元素比另一个元素极端重要
2, 4, 6, 8上述相邻判断的中值
倒数元素i与j比较得判断bij,则元素j与i比较的判断bji = 1/bij

假设准则层有nnn个准则,针对目标层的某个目标,两两比较后可得到判断矩阵A=(aij)n×n\mathbf{A}=(a_{ij})_{n\times n}A=(aij)n×n,其中aija_{ij}aij表示准则iii相对于准则jjj的重要性程度,且满足aij>0a_{ij}>0aij>0aii=1a_{ii} = 1aii=1aji=1aija_{ji}=\frac{1}{a_{ij}}aji=aij1

3. 计算权重向量

确定判断矩阵后,需要计算每个元素相对于上一层次某元素的相对权重。常用的方法有和积法方根法,这里以和积法为例:

  • 步骤一:列向量归一化
    将判断矩阵A\mathbf{A}A的每一列元素进行归一化处理,得到矩阵B=(bij)n×n\mathbf{B}=(b_{ij})_{n\times n}B=(bij)n×n,计算公式为:
    bij=aij∑k=1nakjb_{ij} = \frac{a_{ij}}{\sum_{k = 1}^{n}a_{kj}}bij=k=1nakjaij
  • 步骤二:行求和并归一化
    对矩阵B\mathbf{B}B的每行元素求和,得到ri=∑j=1nbijr_i=\sum_{j = 1}^{n}b_{ij}ri=j=1nbij,再将rir_iri归一化,得到权重向量W=(w1,w2,⋯,wn)T\mathbf{W}=(w_1, w_2, \cdots, w_n)^TW=(w1,w2,,wn)T,计算公式为:
    wi=ri∑k=1nrkw_i = \frac{r_i}{\sum_{k = 1}^{n}r_k}wi=k=1nrkri

4. 一致性检验

由于判断矩阵是基于人的主观判断构建的,可能存在逻辑不一致的情况,因此需要进行一致性检验,以确保结果的可靠性。

  • 步骤一:计算最大特征值λmax\lambda_{max}λmax
    根据公式λmax=1n∑i=1n(AW)iwi\lambda_{max}=\frac{1}{n}\sum_{i = 1}^{n}\frac{(\mathbf{A}\mathbf{W})_i}{w_i}λmax=n1i=1nwi(AW)i,其中(AW)i(\mathbf{A}\mathbf{W})_i(AW)i表示向量AW\mathbf{A}\mathbf{W}AW的第iii个元素。
  • 步骤二:计算一致性指标CICICI
    CI=λmax−nn−1CI = \frac{\lambda_{max}-n}{n - 1}CI=n1λmaxn
  • 步骤三:查找随机一致性指标RIRIRI
    随机一致性指标RIRIRI是通过大量随机生成的判断矩阵计算得到的,不同阶数nnn对应的RIRIRI值如下:
阶数nnn123456789
RIRIRI000.580.901.121.241.321.411.45
  • 步骤四:计算一致性比率CRCRCR
    CR=CIRICR = \frac{CI}{RI}CR=RICI
    CR<0.1CR < 0.1CR<0.1时,认为判断矩阵的一致性是可以接受的;如果CR≥0.1CR \geq 0.1CR0.1,则需要对判断矩阵进行调整,直到满足一致性要求。

5. 方案层权重计算与总权重合成

在准则层计算出各准则权重后,对方案层也重复上述构造判断矩阵、计算权重和一致性检验的步骤,得到各方案在每个准则下的权重。然后,将方案层在各准则下的权重与准则层的权重进行加权求和,得到各方案的总权重,计算公式为:
w总j=∑i=1nwiwjiw_{总j}=\sum_{i = 1}^{n}w_{i}w_{ji}wj=i=1nwiwji
其中,w总jw_{总j}wj表示第jjj个方案的总权重,wiw_{i}wi表示第iii个准则的权重,wjiw_{ji}wji表示第jjj个方案在第iii个准则下的权重。总权重越大,说明该方案越优。

通过以上步骤,AHP算法将复杂的多准则决策问题转化为一系列简单的两两比较,并通过数学计算得出各方案的优先级,为决策者提供了一种系统、科学的决策方法。

简单示例

下面是一个使用 AHP(层次分析法) 优化决策的 经典示例 MATLAB 实现。我们以 选择最佳出行方式(如:开车、公交、自行车) 为例,考虑多个准则(时间、费用、舒适度、安全性)。


✅ 示例:选择最佳出行方式

  1. 目标层
  • 选择最佳出行方式
  1. 准则层(Criteria):
  • 时间(Time)
  • 费用(Cost)
  • 舒适度(Comfort)
  • 安全性(Safety)
  1. 方案层(Alternatives)
  • 开车(Car)
  • 公交(Bus)
  • 自行车(Bike)

📌 MATLAB AHP 示例代码

function AHP_example()%% 定义准则层对目标的两两比较矩阵(4x4)criteria_names = {'Time', 'Cost', 'Comfort', 'Safety'};A_criteria = [...1     3     1/2   2;   % Time1/3   1     1/5   1/2; % Cost2     5     1     3;   % Comfort1/2   2     1/3   1];  % Safety% 计算准则层权重[W_criteria, CI_criteria] = ahp_weight(A_criteria);fprintf('Criteria weights:\n'); disp(W_criteria);fprintf('Criteria Consistency Index (CI): %.4f\n\n', CI_criteria);%% 方案层:每个准则对应一个3x3的判断矩阵alt_names = {'Car', 'Bus', 'Bike'};n_alts = length(alt_names);% 时间准则下的比较A_time = [...1   2   4;1/2 1   3;1/4 1/3 1];% 费用准则下的比较A_cost = [...1    1/3  1/6;3    1    1/2;6    2    1];% 舒适度准则下的比较A_comfort = [...1    2    3;1/2  1    2;1/3  1/2  1];% 安全性准则下的比较A_safety = [...1   1/3 1/2;3   1   2;2   1/2 1];% 所有准则下的方案层权重W_time = ahp_weight(A_time);W_cost = ahp_weight(A_cost);W_comfort = ahp_weight(A_comfort);W_safety = ahp_weight(A_safety);% 合成总权重W_alts = [W_time W_cost W_comfort W_safety] * W_criteria;%% 可视化figure;bar(W_alts);set(gca, 'XTickLabel', alt_names, 'FontSize', 12);ylabel('Final Priority');title('AHP Decision Results - Best Transportation Mode');grid on;
end%% AHP权重计算函数
function [w, CI] = ahp_weight(A)n = size(A,1);[V,D] = eig(A);[lambda_max, idx] = max(real(diag(D)));w = real(V(:,idx));w = w / sum(w);CI = (lambda_max - n)/(n - 1);
end

📊 运行效果

运行后将输出:

  • 各准则权重
  • 一致性指标 CI(< 0.1 为合理)
  • 柱状图展示哪种交通方式优于其他

运行结果
在这里插入图片描述
在这里插入图片描述


📎 提示

  • 可自行修改判断矩阵来进行不同场景建模。
  • 若 CI > 0.1,说明判断矩阵一致性差,需重新评估。

http://www.lryc.cn/news/604080.html

相关文章:

  • Qt 多线程数据库操作优化
  • MOGA(多目标遗传算法)求解 ZDT1 双目标优化问题
  • 选用Java开发商城的优势
  • Python的魔术方法
  • 答题抽奖活动小程序技术复盘
  • ETF期权的交割日对股市有什么影响?
  • 津发科技带你了解皮肤电信号中的SCL与SCR
  • 智慧园区系统引领未来:一场科技与生活的完美融合
  • LaTeX 下载安装保姆级教程
  • MC0244多重堡垒
  • SAP-ABAP:Excel 文件内容解析到 ABAP 内表函数ALSM_EXCEL_TO_INTERNAL_TABLE运用详解
  • Elasticsearch重点
  • 【高等数学】第七章 微分方程——第三节 齐次方程
  • 监控场景视频质量异常修复:陌讯动态增强算法实战解析
  • CVPR 2025 | 华科精测:无需人工标注也能精准识别缺陷类别,AnomalyNCD 实现多类别缺陷自主分类
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-45,(知识点:负反馈的作用,基础理解,干扰和噪声的抑制)
  • 某雷限制解除:轻松获取原始下载链接,支持多任务转换
  • 笔试——Day22
  • 枚举中间位置高级篇
  • 【C++算法】79.BFS解决FloodFill算法_图像渲染
  • K8s集群两者不同的对外暴露服务的方式
  • 2025年JCR一区新算法-回旋镖气动椭圆优化算法Boomerang Aerodynamic Ellipse(BAE)-附Matlab免费代码
  • 小程序发票合并功能升级!发票夹直接选,操作更便捷
  • Python爬虫03_Requests破解百度翻译
  • 三步给小智ESP32S3智能语音硬件接入小程序打通MCP服务
  • ClickHouse MergeTree引擎:从核心架构到三级索引实战
  • 数字ic后端设计从入门到精通13(含fusion compiler, tcl教学)全定制版图设计
  • 通过双网口实现两台设备共享网络与文件传输
  • python线性回归:从原理到实战应用
  • 负载均衡、算法/策略