2025美赛数学建模十大常用算法之层次分析法AHP详解

news2024/12/25 1:52:27

层次分析法(Analytic Hierarchy Process, AHP)详解

一、层次分析法简介

层次分析法(AHP)是一种系统化的多准则决策方法,由美国运筹学家萨蒂(Thomas L. Saaty)于20世纪70年代提出。AHP通过构建层次结构模型,将复杂的决策问题分解为目标、准则、方案等不同层次,通过两两比较矩阵来确定各因素的相对重要性,最终综合权重得出最优方案。

AHP 的基本特点

  1. 分层结构:将问题分解为多个层次,通常包括目标层、准则层和方案层。 2. 两两比较:通过判断矩阵对准则或方案进行两两比较,以量化主观评价。 3. 权重计算:通过特征向量法或几何平均法计算权重,反映各因素的重要性。 4. 一致性检验:确保判断矩阵的合理性,减少主观判断引入的偏差。

AHP 的基本步骤

  1. 构建层次结构模型:根据决策问题,将目标分解为不同层次。 2. 构造判断矩阵:对同一层次的各元素进行两两比较,构造判断矩阵。 3. 计算权重向量:通过求解判断矩阵的特征值和特征向量,计算各元素的权重。 4. 一致性检验:计算一致性比率(CR),确保判断矩阵的一致性。 5. 综合权重计算:通过加权平均,计算出各备选方案的总权重,排序并选出最优方案。

二、AHP 原理详解

层次结构通常分为以下三层: - 目标层:最高层,描述决策的最终目标。 - 准则层:中间层,描述影响决策的准则或属性。 - 方案层:最低层,列出所有备选方案。

判断矩阵的元素表示两两比较的相对重要性。常用的尺度为Saaty 1–9标度法: - 1 表示两个元素同等重要。 - 3 表示一个元素稍微重要。 - 5 表示一个元素明显重要。 - 7 表示一个元素非常重要。 - 9 表示一个元素极端重要。 - 2, 4, 6, 8 表示中间值。

构造判断矩阵

C1

C2

C3

C1

1

3

5

C2

1/3

1

2

C3

1/5

1/2

1

权重计算主要有两种方法: 1. 特征值法:计算判断矩阵的最大特征值 λ_max。对应的特征向量归一化后即为权重向量。 2. 几何平均法:对每一行元素求几何平均值。将几何平均值归一化得到权重。 一致性检验通过一致性比率(CR)进行: CR = CI / RI,其中 CI = (λ_max - n) / (n - 1),n 为矩阵的阶数。

三、AHP 的运用

层次分析法广泛应用于选址决策、风险评估、资源分配和多属性评价等领域。在美赛中,AHP 常用于解决选址、方案评估和策略优化问题。

实例:2019年美赛 C 题 – 生态系统管理

题目背景:某生态系统面临多种威胁,需要对管理方案进行评估,选出最佳方案。 AHP 应用步骤: 1. 构建层次结构模型。 2. 构造判断矩阵并计算权重。 3. 对每个方案构造判断矩阵,计算综合权重,选出权重最大的方案。

四、AHP 实现代码

以下是一个简单的 Python 实现代码示例,用于计算判断矩阵的权重和一致性比率:

import numpy as np def ahp(matrix): # 计算每列的归一化矩阵 col_sum = np.sum(matrix, axis=0) norm_matrix = matrix / col_sum # 计算权重向量 weights = np.mean(norm_matrix, axis=1) # 一致性检验 n = matrix.shape[0] lambda_max = np.mean(np.sum(matrix * weights[:, None], axis=0) / weights) ci = (lambda_max - n) / (n - 1) ri_values = {1: 0.00, 2: 0.00, 3: 0.58, 4: 0.90, 5: 1.12, 6: 1.24} ri = ri_values.get(n, 1.24) # 默认取较大值 cr = ci / ri return weights, cr # 示例判断矩阵 matrix = np.array([ [1, 3, 5], [1/3, 1, 2], [1/5, 1/2, 1] ]) weights, cr = ahp(matrix) print("权重:", weights) print("一致性比率:", cr)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZED-OpenCV项目运行记录

项目地址:GitCode - 全球开发者的开源社区,开源代码托管平台 使用 ZED 立体相机与 OpenCV 进行图像处理和深度感知 • 使用 ZED 相机和 OpenCV 库捕获图像、深度图和点云。 • 提供保存并排图像、深度图和点云的功能。 • 允许在不同格式之间切换保存的深度图和点云…

Nacos 3.0 考虑升级到 Spring Boot 3 + JDK 17 了!

Nacos 由阿里开源,是 Spring Cloud Alibaba 中的一个重要组件,主要用于发现、配置和管理微服务。 由于 Spring Boot 2 的维护已于近期停止,Nacos 团队考虑升级到 Spring Boot 3 JDK 17,目前正在征求意见和建议。 这其实是一件好…

(css)鼠标移入或点击改变背景图片

(css)鼠标移入或点击改变背景图片 html <div class"mapTip"><divv-for"(item, index) of legendList":key"index"class"mapTipOne":class"{ active: change index }"click"legendHandle(item, index)"…

Grad-CAM-模型可视化分析方法

模型的可视化分析对于理解模型的行为有很好的辅助作用&#xff0c;能够让人们更容易理解神经网络的决策过程。 Grad-CAM&#xff08;Gradient-weighted Class Activation Mapping&#xff09;是一种用于解释卷积神经网络&#xff08;CNN&#xff09;决策过程的方法&#xff0c;…

