数学建模:层次分析法(AHP)

这篇具有很好参考价值的文章主要介绍了数学建模:层次分析法(AHP)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

层次分析法简介

层次分析法(Analytic Hierarchy Process,AHP)是一种多准则决策方法,用于解决复杂的决策问题。它是由美国数学家托马斯·萨亚基(Thomas L. Saaty)于20世纪70年代提出的。其基本思想是将复杂的决策问题分解为层次结构,通过对准则和方案进行定量和定性的比较,最终得出最佳决策。层次结构由准则层、子准则层和方案层组成,准则层表示决策问题的目标和标准,子准则层表示实现目标的具体要素,方案层表示可选的决策方案。在AHP中,通过构建判断矩阵来比较准则和方案之间的重要性。判断矩阵是一个方阵,其中每个元素表示两个准则或方案之间的比较结果。通过对准则和方案进行两两比较,可以得到判断矩阵。然后,通过计算判断矩阵的特征向量,可以得出准则和方案的权重,用于进行综合决策。在进行判断矩阵的构建和权重计算时,AHP还考虑了一致性的问题。一致性是指比较结果的合理性和稳定性。AHP通过计算一致性指标和一致性比率来检验判断矩阵的一致性,确保比较结果的可靠性。AHP可以应用于各种决策问题,例如项目选择、投资决策、供应商选择、产品评估等。它提供了一种系统化和结构化的方法,帮助决策者在面对复杂的决策问题时做出明智的选择。

题目举例

请为大学毕业的青年建立一个选择志愿的层次结构模型.

解题步骤

Ⅰ、建立层次结构

首先对题目进行问题分析并搜索多方面资料对问题进行回答。

1.为什么要选择志愿?(目标层)

        为同学选择最合适的发展路线。

2.有什么因素影响志愿选择?(准则层)

        经济情况、学习情况、兴趣情况、性格情况、家庭情况。

3.选择的志愿类型有哪些?(方案层)

        工作、考公、读研、创业。

建立层次结构图如下:

层次分析法方案层必须是同一种类型么,数学建模,matlab

        图1-1 层次结构图

Ⅱ、构造判断矩阵

我们的解题目标为填写出权重表格。

假设各准则之间相互独立。

层次分析法方案层必须是同一种类型么,数学建模,matlab

图2-1 权重表格

通过进行各准则与各方案的关系判断矩阵求出权重比例。构造空白目标判断矩阵如下:

层次分析法方案层必须是同一种类型么,数学建模,matlab

图2-2 判断矩阵O-C

空白处为各准则之间的比例关系。通过简单的分治策略可以轻松求出。这里以经济和学习进行举例。

eg:

重要程度表如下:

层次分析法方案层必须是同一种类型么,数学建模,matlab

图2-3 重要程度表

根据重要程度表进行专家判断得出判断矩阵如下:

层次分析法方案层必须是同一种类型么,数学建模,matlab

图2-4 判断矩阵O-C

层次分析法方案层必须是同一种类型么,数学建模,matlab

图2-5 判断矩阵C-P

Ⅲ、一致性检验

对所有判断矩阵进行一致性检验通过后才能进行求权重。

首先需要了解两个概念:

①矩阵中的所有元素均大于0且满足Aij*Aji=1,即正互反矩阵。

②在正互反矩阵中满足Aij*Ajk=Aik,即一致矩阵。

以图2-5中C1-P举例,当i=1,j=2,k=4时:

层次分析法方案层必须是同一种类型么,数学建模,matlab

图3-1 判断矩阵C1-P

层次分析法方案层必须是同一种类型么,数学建模,matlab

即①条件满足。

层次分析法方案层必须是同一种类型么,数学建模,matlab

*一致矩有一个特征值为n,其余为0。

层次分析法方案层必须是同一种类型么,数学建模,matlab

即②条件满足。

接下来进行一致性检验:

1.计算一致性指标CI

