清风数学建模——层次分析法

news2024/11/15 10:39:54

层次分析法

哈希表 你真的懂吗 (1)

文章目录

  • 层次分析法
    • 评价类问题可以用打分来解决
      • 1.通过查阅资料选定指标
      • 2.画出权重表格并填写
      • 2.1.判断矩阵
      • 一致矩阵
      • 2.3一致性检验的步骤
        • 先算一致性指标CI
        • 根据表格查找n对应的RI(平均随机一致性指标),表格一般会在题目中给出
        • 计算一致性比例CR
        • 若得出CR<0.1,判断说明判断矩阵的一致性可以接受;若CR>=0.1,判断说明矩阵的一致性不能接受,需要对判断矩阵进行纠正。
      • 3.计算判断矩阵权重
      • 3.1算数平均法计算权重
        • 权重进行归一化处理
        • 若判断矩阵是一致矩阵,任选一列计算权重
        • 若判断矩阵不是一致矩阵,对不同列分别计算权重,最后计算平均权重
      • 3.2几何平均法求权重
      • 3.3特征值法求权重
        • 若判断矩阵为一致矩阵,其特征值为n,其余特征值为0
      • 3.4最后将计算结果填入权重表格
      • 4.汇总结果得到权重矩阵
      • 5. 计算各方案的得分
      • 层次分析法在论文中体现的步骤
      • 层次分析法的局限性
      • 算数平均法计算权重代码
      • 几何平均法求权重代码
      • 特征值法求权重代码
      • 计算一致性检验代码
      • 计算一致性检验代码

提示:资料可以从知网,万方,百度学术,谷歌学术等平台上搜索

image-20230723163927046

评价类问题可以用打分来解决

评价类问题应该从这三个方面中切入

  1. 我们评价的目标是什么?
  2. 我们为了达到目标有哪些选择方案?
  3. 评价的指标是什么?
  • 前两个问题可以在题目中得出,第三个问题要通过提炼题目或者搜索得出
  • 总结一下:通过题目得出我们评价的目标是什么,然后推断出几种选择方案,再通过评价的指标給选择方案打分,最终选择出最优方案。

通过查找资料对比得出权重

image-20230722235144824

  • 计算得出指标对应权重,指标权重加起来为1;然后根据对象查找指标定义权重得分,根据不同对象的横向对比得出不同对象的同一指标权重得分,其中同一个指标的得分相加为1;最后用对对象的得分*指标权重加总求和,选出最大总和的对象

接下来通过分析题目推导层次分析法的步骤

  • 小明同学想去旅游,在网上查阅攻略后,选定了苏杭,北戴河,桂林三处名胜作为旅游景点,请通过确定评价指标、形成评价体系来为小明同学选择最佳的方案。

1.通过查阅资料选定指标

image-20230728191902723

现在我们来回答一下评价类问题的三个切入问题

  1. 我们评价的目标是什么?

为小明同学选择最佳的旅游景点

  1. 我们为了达到这个目标有哪几种可选的方案?

三种,分别是去苏杭、去北戴河和去桂林

  1. 评价的准则或者说指标是什么?(我们根据什么东西来评价好坏)

景色、花费、居住、饮食、交通

2.画出权重表格并填写

  • 先做出该表格然后一一分析填空

image-20230728192113829

  • 因为这里关系到三个景点和五种指标,若一起进行分析的话会非常困难,因此在这里我们只需要两两指标比较,根据比较结果推算出权重。也因此有了下面这个两两比较表示重要程度的表格

image-20230723164241487

2.1.判断矩阵

  • 根据两两指标比较得出的结果可以作出一个表格,该表格被称为判断矩阵。

image-20230723164708236

  • 根据所得资料将两两对象的指标相互比较,得出对应的元素aij(指标i与指标j相比i的重要程度),然后作出该矩阵

  • 该矩阵若满足:

    1. i==j时即两指标相同因此aij相同记为1
    2. aij>0且aijxaji=1

    那么将这样的矩阵称为正互反矩阵,这个矩阵在层次分析法中作为判断矩阵(如a13就可以表示为景色的重要程度比居住要介于稍微重要和明显重要之间。)

    此时小明根据两两指标对比得出结果,依次填到判断矩阵中。但实际上我们参加比赛的时候不会有小明帮我们填,需要我们通过查找资料,计算,推断得出结果。

    另外判断矩阵满足某些条件后是一致矩阵,一致矩阵是判断矩阵的一种形式。

一致矩阵

