【MATLAB源码】数学建模基础教程(2)--层次分析法(评价类算法)

系列文章目录在最后面,各位同仁感兴趣可以看看!

层次分析法


引言

层次分析法(AHP)是由美国运筹学家、匹茨堡大学教授托马斯·L·萨蒂(T.L. Saaty)在20世纪70年代初提出的一种层次权重决策分析方法。萨蒂教授当时为美国国防部研究一个课题,即根据各个工业部门对国家福利的贡献大小来进行电力分配。他应用了网络系统理论和多目标综合评价方法,提出了这一方法。层次分析法通过将复杂的决策问题分解为多个层次和子问题,逐层分析,并利用专家判断和数学计算确定各因素的相对重要性,最终为决策提供科学的依据。

一、层次分析法的特点

(1) 这种方法的特点是在深入分析复杂决策问题的本质、影响因素及其内在关系的基础上,利用较少的定量信息,将决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的解决方案。它是一种适用于难以完全定量的复杂系统进行决策的模型和方法。

(2)层次分析法在经济、科技、文化、军事、环境乃至社会发展等方面的管理决策中都有广泛的应用。它常用于解决诸如综合评价、选择决策方案、估计和预测、以及投入量的分配等问题。通过这种方法,决策者能够更有效地分析和处理复杂的决策问题,确保决策过程更加科学和合理。

二、模型的建立求解过程

(1)问题的提出:实际问题的转化

在我们日常生活中,其实有许多决策问题。决策是指在面临多种方案时,根据一定的标准选择某一种方案。例如拿典型的旅游例子来讲:假期旅游,是去风光秀丽的苏州,还是去凉爽宜人的北戴河,或者是去山水甲
天下的桂林?通常会依据景色、费用、食宿条件、旅途等因素选择去哪个地方
.其中这些景色、费用、食宿条件、旅途等就是决策的目标,就是我们最终比较得出的最优化结果,如下图是基本的原理过程;

运用层次分析法构造系统模型时,大体可以分为以下四个步骤:

1.建立层次结构模型

2.构造判断(成对比较)矩阵

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

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

(2)建立层次结构模型

层次分析法通过将决策的目标、考虑的因素(决策准则)和决策对象按它们之间的相互关系分为最高层、中间层和最低层,绘制出层次结构图。具体如下:

  1. 最高层(目标层):决策的目的、要解决的问题。

  2. 中间层(准测层):考虑的因素、决策的准则,影响选择的因素。

  3. 最低层(方案层) :决策时的备选方案,就是有几种方案可选。
    我们可以用一个简单明了的图,给大家直观的表达:如下图所示

    几点注意
    1.处于最上面的的层次通常只有一个元素,一般是分析问题的预定目标或理想结果。中间层次一般是准则、子准则。最低一层包括决策的方案。层次之间元素的支配关系不一定是完全的,即可以存在这样的元素,它并不支配下一层次的所有元素。
    2.层次数与问题的复杂程度和所需要分析的详尽 程度有关。每一层次中的元素一般不超过9个,因一层中包含数目过多的元素会给两两比较判断带来困难。
    3.一个好的层次结构对于解决问题是极为重要的。 层次结构建立在决策者对所面临的问题具有全面 深入的认识基础上,如果在层次的划分和确定层 次之间的支配关系上举棋不定,最好重新分析问 题,弄清问题各部分相互之间的关系,以确保建 立一个合理的层次结构。
    还是以上面的旅游举例来说,可以进行划分的层次结构如下图所示:直观明了的把问题转化为层次逻辑

    层次分析法所要解决的问题是关于最低层对最高层的相对权重问题。通过确定这些相对权重,可以对最低层中的各种方案和措施进行排序,从而在不同的方案中作出选择或形成选择方案的原则。具体而言,最高层代表决策的目的和要解决的问题,中间层则包含考虑的因素和决策准则,而最低层则是备选方案。

(3)构造判断(成对比较)矩阵

在建立递阶层次结构后,上下层次之间元素的隶属关系得以确定。假设上一层次的元素 ( Ck ) 作为准则,对下一层次的元素 ( A1, A2, ..., An ) 存在支配关系,我们的目的是在准则 ( Ck ) 之下,根据它们的相对重要性为 ( A1, A2, ..., An ) 赋予相应的权重。为此,需要比较同一层次中每个因素相对于上一层次同一因素的相对重要性。这种比较通常通过对每个因素进行成对比较,以确定它们对决策目标的贡献,从而最终形成相应的权重矩阵,并计算出每个方案的权重值。