层次分析法方案层必须是同一种类型么,数学建模,matlab

其中:n为矩阵的阶,λmax为矩阵最大特征值。

clear;clc
disp('判断矩阵A: ')
A = [1 1/2 2 1 2;
 2 1 4 2 1;
 1/2 1/4 1 1/2 1/4;
 1 1/2 2 1 1/2;
 1/2 1 4 2 1]
​
[row,col] = size(A);
[V,D] = eig(A); 
% 求最大特征值
MAX_D = max(max(D)); 
CI = (MAX_D - row) / (row - 1)
CI = 0.0613
2.查找对应的平均随机一致性指标RI

层次分析法方案层必须是同一种类型么,数学建模,matlab

平常n大多小于10,如果超过10可以考虑建立二级指标体系。

3.计算一致性比例CR

层次分析法方案层必须是同一种类型么,数学建模,matlab

如果CR<0.1,则可认为判断矩阵的一致性可以接受,否则需要对判断矩阵进行修正。

clear;clc
disp('判断矩阵A: ')
A = [1 1/2 2 1 2;
 2 1 4 2 1;
 1/2 1/4 1 1/2 1/4;
 1 1/2 2 1 1/2;
 1/2 1 4 2 1]
​
[row,col] = size(A);
[V,D] = eig(A); 
% 求最大特征值
MAX_D = max(max(D)); 
CI = (MAX_D - row) / (row - 1);
CR = CI / 1.12
if CR < 0.1 
    disp('True')
else
    disp('False')
end
CR = 0.0548
True

Ⅳ、合成权重

权重合成方法有三种:算数平均值法、几何平均值法、特征值法。

1.算数平均值法
clear;clc
disp('判断矩阵A: ')
A = [1 1/2 2 1 2;
 2 1 4 2 1;
 1/2 1/4 1 1/2 1/4;
 1 1/2 2 1 1/2;
 1/2 1 4 2 1]
​
%% 方法1:算术平均法求权重
% 第一步:将判断矩阵按照列归一化(每一个元素除以其所在列的和)
Sum_col_A = sum(A);
% 求出A的行列大小
[row,col] = size(A); 
% 构造出中间矩阵
Temp_A = repmat(Sum_col_A,row,1);
clc;
% 得出答案
Stand_A = A ./ Temp_A;
% 这里我们直接将两个矩阵对应的元素相除即可
% 第二步:将归一化的各列相加
Stand_SUM_A = sum(Stand_A,2);
% 第三步:将得到的向量点除阶数得到权重
ans_A = Stand_SUM_A ./ row;
ans_A.'
% 检验求出的矩阵和是否为一,为一表示正确
if sum(ans_A) == 1
    disp("True")
else
    disp("False")
end
// 得出权重
ans_A.' = [0.2165    0.3067    0.0767    0.1534    0.2467]
2.几何平均值法
clear;clc
disp('判断矩阵A: ')
A = [1 1/2 2 1 2;
 2 1 4 2 1;
 1/2 1/4 1 1/2 1/4;
 1 1/2 2 1 1/2;
 1/2 1 4 2 1]
 
%% 方法2:几何平均法求权重
% 第一步:将A的元素按照行相乘得到一个新的列向量
Prduct_A = prod(A,2)
% 第二步:将新的向量的每个分量开n次方
% 求出A的行列大小
[row,col] = size(A); 
Prduct_row_A = Prduct_A .^ (1/row)
% 第三步:对该列向量进行归一化即可得到权重向量
% 即将这个列向量中的每一个元素除以这一个向量的和
ans_A = Prduct_row_A ./ sum(Prduct_row_A)
% 检验求出的矩阵和是否为一,为一表示正确
if sum(ans_A) == 1
    disp("True")
else
    disp("False")