image-20230723173919106

  • 能由以下两个公式
    a i j = i 的重要程度 / j 的重要程度, a j i = j 的重要程度 / i 的重要程度 a_{ij}=i的重要程度/j的重要程度,a_{ji}=j的重要程度/i的重要程度 aij=i的重要程度/j的重要程度,aji=j的重要程度/i的重要程度

得出下面的公式
a i k = i 的重要程度 / k 的重要程度 = a i j ∗ a j k a_{ik}=i的重要程度/k的重要程度=a_{ij}*a_{jk} aik=i的重要程度/k的重要程度=aijajk

即在判断矩阵的基础上,满足aijxajk=aik则该矩阵为一致矩阵。根据该公式还能得出该矩阵满足行之间成倍数关系、列之间成倍数关系

image-20230728195344984

  • 当判断矩阵是一致矩阵时,特征值=一致矩阵主对角线的加总即为n
  • 特征值为n时,对应的特征向量为矩阵的第一行
  • 当矩阵不是一致矩阵时,令判断矩阵为行列式,并且主对角线同时减同一个数,令该行列式为0,解出来该数就是该判断矩阵的特征值,特征值可能会有多个解

image-20230729103800625

另外可能会有人会把这里提到的正互反矩阵和线性代数中的正交矩阵混淆,这里我说明一下:

正交矩阵和正互反矩阵是两个不同的概念。正交矩阵是一个方阵,其列向量两两正交且长度为1。它的转置矩阵与它本身相乘等于单位矩阵。正交矩阵表示的是线性变换中的旋转和镜像操作,保持向量的长度和间角不变。正互反矩阵是一个对称矩阵,其所有特征值都大于零。它满足对于任意非零向量x,aij>0,其中A为正互反矩阵。正互反矩阵表达的是二次型的正定性,用于描述优化问题中的约束条件或二次型优化的性质。虽然正交矩阵和正互反矩阵在某些特殊情况下可能有一些重叠,但它们的定义和应用领域是不同的。

image-20230724191627085

  • 当判断矩阵满足aijxajk=aik即判断矩阵是一致矩阵时,最大特征值为n;当判断矩阵不算一致矩阵时,一定满足最大特征值大于n,且矩阵越不一致,最大特征值与n相差越大
  • 特征值的计算:令判断矩阵为方阵A,λ
  • 以上图为例,当a=4时,此时特征值为3,即是特征值随a变化而变化的最小值

总结一下:

  1. 两两指标对比画图表得出判断矩阵,判断矩阵的必须满足i==j时即两指标相同既为1aij>0且aijxaji=1
  2. 判断矩阵的基础上,矩阵若满足各行(各列)之间成倍数关系,则该矩阵为一致矩阵
  3. 一致矩阵的特征值为n,当矩阵不是一致矩阵时,,一定满足最大特征值大于n,且矩阵越不一致,最大特征值与n相差越大

image-20230723183545504

可以看到上图不满足aijxajk=aik所以不算一致矩阵,而图二满足是一致矩阵,那么在使用判断矩阵求权重之前必须对其进行一致性检查。

2.3一致性检验的步骤

image-20230724192347989

  1. 先算一致性指标CI

公式如下:
C I = λ m a x − n / n − 1 CI=\lambda_{max}-n/n-1 CI=λmaxn/n1

即为特征值的最大值-矩阵对角线元素的个数除以矩阵对角线元素的个数-1

  1. 根据表格查找n对应的RI(平均随机一致性指标),表格一般会在题目中给出

  2. 计算一致性比例CR

公式如下:
C R = C I / R I CR=CI/RI CR=CI/RI

  1. 若得出CR<0.1,判断说明判断矩阵的一致性可以接受;若CR>=0.1,判断说明矩阵的一致性不能接受,需要对判断矩阵进行纠正。

  2. 当CR>=0.1时,说明矩阵的一致性不能接受,这时候需要将矩阵往一致矩阵的上调整,既使得矩阵满足各行各列成倍数关系

对判断矩阵进行完一致性检验后,就要对判断矩阵计算权重了

3.计算判断矩阵权重

3.1算数平均法计算权重

  1. 权重进行归一化处理

image-20230725110309294

若判断矩阵是一致矩阵,任选一列计算权重

  • 若判断矩阵是一致矩阵, 说明行之间成倍数关系,列之间也成倍数关系,所以归一化时选任意一列算出来的结果都是一样的。归一化是指计算某个元素在整个总体的占比。在这里是计算元素在列中的占比

image-20230725110659494

