学习数学模型【层次分析法】

层次分析法基本模型(AHP)

层次分析法(AHP)是美国运筹学家匹茨堡大学教授萨蒂(T.L.Saaty)于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。
这种方法的特点是在对复杂的决策问题的本质、影响因素及其内在关系等进行深入分析的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。
是对难于完全定量的复杂系统作出决策的模型和方法。

层次分析法建模

在这里插入图片描述

一、层次分析法概述

层次分析法(AHP法) 是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数,利用权数求出各方案的优劣次序,比较有效地应用于那些难以用定量方法解决的课题。
在这里插入图片描述

二、层次分析法的基本原理

层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。

三、层次分析法的步骤和方法

在这里插入图片描述

1建立层次结构模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
此时以例二为例进行分析
在这里插入图片描述
在这里插入图片描述
即各个因素之间不具备明显的传递关系,但是总在传递关系附近震荡,当超出一定范围是,视成对比较真存在问题。
为了确定波动的范围,需要
先了解完全一致的情况
在这里插入图片描述

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

在这里插入图片描述
由于λ连续的依赖于aij,则λ比n大的越多,A的不一致性越严重。用最大特征值对应的特征向量作为被比较因素对上层某因素影响程度的权向量,其不一致程度越大,引起的判断误差越大。因而可以用λ-n数值的大小来衡量A的不一致程度。
在这里插入图片描述
这里的RI在使用时进行查找就好了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
正互反阵最大特征根和特征向量的简化计算,这是在没有强大的计算工具的情况下的简化算法。现在可以直接用MATLAB进行精确求解。了解即可。
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时分析例二的方案层准则层成对比较阵
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述
在这里插入图片描述
现在重新梳理一下例二
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此处给出计算准则层判断矩阵的特征值、特征向量和一致性的代码

% 层次分析法代码,此代码输入到命令行窗口后在输入矩阵A即可运行得到结果
% 使用方法
% (1)构造判断矩阵A
% (2)将下文代码复制粘贴到Matlab中即可
% 例如:A=[1 3 5;0.33 1 3;0.2 0.33,1]

disp('请输入准则层判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);%得到矩阵的阶数,以确定RI
[V,D]=eig(A);%求得特征向量和特征值
            %求出最大特征值和它所对应的特征向量
            %V整个矩阵的特征向量
            %D指的是矩阵的特征值,按对角线元素排列
tempNum=D(1,1);%得到特征值的初值
pos=1;%标记的第一个数
for h=1:n
    if D(h,h)>tempNum
        tempNum=D(h,h);
        pos=h;
    end
end    
%找到最大的特征值及其对应的位置
w=abs(V(:,pos));%最大特征值对应的特征向量指为w
w=w/sum(w);%归一化处理(各个值只需要保持在0~1的范围之内,每个值都比上所有值之和)
t=D(pos,pos);%指的是最大特征值是多少
disp('准则层特征向量w=');disp(w);disp('准则层最大特征根t=');disp(t);
         %以下是一致性检验
CI=(t-n)/(n-1);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 1.60 1.61 1.615 1.62 1.63];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
else disp('此矩阵的一致性验证失败,请重新进行评分!');
end

下面进行一个完整的案例分析

【案例】选拔多优层秀次参分赛析队的员方法问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此处对模型的假设比较重要,否则层次分析法将无法解决此问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有的老师认为此类型的问题用此方法去分析建模并不合适

层次分析法的几点说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上大部内容来自B站数学建模老哥,感谢UP。本文也是笔者的学习理解笔记。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你写一个简单的层次分析模型的Python代码。但是需要先了解层次分析模型的原理和流程。 层次分析模型(Analytic Hierarchy Process,AHP)是一种多准则决策分析方法,用于处理多种因素和不同层次的决策问题。AHP通过构建层次结构模型,将决策问题分解为一系列层次,每个层次对应一个指标或因素,通过对各个层次进行两两比较,得出各因素的权重,从而进行决策。 以下是一个简单的AHP模型Python代码,用于处理两个因素的决策问题: ``` import numpy as np # 构建层次结构模型 criteria = np.array([ [1, 2], # 准则层 [0.5, 1] # 指标层 ]) # 计算准则层权重 criteria_weight = np.sum(criteria, axis=1) / np.sum(criteria) # 计算一致性比率CR eigenvalue, eigenvector = np.linalg.eig(criteria) max_eigenvalue = np.max(eigenvalue) CR = (max_eigenvalue - len(criteria)) / (len(criteria) - 1) / 0.58 # 计算指标层权重 indicator_weight = np.dot(criteria_weight, criteria) # 输出结果 print("准则层权重:", criteria_weight) print("一致性比率CR:", CR) print("指标层权重:", indicator_weight) ``` 以上代码中,我们首先构建了一个层次结构模型,其中准则层包含两个准则,指标层包含两个指标。然后,我们计算了准则层的权重,以及一致性比率CR。最后,我们计算了指标层的权重,并输出结果。 需要注意的是,以上代码仅适用于处理两个因素的决策问题。如果需要处理更多的因素,需要对代码进行适当修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值