在确定各层次因素之间的权重时,如果仅依靠定性的结果,常常难以被他人接受。因此,萨蒂等人提出了构造成对比较矩阵 A = aij 的方法。具体而言,该方法有以下特点:

1.不将所有因素放在一起进行比较,而是进行两两相互比较。

  1. 在比较时采用相对尺度,以尽可能减少不同性质因素之间比较的困难,从而提高准确度。

成对比较矩阵用于表示本层所有因素相对于上一层某一因素的相对重要性。判断矩阵的元素 ( aij ) 是使用萨蒂的1-9标度方法给出的。心理学家认为,成对比较的因素不宜超过9个,因此每层因素最好不要超过9个。这种方法有效地简化了比较过程,使得决策者能够更清晰地理解各因素的重要性,并为权重的计算提供了可靠的基础。那么判断矩阵aij的标度方法表如下所示:

对于 n 个元素来说, 通过A1, A2, ..., An两两比较, 得到成对比较 (判断)矩阵 A=(aij) n*n:其中判断矩阵具有如下性质:

(1)aij>0;

(2)aij=1/aji;

(3)aii=1。

我们称 A为正的互反矩阵根据性质(2)和(3),事实上,对于n 阶判断矩阵仅需对其上(下)三角元素共n(n-1)/2 个给出判断即可。对应于判断矩阵最大特征根λmax的特征向量,经归一化(使向量中各元素之和等于1)后记为W。

通过调查部分人的想法程度,得到以旅游为例子的矩阵。

(4)一致性检验:

对矩阵归一化处理之后,由aikakj=aij,i,j=1,2,...,n。在正互反矩阵A中,若aikakj=aij(A的元素具有传递性)则称A为一致矩阵。定理:n阶正互反阵A的最大特征根λmax>=n,当且仅λ=n时A为一致阵。一般地,我们并不要求判断具有这种传递性和一致性,这是由客观事物的复杂性与人的认识的多样性所决定的.但在构造两两判断矩阵时,要求判断大体上的一致是应该的.出现甲比乙极端重要,乙比丙极端重要,而丙又比甲极端重要的判断般是违反常识的.一个混乱的经不起推敲的判断矩阵有可能导致决策的失误,而且当判断矩阵过于偏离一致性时,用上述各种方法计算的排序权重作为决策依据,其可靠程度也值得怀疑.因而必须对判断矩阵的一致性进行检验.

由于λ(A的特征根)连续的依赖于aij,则λ比n大的越多,A的不一致性越严重。引起的判断误差越大。因而可以用λ-n数值的大小来衡量A的不

一致程度。

定义一致性指标 CI=(λmax-n)/(n-1)

其中:CI=0 ,有完全的一致性

CI接近于0,有满意的一致性

CI越大,不一致越严重

定义一致性比率:CR=CI/RI ,一般的,当一致性比率CR=CI/RI<0.1.时,认为的不一致程度在容许范围之内,有满意的一致性,通过一致性检验.否则要重新构造成对比较矩阵A,对aij加以调整.

注意:一致性检验:利用一致性指标和一致性比率<0。1及随机致性指标的数值表,对A进行检验的过程

断矩阵一致性检验的步骤如下:

(1)计算一致性指标 CI: CI=(λmax-n)/(n-1) 其中n为判断矩阵的阶数;

(2)查找平均随机致性指标RI.平均随机一致性指标是多次(500次以上)重复进行随机判断矩阵特征根计算之后取算术平均得到的.一般用于查表得到RI:如下表

阶数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
RI 0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59

(3)计算一致性比例CR:**CR=CI/RI,**当C.R.<0.1时,一般认为判断矩阵的一致

性是可以接受的.否则应对判断矩阵作适当的修正.

根据上面例子最后求得结果如下:

三、层次分析法的优点与局限

1.优点:

(1)系统性:层次分析法通过将研究对象视为一个整体系统,运用系统思维进行全面的决策分析,因而成为继机理分析和统计分析之后,发展起来的重要系统分析工具。

