MATLAB 层次分析法

news2024/9/30 9:30:34

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录

    • 层次分析法
      • 建立层次结构模型
      • 构造判断矩阵
      • 层次单排序及其一致性检验
      • 层次总排序及其一致性检验
    • 层次分析法解志愿填报问题
      • 问题描述
      • MATLAB 求解


层次分析法

层次分析法,简称 AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂于 20 世纪 70 年代初,在为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法

层次分析法一般包括以下几个步骤:

  1. 建立层次结构模型
  2. 构造判断矩阵
  3. 层次单排序及其一致性检验
  4. 层次总排序及其一致性检验

建立层次结构模型

将将决策的目标、考虑的因素(决策准则)和决策方案,按它们之间的相互关系分为最高层中间层最低层,画出层次结构图。

  • 最高层:目标层。决策的目的、要解决的问题。
  • 中间层:准则层。考虑的因素、决策的准则。
  • 最低层:方案层。决策时可供选择的方案。

层次结构模型

构造判断矩阵

在确定各层次各因素之间的权重时,如果只是定性的结果,则常常不容易被别人接受,因而 Saaty 等人提出一致矩阵法,即不把所有因素放在一起比较,而是两两相互比较,对此时采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,以提高准确度。如对某一准则,对其下的各方案进行两两对比,并按其重要性程度评定等级。 a i j a_{ij} aij 为要素 i i i 与要素 j j j 重要性比较结果,按两两比较结果构成的矩阵称作判断矩阵,判断矩阵具有如下性质:

a i j > 0 , a i j = 1 a j i , a i i = 1 a_{ij} > 0, a_{ij} = \frac{1}{a_{ji}}, a_{ii} = 1 aij>0,aij=aji1,aii=1

下表列出了 Saaty 给出的 9 个重要性等级及其赋值:

因素 i i i 与因素 j j j 的重要性比较结果量化值
i i i j j j 同等重要1
i i i j j j 稍微重要3
i i i j j j 较强重要5
i i i j j j 强烈重要7
i i i j j j 极端重要9
两相邻判断的中间值2, 4, 6, 8

层次单排序及其一致性检验

对应于判断矩阵最大特征根 λ m a x \lambda_{max} λmax 的特征向量,经归一化(使向量中各元素之和等于 1)后记为 W W W W W W 的元素为同一层次因素对于上一层次因素某因素相对重要性的排序权值,这一过程称为层次单排序。得到的 W W W 称为单层权向量。

计算得到的单层权向量 W W W 是否合理,取决于判断矩阵是否一致,一个完全一致的判断矩阵 A A A 应满足以下条件:

a i j a j k = a i k , ∀ i , j , k ∈ { 1 , 2 , ⋯   , n } a_{ij}a_{jk} = a_{ik}, \forall i, j, k \in \{1, 2, \cdots, n\} aijajk=aik,i,j,k{1,2,,n}

但事实上,由于人们的主观性,构造出来的判断矩阵很难做到完全一致,因此人们引入了一致性指标 C I CI CI 来衡量判断矩阵的一致性, C I CI CI 的计算公式为:

C I = λ m a x − n n − 1 CI = \frac{\lambda_{max} - n}{n - 1} CI=n1λmaxn

  • C I = 0 CI = 0 CI=0 时,判断矩阵 A A A 完全一致。
  • C I > 0 CI > 0 CI>0 时,判断矩阵 A A A 不一致。
  • C I CI CI 值越大,判断矩阵 A A A 不一致程度越大。

为了衡量 C I CI CI 的大小,引入了随机一致性指标 R I RI RI

R I = 1 n ∑ i = 1 n C I i RI = \frac{1}{n}\sum_{i=1}^n CI_{i} RI=n1i=1nCIi

一般情况下,矩阵阶数越大,则出现一致性随机偏离的可能性也越大,即 R I RI RI 的值会随着 n n n 的增大而增大, R I RI RI 的值与 n n n 的关系如下表所示:

n n n12345678910
R I RI RI000.580.901.121.241.321.411.451.49

考虑到一致性的偏离可能是由于随机原因造成的,因此在检验判断矩阵是否具有满意的一致性时,还需将 C I CI CI 和随机一致性指标 R I RI RI 进行比较,得出一致性比例 C R CR CR ,公式如下:

C R = C I R I CR = \frac{CI}{RI} CR=RICI

通常情况下,我们认为:

  • C R < 0.1 CR < 0.1 CR<0.1 时,判断矩阵 A A A 具有满意的一致性。
  • C R > 0.1 CR > 0.1 CR>0.1 时,判断矩阵 A A A 不具有满意的一致性。