end
// 得出权重
ans_A.' = [0.2083    0.3157    0.0789    0.1578    0.2393]
3.特征值法
clear;clc
disp('判断矩阵A: ')
A = [1 1/2 2 1 2;
 2 1 4 2 1;
 1/2 1/4 1 1/2 1/4;
 1 1/2 2 1 1/2;
 1/2 1 4 2 1]
 
%% 方法3:特征值法
% 第一步:求出矩阵A的最大特征值以及其对应的特征向量
[V,D] = eig(A); 
MAX_D = max(max(D)); 
[r,c] = find(D == MAX_D,1);
% 第二步:对求出的特征向量进行归一化即可得到我们的权重
ans_A = V(:,1) ./ sum(V(:,1))
% 检验求出的矩阵和是否为一,为一表示正确
if sum(ans_A) == 1
    disp("True")
else
    disp("False")
end
// 得出权重
ans_A.' = [0.2223    0.3059    0.0765    0.1530    0.2424]

Ⅴ、得出权重表

根据判断矩阵和准则权重得出答案。

clear;clc;
% 三种方法得出的权重矩阵
weight_1 = [0.2165    0.3067    0.0767    0.1534    0.2467];
weight_2 = [0.2083    0.3157    0.0789    0.1578    0.2393];
weight_3 = [0.2223    0.3059    0.0765    0.1530    0.2424];
% C-P矩阵
C1 = [1 1/2 1 1/2;
    2 1 2 1;
    1 1/2 1 1/2;
    2 1 2 1;];
​
C2 = [1 1/2 1/2 1/2;
    2 1 1 1/2;
    2 1 1 1/2;
    2 2 2 1;];
​
C3 = [1 4 4 4;
    1/4 1 1 1;
    1/4 1 1 1;
    1/4 1 1 1;];
​
C4 = [1 1/2 2 2;
    2 1 4 4;
    1/2 1/4 1 1;
    1/2 1/4 1 1;];
​
C5 = [1 1 1/2 1/4;
    1 1 1/2 1/4;
    2 2 1 1/2;
    4 4 2 1;];
​
% 求权重
disp('算数平均值求解答案:')
C1_weight = C1(:,1) .* weight_1;
C1_weight = C1_weight(:,1)
​
C2_weight = C2(:,1) .* weight_1;
C2_weight = C2_weight(:,1)
​
C3_weight = C3(:,1) .* weight_1;
C3_weight = C3_weight(:,1)
​
C4_weight = C4(:,1) .* weight_1;
C4_weight = C4_weight(:,1)
​
C5_weight = C5(:,1) .* weight_1;
C5_weight = C5_weight(:,1)
​
disp('几何平均值求解答案:')
C1_weight = C1(:,1) .* weight_2;
C1_weight = C1_weight(:,1)
​
C2_weight = C2(:,1) .* weight_2;
C2_weight = C2_weight(:,1)
​
C3_weight = C3(:,1) .* weight_2;
C3_weight = C3_weight(:,1)
​
C4_weight = C4(:,1) .* weight_2;
C4_weight = C4_weight(:,1)
​
C5_weight = C5(:,1) .* weight_2;
C5_weight = C5_weight(:,1)
​
disp('特征值求解答案:')
C1_weight = C1(:,1) .* weight_3;
C1_weight = C1_weight(:,1)
​
C2_weight = C2(:,1) .* weight_3;
C2_weight = C2_weight(:,1)
​
C3_weight = C3(:,1) .* weight_3;
C3_weight = C3_weight(:,1)
​
C4_weight = C4(:,1) .* weight_3;
C4_weight = C4_weight(:,1)
​
C5_weight = C5(:,1) .* weight_3;
C5_weight = C5_weight(:,1)

根据答案填写权重表。

层次分析法方案层必须是同一种类型么,数学建模,matlab文章来源地址https://www.toymoban.com/news/detail-799137.html