若判断矩阵不是一致矩阵,对不同列分别计算权重,最后计算平均权重

  • 若矩阵不是一致矩阵,说明列之间不是成倍数关系,那么每列计算出来的权重并不一样,这时候就需要对全部列分别计算权重,最后求平均权重

image-20230725111326239

image-20230725111339173

总结得出以下步骤和公式:

image-20230725115527848

image-20230725121625913

3.2几何平均法求权重

image-20230725124604289

( ∏ j = 1 n a i j ) / ∑ k = 1 n ( ∏ k = 1 n a k j ) 1 / n (\prod^n_{j=1}a_{ij})/\sum^n_{k=1}(\prod^n_{k=1}a_{kj})^{1/n} (j=1naij)/k=1n(k=1nakj)1/n

3.3特征值法求权重

image-20230729112026661

若判断矩阵为一致矩阵,其特征值为n,其余特征值为0

对应的特征向量为一致矩阵的第一列

  • 权重归一化:

特征值 / 特征向量 = n / 第一列总和 特征值/特征向量 =n/第一列总和 特征值/特征向量=n/第一列总和

  • 另外,若比赛时间足够充裕,建议以上三种计算方法都用上,用上后可以加上一句:为了保证结果的 稳健性,本文采用了三种方法分别求出了权重后计算平均值,再根据得到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效

3.4最后将计算结果填入权重表格

image-20230729112209399

4.汇总结果得到权重矩阵

image-20230729112451968

5. 计算各方案的得分

image-20230729112549760

  • 根据得分选择分数最高的对象

层次分析法在论文中体现的步骤

总体来说,在论文中体现分为以下几步:

  1. 分析系统中各因素之间的关系,建立系统的递阶层次结构

image-20230729112955390

  • 该图可以用PPT的smartArt生成,也可以用亿图图示,ProcessOn

具体步骤可以参考如下

image-20230729113208599

  1. 对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)

image-20230729113229887

  1. 根据判断矩阵两两比较计算得出结果,汇总结果得出权重矩阵

image-20230729113412007

  1. 根据权重矩阵计算得出最高分数的对象,选择该最高分对象作为最终目标

层次分析法的局限性

  • 评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异 可能会很大,平均随机一致性指标RI的表格中n的个数最多是15
  • 若决策层中指标的数据是已知的,那么我们如何利用这些数据来使得评价的更加准确呢?我们使用层次分析法是通过查找数据计算推导决策层和目标层,然而当决策层中的指标数据是已知的,层次分析法的价值就不再体现,这时候用其他算法会更好

算数平均法计算权重代码

image-20230801000658710

  • 先假定矩阵A为判断矩阵,输入matlab中。其中matlab默认显示是小数

image-20230801000805618

  • 将矩阵A进行按列求和然后赋值給col_A矩阵

sum(A):对矩阵A进行求和,默认是列向量求和;sum(A,2)表示对行向量求和

image-20230801001002997

  • 根据size函数求得矩阵的行数x和列数y,因为这里矩阵A是方阵,因此x=y

size(A):查看矩阵A的行数和列数

image-20230801001205637

  • 将求和矩阵col_A的行数设置为A矩阵的行数,即为后续归一化提供分母

image-20230801001706046

  • 将原先的判断矩阵A的各个元素作为分子,把总和矩阵sum_A的各个元素作为分母,进行归一化

image-20230801002234280

  • 将归一化的矩阵nor_A按行求和

image-20230801002901880

  • 最后求出平均权重

几何平均法求权重代码

image-20230801132957945

  • 按行将各个元素相乘,得到一个列矩阵row_A

sum(A):对矩阵A进行求积,默认是列向量求积;sum(A,2)表示对行向量求积

image-20230801133126643

  • 求出判断矩阵A的列数n,因为这里的矩阵A是方阵,所以列数=行数=5

image-20230801133237284

  • 将列向量row_A的每个元素都开1/n次方得到新的列矩阵den_A

image-20230801133902985

  • 将列矩阵den_A的每个元素除以矩阵den_A的总和

特征值法求权重代码

image-20230801140238090

  • 求A矩阵的特征向量V和特征值D

E=eig(A),E为特征值;[V,E]=eig(A),V是特征向量,E是特征值,且特征值对应所在的列的特征向量,且E是以对角矩阵的方式呈现

image-20230801140848533

  • 求出最大特征值

max(A):对矩阵A求最大:每一列中取最大,返回一个行矩阵。max(max(A)):每列最大中取最大数值