层次总排序及其一致性检验

计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。这一过程是从最高层次到最低层次依次进行的。

对于第 k k k 层次,设其一致性指标为 C I ( k ) CI_{(k)} CI(k),随机一致性指标为 R I ( k ) RI_{(k)} RI(k),则有:

C I ( k ) = C I ( k ) T W ( k − 1 ) R I ( k ) = R I ( k ) T W ( k − 1 ) CI_{(k)} = CI_{(k)}^{T}W_{(k-1)} \\ RI_{(k)} = RI_{(k)}^{T}W_{(k-1)} CI(k)=CI(k)TW(k1)RI(k)=RI(k)TW(k1)

k k k 层次的一致性比例为:

C R ( k ) = C I ( k ) R I ( k ) CR_{(k)} = \frac{CI_{(k)}}{RI_{(k)}} CR(k)=RI(k)CI(k)

评判标准与层次单排序相同。


层次分析法解志愿填报问题

问题描述

小李需要填报考研志愿,已经确定了 3 个方案,需要你从专业认可度、院校认可度、院校所在地、考研难易 4 个方面进行评估,最终确定最佳方案。

填报考研志愿 - 层次结构模型

小李给出的准则层判断矩阵如下:

A = [ 1 2 4 2 1 / 2 1 3 2 1 / 4 1 / 3 1 1 / 3 1 / 2 1 / 2 3 1 ] A = \begin{bmatrix} 1 & 2 & 4 & 2 \\ 1/2 & 1 & 3 & 2 \\ 1/4 & 1/3 & 1 & 1/3 \\ 1/2 & 1/2 & 3 & 1 \end{bmatrix} A= 11/21/41/2211/31/24313221/31

小李对预选的 3 个方案进行了两两比较,得到的判断矩阵如下:

B 1 = [ 1 4 6 1 / 4 1 2 1 / 6 1 / 2 1 ] , B 2 = [ 1 2 3 1 / 2 1 2 1 / 3 1 / 2 1 ] , B 3 = [ 1 8 1 1 / 8 1 1 / 9 1 9 1 ] , B 4 = [ 1 2 4 1 / 2 1 3 1 / 4 1 / 3 1 ] B_{1} = \begin{bmatrix} 1 & 4 & 6 \\ 1/4 & 1 & 2 \\ 1/6 & 1/2 & 1 \end{bmatrix}, B_{2} = \begin{bmatrix} 1 & 2 & 3 \\ 1/2 & 1 & 2 \\ 1/3 & 1/2 & 1 \end{bmatrix}, B_{3} = \begin{bmatrix} 1 & 8 & 1 \\ 1/8 & 1 & 1/9 \\ 1 & 9 & 1 \end{bmatrix}, B_{4} = \begin{bmatrix} 1 & 2 & 4 \\ 1/2 & 1 & 3 \\ 1/4 & 1/3 & 1 \end{bmatrix} B1= 11/41/6411/2621 ,B2= 11/21/3211/2321 ,B3= 11/8181911/91 ,B4= 11/21/4211/3431

MATLAB 求解

% 准则层判断矩阵
A = [1 2 4 2; 1/2 1 3 2; 1/4 1/3 1 1/3; 1/2 1/2 3 1];

% 方案层判断矩阵
B1 = [1 4 6; 1/4 1 2; 1/6 1/2 1];
B2 = [1 2 3; 1/2 1 2; 1/3 1/2 1];
B3 = [1 8 1; 1/8 1 1/9; 1 9 1];
B4 = [1 2 4; 1/2 1 3; 1/4 1/3 1];

% 计算准则层权向量
[V2, D2] = eig(A);
W2 = V2(:, 1) / sum(V2(:, 1));
lambda2 = D2(1, 1);

% 准则层一致性检验
CI2 = (lambda2 - size(A, 1)) / (size(A, 1) - 1);
RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49];
CR2 = CI2 ./ RI(size(A, 1));
if CR2 < 0.1
    disp('准则层一致性检验通过');
    CR2
else
    error('准则层一致性检验不通过');
end

% 计算方案层权向量
[V3_1, D3_1] = eig(B1);
[V3_2, D3_2] = eig(B2);
[V3_3, D3_3] = eig(B3);
[V3_4, D3_4] = eig(B4);
W3_1 = V3_1(:, 1) / sum(V3_1(:, 1));
W3_2 = V3_2(:, 1) / sum(V3_2(:, 1));
W3_3 = V3_3(:, 1) / sum(V3_3(:, 1)); 
W3_4 = V3_4(:, 1) / sum(V3_4(:, 1));
lambda3_1 = D3_1(1, 1);
lambda3_2 = D3_2(1, 1);
lambda3_3 = D3_3(1, 1);
lambda3_4 = D3_4(1, 1);