(2)实用性:该方法成功结合了定性与定量分析,能够高效地解决许多传统优化技术难以应对的复杂实际问题。此外,层次分析法还促进了决策者与分析者之间的有效沟通,使得决策者可以在一定程度上直接应用该方法,从而显著提高决策的有效性和可靠性。

(3)简洁性:层次分析法的基本原理和步骤易于理解,具备中等文化水平的人士都能够快速掌握。该方法的计算过程非常简便,所得结果直观明了,决策者可以轻松理解和应用。
2.缺点:

(1)局限性:层次分析法的一个主要局限在于,它只能在现有方案中选择出最佳选项,而无法提出全新的解决方案,限制了其创新性。

(2)粗糙性:在比较、判断和计算过程中,层次分析法的处理方式较为粗略,因而不适合用于对高精度要求较高的问题。

(3)主观性:从建立层次结构模型到构建成对比较矩阵,主观因素对整个过程的影响十分显著,这可能导致最终的决策结果难以获得所有相关决策者的普遍认同。

代码开源

clc; clear; % 清空命令行和工作区

% 定义判断矩阵
A = [根据方案层定义矩阵];

% 计算特征值和一致性检验
maxlam = max(eig(A)); % 最大特征值
n = size(A, 1); % 评价指标个数
RI = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45...]; % 随机一致性指标,查表根据阶数
CI = (maxlam - n) / (n - 1); % 一致性指数
CR = CI / RI(n); % 一致性比率

% 一致性检验
if CR < 0.1
    disp('该矩阵通过一致性检验。');
else
    disp('该矩阵未通过一致性检验!');
    return;
end

% 归一化处理
Aprogress = A ./ sum(A); % 归一化判断矩阵
W = mean(Aprogress, 2); % 计算权重向量

% 输入原始数据
data = [判断的方案程度矩阵];

% 数据归一化处理
data = data ./ sum(data); % 归一化每列数据

% 计算综合评分
grade = data * W; % 综合评分

最后:总结

通过上面大介绍,大概层次分析法就是这样,我也是从基础跟大家讲起,算法比较简单易懂,如果有什么讲的不好的希望大佬们指正,谢谢!最后哈哈哈哈哈,还是希望,能给我点赞收藏关注一下,真的非常谢谢咯,最后后续看看还有什么可以讲解的,后续进行分享。别忘了点赞!!!!!!哈哈哈哈哈哈,下期见


系列文章目录

专栏1:

第一篇文章:【MATLAB源码】机器视觉与图像识别技术---视觉系统的构成(视频与图像格式转换代码及软件下载)

第二篇文章:【MATLAB源码】机器视觉与图像识别技术(2)---图像分割基础

第三篇文章:【MATLAB源码】机器视觉与图像识别技术(2)续---图像分割算法

第四篇文章:【MATLAB源码】机器视觉与图像识别技术(3)---数字形态学处理以及图像特征点提取

第五篇文章: 【MATLAB源码】机器视觉与图像识别技术(4)---模式识别与视觉计数

第六篇文章: 【MATLAB源码】机器视觉与图像识别技术(5)---BP神经网络和视觉标定

第七篇文章:【MATLAB源码】机器视觉与图像识别技术实战示例文档---鱼苗面积预测计数

第八篇文章:【MATLAB源码】机器视觉与图像识别技术(6)---帧差法和videoinput视频读取

第九篇文章:【MATLAB源码】机器视觉与图像识别技术(7)续---BP神经网络

专栏2:

第一篇文章:【MATLAB源码】数学建模基础教程---初步认识数学建模

相关推荐
又蓝5 分钟前
使用 Python 操作 Excel 表格
开发语言·python·excel
AI前沿技术追踪11 分钟前
OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载
人工智能
余~~1853816280017 分钟前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
刚学HTML1 小时前
leetcode 05 回文字符串
算法·leetcode
galileo20161 小时前
LLM与金融
人工智能
Am心若依旧4091 小时前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
开发语言·青少年编程·单元测试·编程与数学·goweb
大G哥1 小时前
java提高正则处理效率
java·开发语言
DREAM依旧1 小时前
隐马尔科夫模型|前向算法|Viterbi 算法
人工智能
AC使者1 小时前
#B1630. 数字走向4
算法