image-20230801141210424

  • 求出最大特征值对应的行标r和列标c,即能够根据最大特征值的位置找到对应的特征向量

D == max_eig表示为在矩阵内找到与max_eig相等的元素,找到返回1没找到返回0。[r,c] = find(D == Max_eig , 1)表示:find函数的参数一的返回值与find的参数二1相比较,若相等返回参数一对应结果的行标和列标。

image-20230801143345469

  • 找到最大特征值所在的列,该列即为对应的特征向量,然后进行归一化

计算一致性检验代码

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

image-20230801144312330

  • Max_eig是最大特征值,由于判断矩阵A是方阵,因此n是矩阵A的行数也是列数

image-20230801144437634

  • 根据题目输入一致性指标RI

image-20230801144521344

  • 计算一致性比例CR

  • 若得出CR<0.1,判断说明判断矩阵的一致性可以接受;若CR>=0.1,判断说明矩阵的一致性不能接受,需要对判断矩阵进行纠正。
    对应的特征向量,然后进行归一化

计算一致性检验代码

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

[外链图片转存中…(img-Wu6k78Gr-1690872654596)]

  • Max_eig是最大特征值,由于判断矩阵A是方阵,因此n是矩阵A的行数也是列数

[外链图片转存中…(img-OkTUQOkZ-1690872654596)]

  • 根据题目输入一致性指标RI

[外链图片转存中…(img-RlICO43U-1690872654596)]

  • 计算一致性比例CR

  • 若得出CR<0.1,判断说明判断矩阵的一致性可以接受;若CR>=0.1,判断说明矩阵的一致性不能接受,需要对判断矩阵进行纠正。

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

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

相关文章

现场服务管理系统有哪些?5个现场服务管理软件对比

现场售后服务管理软件的使用者通常是机械设备、家电、仪表仪器、医疗器械等厂商的工程师和客服调度人员。现场售后服务管理软件可将服务过程标准化&#xff0c;包括工单派发、服务过程步骤、配件订购出货和付款、客户评价都有系统支持&#xff0c;有的现场售后服务软件还支持数…

有理逼近 C++详解

有理逼近 C详解 有理逼近问题描述输入输出格式输入格式输出格式 输入输出样例输入样例输出样例&#xff1a; 解法代码代码解法变量解析算法 注&#xff1a;本文支持互3~ 有理逼近 问题描述 输入输出格式 输入格式 输入文件的第一行为 P 、 N P、N P、N&#xff0c;其中 P …

MongoDB文档--架构体系

阿丹&#xff1a; 在开始学习先了解以及目标知识的架构体系。就能事半功倍。 架构体系 MongoDB的架构体系由以下几部分组成&#xff1a; 存储结构&#xff1a;MongoDB采用文档型存储结构&#xff0c;一个数据库包含多个集合&#xff0c;一个集合包含多个文档。存储形式&#…

ReID网络:MGN网络(2) - 模型定义

1. 概述 MGN网络使用ResNet50((Before res_conv4_2) )作为Backbone进行特征的析取。为了实现多粒度(Multiple Granularities)&#xff0c;MGN从ResNet50的网络的尾部开始&#xff0c;将后续网络划分为3个分支&#xff0c;对应三个不同的粒度。 2. ResNet ResNet 网络是在 20…

【SQL应知应会】表分区(三)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区…

CountdownLatch(门闩)

CountDownLatch是一个同步工具类&#xff0c;用来协调多个线程之间的同步&#xff0c;或者说起到线程之间的通信&#xff08;而不是用作互斥的作用&#xff09;。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后&#xff0c;再继续执行。使用一个计数器进行实…

前端视频播放技术概览

转眼间&#xff0c;2023 年已进入下半场&#xff0c;在这样一个时间节点下&#xff0c;长视频平台如爱奇艺、优酷、腾讯视频等&#xff0c;以及短视频平台如抖音、快手等&#xff0c;对大家来说早已是司空见惯的事物。然而&#xff0c;在我们追剧、刷弹幕的时候&#xff0c;很少…

超越AI的未来:ChatGPT菜鸟级使用流程

文章目录 1. ChatGPT简介2. 准备工作3. 安装OpenAI Python库4. 创建ChatGPT会话5. 发起对话请求6. 处理ChatGPT响应7. 示例应用8. 结语 引言&#xff1a; 随着人工智能技术的不断发展&#xff0c;自然语言处理(NLP)领域的一个重要突破是开放式AI语言模型。OpenAI的ChatGPT&…

系统架构设计师-软件架构设计(6)