到了这里,关于数学建模:层次分析法(AHP)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模学习】matlab实现评价模型——层次分析法(AHP)

    目录 1概述  2算法实现流程 3实例  4matlab实现层次分析法 5计算结果 层次分析法,简称AHP,是评价模型中的一种算法,指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。层次分析法的缺陷在于判断矩阵是主观决定的,

    2024年02月04日
    浏览(41)
  • 数学建模学习笔记(1):层次分析法(AHP)(附有详细使用步骤)

    层次分析法是由美国运筹学家T.L.Saaty于20世纪七十年代创立的一种系统分析与决策的综合评价方法,是在充分研究了人类思维过程的基础上提出的较为合理的解决定性问题定量化的处理过程。 层次分析法的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因素两两

    2024年02月07日
    浏览(31)
  • 数学建模——层次分析法

    正互反矩阵:若矩阵中每个元素a(ij)0且满足a(ij)*a(ji)=1。 层次分析法中,我们构造的判断矩阵均是正互反矩阵。 一致矩阵:若正互反矩阵满足a(ij)*a(jk)=a(ik)。 一致矩阵的秩为1。 一致矩阵有一个特征值为n,其余特征值均为0。 判断矩阵越不一致时,最大特征值与n相差越大。 一

    2024年02月16日
    浏览(26)
  • 数学建模:层次分析法

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 将问题条理化,层次化,构建出一个有层次的结构模型。层次分为三类: 目标层,准则(指标)层,方案层 。 比较指标层中不同指标之间的相对重要程度,并且构建一个 成对比较矩阵 。 自行判断两个不同指标的相对重要程

    2024年02月10日
    浏览(29)
  • 五、数学建模之层次分析法

    1.概念 2.例题    层次分析法 (Analytic Hierarchy Process,AHP)是一种多 标准决策分析方法 ,用于帮助人们在面对复杂的决策问题时 进行定量和定性的比较和评估 。它最初由美国运筹学家和管理学家托马斯·萨蒙(Thomas L. Saaty)于20世纪70年代提出,并在后来得到广泛应用。层

    2024年02月07日
    浏览(39)
  • 数学建模学习笔记||层次分析法

    解决评价类问题首先需要想到一下三个问题 我们评价的目标是什么 我们为了达到这个目标有哪几种可行方案 评价的准则或者说指标是什么 对于以上三个问题,我们可以根据题目中的背景材料,常识以及网上收集到的参考资料进行结合,从而筛选出最合适的指标 优先选择知

    2024年01月23日
    浏览(40)
  • 清风老师数学建模笔记——层次分析法

    1.层次分析法的概念;层次分析法(The Analytic Hierarchy Process即 AHP)是由美国运筹学家、匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解决了定性问题定量化的处理过程。 2.层次

    2024年02月02日
    浏览(32)
  • 数学建模常用模型(三):层次分析法

    层次分析法(Analytic Hierarchy Process,AHP)是一种用于多准则决策分析的方法,由美国运筹学家托马斯·L·赛蒂(Thomas L. Saaty)于1970年提出。它通过对决策问题进行层次化,将复杂的问题拆分为多个层次和准则,并使用定量化的方法进行比较和权重分配,最终得出综合评价和决

    2024年02月13日
    浏览(30)
  • 清风数学建模学习笔记(一)层次分析法

    目录 一、基本介绍 二、利用层次分析法解决评价类问题 2.1判断矩阵 2.2判断矩阵一致性检验  2.3计算权重  2.4算数平均法求权重  2.5几何平均法求权重  2.6特征值求权重 三、总结  层次分析法是评价类模型中的一种常见算法,它是用来根据多种准则,或是说因素从候选方案

    2024年02月16日
    浏览(32)
  • 数学建模(层次分析法 python代码 案例)

    目录 介绍:  模板: 例题:从景色、花费、饮食,男女比例四个方面去选取目的地  准则重要性矩阵:  每个准则的方案矩阵:​  一致性检验:  特征值法求权值: 完整代码: 运行结果:

    2024年04月29日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包