常见八股文03

35.autowired、qualifier和Resource区别 Autowired&#xff1a;基于类型的注入 Qualifier&#xff1a;基于名称进行注入 Resource:按名称装配注入&#xff0c;如果找不到与名称匹配的bean&#xff0c;则按类型装配注入&#xff0c;可以用于字段和方法上 36.代理模式 动态代…

Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集NI-FGSM介绍背景算法流程 NI-FGSM代码实现NI-FGSM算法实现攻击效果 代码汇总nifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR10进行…

redis开发与运维-redis02-redis数据类型与命令总结

文章目录 【README】【1】redis通用命令与数据结构【1.1】通用命令【1.2】数据结构与内部编码【1.3】redis单线程架构【1.3.1】redis单线程优缺点 【2】字符串&#xff08;值的类型为字符串&#xff09;【2.1】常用命令【2.1.1】设置值【2.1.2】获取值【2.1.3】批量设置值【2.1…

机器学习《西瓜书》学习笔记《待续》

如果说&#xff0c;计算机科学是研究关于“算法”的学问&#xff0c;那么机器学习就是研究关于“学习算法”的学问。 目录 绪论引言基本术语 扩展向量的张成-span使用Markdown语法编写数学公式希腊字母的LaTex语法插入一些数学的结构插入定界符插入一些可变大小的符号插入一些函…

电脑开机提示error loading operating system怎么修复?

前一天电脑还能正常运行&#xff0c;但今天启动时却显示“Error loading operating system”&#xff08;加载操作系统错误&#xff09;。我已经仔细检查了硬盘、接线、内存、CPU和电源&#xff0c;确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用&#xff0c;说明不是硬…

git企业开发的相关理论(一)

目录 一.初识git 二.git的安装 三.初始化/创建本地仓库 四.配置用户设置/配置本地仓库 五.认识工作区、暂存区、版本库 六.添加文件__场景一 七.查看 .git 文件/添加到本地仓库后.git中发生的变化 1.执行git add后的变化 index文件&#xff08;暂存区&#xff09; lo…

Linux网络——网络基础

Linux网络——网络基础 文章目录 Linux网络——网络基础一、计算机网络的发展背景1、网络的定义&#xff08;1&#xff09; 独立模式&#xff08;2&#xff09;网络互联 2、局域网 LAN3、广域网 WAN4、比较局域网和广域网5、扩展 —— 域域网和互联网 二、协议1、协议的概念2、…

react中实现导出excel文件

react中实现导出excel文件 一、安装依赖二、实现导出功能三、自定义列标题四、设置列宽度五、样式优化1、安装扩展库2、设置样式3、扩展样式功能 在 React 项目中实现点击按钮后导出数据为 Excel 文件&#xff0c;可以使用 xlsx 和 file-saver 这两个库。 一、安装依赖 在项目…

7-Zip 加密功能使用教程:如何设置密码保护压缩文件

压缩包如何加密&#xff1f;7-Zip 是一款开源的文件归档工具&#xff0c;支持多种压缩格式&#xff0c;并提供了对压缩文件进行加密的功能。使用 7-Zip 可以轻松创建和解压 .7z、.zip 等格式的压缩文件&#xff0c;并且可以通过设置密码来保护压缩包中的数据不被未授权访问。 准…

[计算机网络]ARP协议的故事:小明找小红的奇妙旅程

1.ARP小故事 在一个繁忙的网络世界中&#xff0c;每个设备都有自己的身份标识——MAC地址&#xff0c;就像每个人的身份证号码一样。在这个故事里&#xff0c;我们的主角小明&#xff08;主机&#xff09;需要找到小红&#xff08;目标主机&#xff09;的MAC地址&#xff0c;才…

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github

经过近3个月的迭代开发&#xff0c;新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了&#xff0c;最新的EasyGBD支持了国标GB28181-2022版&#xff0c;还支持了语音对讲、位置上报、本地录像等功能&#xff0c;比原有GB28181-2016版的EasyGBD更加高效、…

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件&#xff0c;包括移动订单进度跟踪和向客户发送营销通信&#xff08;交易和促销&#xff09;。 统一事件平台&#xff08;unified eve…

【CSS in Depth 2 精译_089】15.2:CSS 过渡特效中的定时函数

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 15 章 过渡】 ✔️ 15.1 状态间的由此及彼15.2 定时函数 ✔️ 15.2.1 定制贝塞尔曲线 ✔️15.2.2 阶跃 ✔️ 15.3 非动画属性 文章目录 15.2 定时函数 Timing function…

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好&#xff0c;今天给大家分享一个开源的自托管虚拟浏览器项目Neko&#xff0c;旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;提供…

AW36518芯片手册解读(3)

接前一篇文章&#xff1a;AW36518芯片手册解读&#xff08;2&#xff09; 二、详述 3. 功能描述 &#xff08;1&#xff09;上电复位 当电源电压VIN降至预定义电压VPOR&#xff08;典型值为2.0V&#xff09;以下时&#xff0c;该设备会产生复位信号以执行上电复位操作&#x…

浅谈目前我开发的前端项目用到的设计模式

浅谈目前我开发的前端项目用到的设计模式 前言 设计模式很多&#xff0c;看到一个需求&#xff0c;项目&#xff0c;我们去开发的时候&#xff0c;肯定是做一个整体的设计进行开发&#xff0c;而在这次我项目中&#xff0c;我也做了一个整体的设计&#xff0c;为什么要设计&a…