% 方案层一致性检验
lambda3 = [lambda3_1 lambda3_2 lambda3_3 lambda3_4];
CI3 = (lambda3 - size(B1, 1)) ./ (size(B1, 1) - 1);
CR3 = CI3 ./ RI(size(B1, 1));
if CR3 < 0.1
    disp('方案层一致性检验通过');
    CR3
else
    error('方案层一致性检验不通过');
end

% 组合一致性检验
CR = CR2 + CR3 * W2;
if CR < 0.1
    disp('组合一致性检验通过');
    CR
else
    error('组合一致性检验不通过');
end

% 计算最终权向量
W3 = [W3_1 W3_2 W3_3 W3_4];
W = W3 * W2;

% 输出结果
disp('最终权向量为:');
W

结果:

准则层一致性检验通过
CR2 =
    0.0301

方案层一致性检验通过
CR3 =
    0.0079    0.0079    0.0013    0.0158

组合一致性检验通过
CR =
    0.0390

最终权向量为:
W =
    0.6057
    0.2359
    0.1583

因此,最佳方案为方案 1

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

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

相关文章

文件上传靶场upload-labs通关

文章目录 前言Pass-01&#xff08;JavaScript绕过&#xff09;Step1、分析源码Step2、修改webshell文件后缀名Step3、修改报文重新发送Step4、使用webshell程序测试是否能连接 Pass-02&#xff08;MIME-Type绕过&#xff09;Step1、分析源码Step2、burp抓包&#xff0c;修改数据…

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理

1.首先准备好springboot项目构建的docker镜像 如果不会的去看我另一篇博客 docker构建springboot项目镜像 docker image list |grep alice2.通过命令启动镜像 注意: -p后面的端口号 前面可以随便写:后面必须是你springboot项目中application.yml的端口,不然 你启动起来 访问…

进阶(组件通讯)/react生命周期

如果是数值就在外面加{} 给组件传递任意类型数据 父子组件数据传递 兄弟组件传递 context的使用(多级嵌套) children属性 props校验 默认值 生命周期

通用分页详解【下】

目录 前言 一、通用分页的核心思想 二、PageBean的分页要素及优化 三、SQL的通用 1.获取总记录数 2.获取分页语句 四、PageTag的核心逻辑见解 五、运行流程 案例运用 注意&#xff1a; 1.pageBean优化 2.tld文件 3.分页标签助手类 4.Servlet层 5.jsp页面 6.结果输…

一款IP合并和分解工具(二)

本文是对上一篇文章的补充&#xff0c;看过《一款IP合并和分解工具&#xff08;一&#xff09;》的知道&#xff0c;cidr-merger工具在windows上使用需要用命令行&#xff0c;不是很方便&#xff0c;在这通过python的tkinter进行二次开发&#xff0c;写一个可视化的界面 目录 …

2bit反射型超表面设计

1.单patch扫参 1&#xff09;确定单元周期&#xff08;最好0.3波长到0.5波长&#xff09; 2&#xff09;确定介质介电常数。&#xff08;小一点比较好&#xff0c;带比较宽&#xff0c;一般选F4B2.65&#xff09; 3&#xff09;确定介质板厚度。厚一点好&#xff0c;最大3mm&a…

乱七八糟随便记录

建立Statement对象的作用是&#xff1f; 正确答案: C 你的答案: C (正确) A.连接数据库 B.声明数据库 C.执行SQL语句 D.保存查询结果 解释&#xff1a; 1、Statement对象用于执行不带参数的简单SQL语句。 2、Prepared Statement 对象用于执行预编译SQL语句。 3、Callable Sta…

react总结

一、React 入门 1.1 特点 高性能、声明式、组件化、单向响应的数据流、JSX扩展、灵活 1.2 React初体验 <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&quo…

软件测试缺陷

缺陷的定义 产品的定义不满足用户需求测试执行时&#xff0c;实际结果与预期结果不一致 缺陷产生的根本原因 需求变更沟通不畅&#xff0c;信息不同步软件复杂进度压力需求文档存在错误非根本设计存在错误非根本 缺陷的基本要素 ID编号&#xff1a;唯一模块&#xff1a;根据…

