一、通过权重表格求解评价类问题

  层次分析法主要用于评价类问题,比如说小明要去旅游,纠结去苏航还是北戴河、还是桂林。

  我们可以弄这样一张权重表格。

  将这张表格记作矩阵:
A=(a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44a51a52a53a54)A = \begin{pmatrix} a_{11} & a_{12} & a_{13} & a_{14}\\ a_{21} & a_{22} & a_{23} & a_{24}\\ a_{31} & a_{32} & a_{33} & a_{34}\\ a_{41} & a_{42} & a_{43} & a_{44}\\ a_{51} & a_{52} & a_{53} & a_{54} \end{pmatrix} A=⎝⎜⎜⎜⎜⎛​a11​a21​a31​a41​a51​​a12​a22​a32​a42​a52​​a13​a23​a33​a43​a53​​a14​a24​a34​a44​a54​​⎠⎟⎟⎟⎟⎞​
  取m为权重表矩阵的行数,n为权重表矩阵的列数,则对于权重矩阵而言,需满足:
∑i=1mai1=1对于∀i∈[1,m],有∑j=2naij=1\sum\limits_{i = 1}^{m}a_{i1} = 1\\ 对于\forall i \in \left[1, m\right],有\sum\limits_{j = 2}^{n}a_{ij}=1 i=1∑m​ai1​=1对于∀i∈[1,m],有j=2∑n​aij​=1
  而我们计算权重值也很简单,例如计算第j列对应的权重值。
wj=(a11,a21…am1)×(a1j,a2j…amj)Tw_{j}=\left(a_{11}, a_{21}\dots a_{m1}\right) \times \left(a_{1j}, a_{2j}\dots a_{mj}\right)^T wj​=(a11​,a21​…am1​)×(a1j​,a2j​…amj​)T
  然后我们比较w2、w3……wn。获得其中的最大值,即是最终答案。

  例如在上面那个例子中
A=(a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44a51a52a53a54)w苏杭=(a11,a21,a31,a41,a51)×(a12,a22,a32,a42,a52)Tw北戴河=(a11,a21,a31,a41,a51)×(a13,a23,a33,a43,a53)Tw桂林=(a11,a21,a31,a41,a51)×(a14,a24,a34,a44,a54)TA = \begin{pmatrix} a_{11} & a_{12} & a_{13} & a_{14}\\ a_{21} & a_{22} & a_{23} & a_{24}\\ a_{31} & a_{32} & a_{33} & a_{34}\\ a_{41} & a_{42} & a_{43} & a_{44}\\ a_{51} & a_{52} & a_{53} & a_{54} \end{pmatrix}\\ w_{苏杭} = (a_{11}, a_{21}, a_{31}, a_{41}, a_{51}) \times (a_{12}, a_{22}, a_{32}, a_{42}, a_{52})^T\\ w_{北戴河} = (a_{11}, a_{21}, a_{31}, a_{41}, a_{51}) \times (a_{13}, a_{23}, a_{33}, a_{43}, a_{53})^T\\ w_{桂林} = (a_{11}, a_{21}, a_{31}, a_{41}, a_{51}) \times (a_{14}, a_{24}, a_{34}, a_{44}, a_{54})^T A=⎝⎜⎜⎜⎜⎛​a11​a21​a31​a41​a51​​a12​a22​a32​a42​a52​​a13​a23​a33​a43​a53​​a14​a24​a34​a44​a54​​⎠⎟⎟⎟⎟⎞​w苏杭​=(a11​,a21​,a31​,a41​,a51​)×(a12​,a22​,a32​,a42​,a52​)Tw北戴河​=(a11​,a21​,a31​,a41​,a51​)×(a13​,a23​,a33​,a43​,a53​)Tw桂林​=(a11​,a21​,a31​,a41​,a51​)×(a14​,a24​,a34​,a44​,a54​)T
  计算完成后,比较三者大小选最大的。

  用matlab程序可以表示为:

function res = func(mat)[~, n] = size(mat);a = sum(repmat(mat(:, 1), 1, n - 1) .* mat(:, 2 : n));res = find(a == max(a));
end

二、如何获得权重表

  首先,例子评价的指标有五个:景色、花费、居住、饮食、交通。构建一个五行五列方阵:

  我们问问小明觉得景色和花费哪个重要,小明说觉得景色比花费重要两倍,所以a12=1a21=2a_{12} = \frac{1}{a_{21}} = 2a12​=a21​1​=2,小明还说居住比景色重要四倍。那么a31=1a13=4a_{31} = \frac{1}{a_{13}} = 4a31​=a13​1​=4

  显然地,对于我们构建的这个矩阵,满足:
对于∀i,j∈[1,n],有aij×aji=1对于\forall i, j\in[1, n],有a_{ij} \times a_{ji} = 1 对于∀i,j∈[1,n],有aij​×aji​=1
  所有满足这个条件的矩阵都被成为正互反矩阵。可以用下面的的程序来判断:

function res = func(mat)a = mat .* mat';a = a(:);res = all(a == 1);
end

  对于某个正互反矩阵,若满足秩为一,即:
{aij>0a11=a22=⋯=ann=1[ai1,ai2,…,ain]=ki[a11,a12,…,a1n]\left\{ \begin{aligned} a_{ij}>0 \\ a_{11} = a_{22} = \dots = a_{nn} = 1\\ [a_{i1}, a_{i2}, \dots, a_{in}] = k_i[a_{11}, a_{12}, \dots, a_{1n}] \end{aligned} \right. ⎩⎪⎨⎪⎧​aij​>0a11​=a22​=⋯=ann​=1[ai1​,ai2​,…,ain​]=ki​[a11​,a12​,…,a1n​]​
  则称该矩阵为一致性矩阵。

  而检验一个正互反矩阵是否接近于一致性矩阵的过程叫做一致性检验。其过程如下:

function [res, CR] = func(mat)RI = [0.00   0.00    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];[n, ~] = size(mat);lambda = max(eig(mat));CI = (lambda - n) / (n - 1);CR = CI / RI(n);res = CR < 0.1;
end

三、求权重的三种方法

  假设对于景色这一评判标准,对应的矩阵是:

① 算术平均法求权重


function res = func(mat)[n, ~] = size(mat);res = sum((mat ./ repmat(sum(mat), n, 1)), 2) / n;
end

② 几何平均法

function res = func(mat)[n, ~] = size(mat);res = prod(mat, 2) .^ (1 / n);res = res / sum(res);
end

③ 特征值法(最常用)

function res = func(mat)[v, d] = eig(mat);d = diag(d);a = v(:, d == max(d));res = a / sum(a);
end

【Matlab数学建模】层次分析法相关推荐

  1. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  2. 数学建模层次分析法例题及答案_斩获国际特等奖!兰理工数学建模团队为百年校庆献礼...

    近日,2019年美国大学生数学建模竞赛(MCM-ICM)成绩正式公布. 兰州理工大学数学建模团队再创佳绩,分别获得国际特等奖(Outstanding Winner)1项.一等奖(Meritorious ...

  3. [清风数学建模]层次分析法(AHP)笔记及代码实现

    本文章是学习清风老师数学建模视频后所做的笔记,其中一些图片及代码实现来源于清风老师的B站视频: [强烈推荐]清风:数学建模算法.编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilib ...

  4. 数学建模 层次分析法

    层次分析法介绍 层次分析法是对一些较为复杂而且模糊的问题做出分析的一种简易方法,它适用于解决难以完全定量的问题. 该方法在数学建模中运用较多,但是主观因素很大,特别是构造成对比较矩阵的时候,必须要有完 ...

  5. 数学建模 --- 层次分析法(AHP模型)

    层次分析法 评价类问题 该问题思路 选出相关指标,求各个指标之间的权重 和 对某个指标而言各个选择权重(分而治之思想) 计算每个方案的得分 层次分析法 层次分析法第一步 --- 层次结构图 层次分析法 ...

  6. 数学建模层次分析法一致性检验建立

    2023年2月11日,备赛美赛复习建模需要使用的算法.在复习层次分析法的过程可以发现,层次分析法建立判断矩阵时具有强主观性,这个时候就需要建立一致性检验,对模型的差异性进行评估. 计算一致性比例: ​ ...

  7. 数学建模-层次分析法

    决策 层次分析法原理 相对重要权值的确定 算法步骤 目标层 准则层 方案层 层次分析法解决旅游问题 B1~B5表示 5个属性对于三地的各个重要性 通过层次分析矩阵 得到 各个属性相对于目标的权重. 最 ...

  8. 数学建模|层次分析法笔记

    一.什么是层次分析法?  定义: 由目标.方案.指标三部分组成. 框架图: 1.含子准则: 2.方案多种(方案交叉): 3.一对多(一准则多方案,方案不交叉): 二.层次分析法如何设计? 层次分析法步 ...

  9. 数学建模层次分析法例题及答案_【热门推荐】影响力意志力创新力、数学建模简明教程...

    <影响力•意志力•创新力> 索书号:B848.4-49/1028 作者:邢群麟编著 出版社:浙江工商大学出版社,2018 馆藏地:新馆304室 简介:本书在总结众多成功人士经验的基础上, ...

  10. 数学建模 层次分析法 python计算权重

    这里用python语言来计算判断矩阵的权重,网上大部分是matlab语言,里面也包含一致性检验的函数,具体各函数使用方法详见代码注释的部分 import numpy as np a=np.array( ...

最新文章

  1. php下curl与file_get_contents性能对比
  2. python和excel的区别-Python与Excel 不得不说的事情
  3. php防止注入漏洞,php防止sql注入漏洞代码
  4. vscode 上刷leetcode算法题(含配置)
  5. IPM: Product 270015453 not scheduled in sales organization
  6. Git之删除远程分支
  7. virtualbox安装android6.0并设置分辨率为1920x1080x32
  8. 输入一个数,判断这个数的二进制有几个0,几个1(完整代码)
  9. MySQL CAST与CONVERT 函数的用法
  10. JavaSE02 数组的基本知识
  11. 容量规划的一些探讨与实践
  12. lumen mysql 事务_数据库事务不执行回滚?
  13. 量子电动力学和量子场论,多体系统的量子场论
  14. SD卡分区Linux,使用MiniTool Partition Wizard对SD卡进行EXT4格式分区
  15. 7年加工作经验的程序员,从大厂跳槽出来,遭遇了什么?
  16. android MediaPlayer 完成播放后无法再次播放
  17. 树莓派桌面多出个计算机,树莓派|计算机实验室之树莓派:课程 9 屏幕04
  18. Android模拟器下重力感应应用的开发-Simulator的使用
  19. html5设置春联,英文版春节对联
  20. 科大讯飞版ChatGPT提前内测!附申请方法

热门文章

  1. Sql loader使用教程
  2. 大数据理论与实践9 分布式数据仓库Inceptor
  3. 教你Java 代码性能优化小妙招,速速来看
  4. CCS各个版本软件的下载及安装说明(内涵有详细获取安装包以及步骤奥)
  5. 《软件方法》强化自测题-需求(2)
  6. matlab程序转成可执行文件,matlab程序如何生成可执行文件
  7. linux系统下JDK的下载安装和配置教程
  8. 基于Canvas和HTML+CSS3构建JavaScript弹幕库
  9. 精英主义 遗传算法 matlab,遗传算法matlab程序
  10. 制作linux u盘启动,制作Linux的U盘启动盘