目录 一、物联网分层架构 二、大数据分层架构 三、基于服务的架构&#xff08;SOA&#xff09; 1、SOA的特征 2、服务构件与传统构件的区别 四、Web Service&#xff08;WEB服务&#xff09; 1、Web Services 和 SOA的关系 五、REST(表述性状态转移) 六、ESB&#xff08;…

linux系统编程重点复习--进程之间通信

目录 复习目标 2 进程间通信相关概念 2.1 什么是进程间通信 2.2 进程间通信的方式 3 管道-pipe 3.1管道的概念 3.2管道的原理 3.3管道的局限性 3.4创建管道-pipe函数 3.5父子进程使用管道通信 3.6 管道练习 3.7 管道的读写行为 3.8 如何设置管道为非阻塞 3.9 如何…

Maven设置阿里云路径(防止加载过慢)

<?xml version="1.0" encoding="UTF-8"?><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regardin…

git | git使用心得记录

公司里项目最近使用Git进行协作开发&#xff0c;总结一下使用心得 一、第一次用git&#xff0c;完全同步最新代码checkout 按照以下步骤操作 1、git init 2、git remote add origin 远程仓库的地址https://gitlab.xxxx.com.cn/xx/xx/xxx/Android/baseline/x.x.x.git(远程仓库…

剑指offer48.最长不含重复字符的子字符串

我一开始的想法是创建一个大小为26的int数组&#xff0c;下标为0对应的是‘a&#xff0c;25对应的是’z&#xff0c;然后一开始都赋为-1&#xff0c;用一个for循环从头遍历这个字符串&#xff0c;通过char c s.charAt(i)获得字符&#xff0c;然后c-97&#xff0c;就是它对应的…

《向量数据库指南》——向量数据库向专业化和智能化的发展趋势

随着数据的规模不断扩大和信息技术的发展,向量数据库在各个行业中扮演着越来越重要的角色。未来,随着技术的不断进步和市场需求的不断增长,向量数据库的应用将更加广泛和深入,同时也会出现更加专业化和智能化的趋势。 一、向量数据库的专业化发展 随着各个行业数据量的不…

【雕爷学编程】Arduino动手做(178)---超迷你哦,用徽商香烟盒做个智能小车2

早上去打羽毛球&#xff0c;路上捡到一个香烟盒子&#xff0c;于是就想尝试一下&#xff0c;捣鼓捣鼓。 经测试&#xff0c;控制器与电机使用同一组电源会互相干扰&#xff0c;故只好再加一组电池 商徽烟盒小车内部结构总算整好了&#xff0c;够迷你吧 小车轮子准备用矿泉水瓶盖…

【ChatGPT辅助学Rust | 基础系列 | Cargo工具】Cargo介绍及使用

文章目录 前言一&#xff0c;Cargo介绍1&#xff0c;Cargo安装2&#xff0c;创建Rust项目2&#xff0c;编译项目&#xff1a;3&#xff0c;运行项目&#xff1a;4&#xff0c;测试项目&#xff1a;5&#xff0c;更新项目的依赖&#xff1a;6&#xff0c;生成项目的文档&#xf…

Go学习第二天

Defer语句调用顺序 package mainimport "fmt"func main() {defer fmt.Println("main end1 先进后出")defer fmt.Println("main end2 后进先出")fmt.Println("main hello go 1")fmt.Println("main hello go 2") }重点&…

Android性能优化—LeakCanary内存泄漏检测框架分析。

一、什么叫内存泄漏、内存溢出&#xff1f; 内存溢出(out of memory)&#xff1a;是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;出现out of memory&#xff1b;比如申请了一个10M的Bitmap&#xff0c;但系统分配给APP的连续内存不足10M&#xff0c…

Cpp7 — 继承和多态

继承 -------- 面向对象的三大特性之一 面向对象的三大特性&#xff1a;封装、继承、多态 封装&#xff1a;把数据和方法都封装在一起&#xff0c;想给你访问的变成共有&#xff0c;不想给访问的&#xff0c;写成私有。 继承&#xff1a;继承是类设计层次的复用 多态&#…

物联网远程智能控制设备——开关量/正反转百分比控制

如今生产生活的便利性极大程度上得益于控制技术的发展&#xff0c;它改变了传统的工作模式&#xff0c;并将人们从【纯劳力】中解放出来。如今&#xff0c;随着科学技术的进步&#xff0c;控制器的种类及应用领域也越来越多。 物联网远程智能控制设备就是一种新型的、能够用于…