THREEJS 地图可视化案例分享

效果预览 git代码地址 threejs_map: threejs 地图可视化案例

能说会画 VisCPM:SOTA 开源中文多模态大模型

最近&#xff0c; 清华大学 NLP实验室、面壁智能、知乎联合在 OpenBMB 开源多模态大模型系列VisCPM &#xff0c;评测显示&#xff0c; VisCPM 在中文多模态开源模型中达到最佳水平。 VisCPM 是一个开源的多模态大模型系列&#xff0c;支持中英双语的多模态对话能力&#xff08…

全志科技T3国产工业核心板规格书(四核ARM Cortex-A7,主频1.2GHz)

1 核心板简介 创龙科技SOM-TLT3是一款基于全志科技T3处理器设计的4核ARM Cortex-A7国产工业核心板&#xff0c;每核主频高达1.2GHz。 核心板通过邮票孔连接方式引出CSI、TVIN、MIPI DSI、TVOUT、RGB DISPLAY、LVDS DISPLAY、GMAC、EMAC、USB、SATA、SDIO、UART、TSC、SPI、TW…

《PyTorch深度学习实践》第十讲 卷积神经网络(基础篇 + 高级篇)

b站刘二大人《PyTorch深度学习实践》课程第十讲卷积神经网络&#xff08;基础篇 高级篇&#xff09;笔记与代码&#xff1a; https://www.bilibili.com/video/BV1Y7411d7Ys?p10&vd_sourceb17f113d28933824d753a0915d5e3a90 https://www.bilibili.com/video/BV1Y7411d7Ys?…

数据结构--特殊矩阵的压缩存储

数据结构–特殊矩阵的压缩存储 一维数组的存储结构 ElemType a[10]; //ElemType型一维数组各数组元素大小相同&#xff0c;且物理上连续存放。 数组元素a[i]的存放地址 LOC i * sizeof(ElemType) ( 0 ≤ i < 10 ) (0\le i < 10) (0≤i<10) 注:除非题目特别说明&…

Win10不香了吗?微软 Win11 份额涨至 35.75% 创新高

根据 Valve 公司的最新调查结果&#xff0c;Windows 11 在 Steam 平台上的用户数量正稳步增长&#xff0c;预计将超过36%的比例。Steam定期进行用户软硬件情况调查&#xff0c;旨在提供可靠的数据支持供公司和游戏开发者用于未来的决策制定。此调查选择参与用户的方式是随机的&…

树莓派学习笔记12-安装使用PyZbar

树莓派学习笔记12-安装使用PyZbar 前言 通过树莓派外接USB摄像头&#xff0c;实现条形码的识别&#xff0c;并串口&#xff08;USB串口&#xff09;打印条形码的内容。 前期准备 硬件&#xff1a;树莓派4B 系统&#xff1a;Raspios-2021-03-04 编译器&#xff1a;Thonny 视…

如何基于GeoToolKit/INT实现矢量流线的聚集动画效果示例

继续在上一篇文章的基础上&#xff0c;利用相同的数据处理方法统一了不同年代地层的数据格式&#xff08;目前js解析支持的格式有ZMap、TS、XYZ和XYZA等&#xff09;&#xff0c;本文主要基于GeoToolKit/INT组件&#xff0c;针对地质研究经常在二维等值线基础上模拟计算地层中物…

【C++3】crontab,ftp

文章目录 1.生成数据&#xff1a;crontab2.ftp&#xff1a;ftp是tcp/ip协议族中一员&#xff0c;分客户端和服务端2.1 安装&#xff1a;linux操作系统的用户也是ftp的用户&#xff0c;可以配置专用的ftp用户&#xff0c;专用的ftp用户只能用于ftp&#xff0c;不能登录操作系统2…

ROS2移动机器人导航仿真

环境&#xff1a;Ubuntu 18.04 ros2 eloquent wget http://fishros.com/install -O fishros && . fishros1.安装turtlebot3相关功能包 sudo apt install ros-eloquent-turtlebot3* ref&#xff1a; https://docs.ros.org/ ROS2导航SLAM建图探索_鱼香ROS的博客-CSD…

蛋白组学 代谢组

https://www.cnblogs.com/yanzhi123/p/11712926.htmlhttps://www.cnblogs.com/yanzhi123/p/11712926.html【3】蛋白质组学鉴定软件之Mascot - 简书 (jianshu.com) 【6】蛋白质组学鉴定定量软件之MaxQuant - 简书 (jianshu.com) 基于Maxquant软件处理的LabelFree蛋白质组学 首…