-
数学建模01-层次分析法
2020-07-09 18:27:46层次分析法的运用主要分为以下几个步骤: 将问题条理化,层次化,构造出一个有层次的结构模型。层次分为三层:目标层,准则层和方案层。 比较同一层次元素对上一层次同一目标的影响,从而确定它们在目标中所占的...数学建模01-层次分析法
一.层次分析法
•日常工作、生活中的决策问题
•涉及经济、社会等方面的因素
•作比较判断时人的主观选择起相当大的作用,各因素的重要性难以量化(用于难以完全定量的复杂事情)1.基本步骤
层次分析法的运用主要分为以下几个步骤:
- 将问题条理化,层次化,构造出一个有层次的结构模型。层次分为三层:目标层,准则层和方案层。
- 比较同一层次元素对上一层次同一目标的影响,从而确定它们在目标中所占的比重。写出成对比较矩阵。
- 对所写矩阵进行一致性检验。
2.成对比较矩阵
标度 重要程度 1 两个元素同等重要 3 前者稍重要 5 前者明显重要 7 前者强烈重要 9 前者极端重要 2,4,6,8为上诉判断中间值。
设要比较的n个元素y={y1,……,yn}对目标Z的影响,确定它们在Z中的比重。每次取其中两个元素yi和yj,用aij表示yi与yj对Z的影响之比:
aij>0 , aji=1/aij (i,j=1,2,……,n)
A=(aij)称为成对比较矩阵或判断矩阵。满足上式的矩阵称为正互反阵。
3.例题1(实践以上步骤)
旅游问题:设置有三个地点供小张选择,长白山1,拉萨2,杭州3,他考虑的因素有费用
y1,景色y2,居住y3,饮食y4,交通y5。-
对以上问题进行分析和建模:
-
确定对目标的重要程度,写出成对比较矩阵。
A =
[1, 1/2, 4, 3, 3;
2, 1, 7, 5, 5;
1/4, 1/7, 1, 1/2, 1/3;
1/3, 1/5, 2, 1, 1;
1/3, 1/5, 3, 1, 1;]
B1 =
[1,2,5;
1/2,1,2;
1/5,1/2,1;]
B2 =
[1,1/3,1/8;
3,1,1/3;
8,3,1;]
B3 =
[1,1,3;
1,1,3;
1/3,1/3,1;]
B4 =
[1,3,4;
1/3,1,1;
1/4,1,1;]
B5 =
[1,1,1/4;
1,1,1/4;
4,4,1;] -
检验上成对比较矩阵的一致性并求出权重计算出结果。
4.代码片段
disp('请输入判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); x=ones(n,100); y=ones(n,100); m=zeros(1,100); m(1)=max(x(:,1)); y(:,1)=x(:,1); x(:,2)=A*y(:,1); m(2)=max(x(:,2)); y(:,2)=x(:,2)/m(2); p=0.0001;i=2;k=abs(m(2)-m(1)); while k>p i=i+1; x(:,i)=A*y(:,i-1); m(i)=max(x(:,i)); y(:,i)=x(:,i)/m(i); k=abs(m(i)-m(i-1)); end a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp('特征值法求权重:'); disp(w); %算数平均法求权重 sum_a = sum(A); [n,n] = size(A); sum_a = repmat(sum_a,n,1); stand_a = A./sum_a; x = sum(stand_a,2)/n; disp('算数平均法求权重:'); disp(x); %几何平均法求权重 prduct_a = prod(A,2); prduct_n_a = prduct_a.^(1/n); z = prduct_n_a./sum(prduct_n_a); disp('几何平均法求权重:'); disp(z); %以下是一致性检验 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]; CR=CI/RI(n); if CR<0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR); end
以上代码执行后输入需要计算的矩阵即可。
(以上文章及代码在查看各种网课和相关资料后整理自用。)
-
层次分析法用法和概念
2017-08-23 09:37:242.层次分析法的具体用法: 1.分层。建立问题目标,影响因素,备选方案等。以选择游玩地点为例,则问题的目标是选择游玩地点,而游玩地点由多个因素所决定,所以这些决定因素就可以被分为第二层。 举例可以列出如下...1.层次分析法式针对多属性问题的一种解决办法。将每个属性对问题目标的影响权重都列出来,然后利用矩阵求解的方法解决问题,选出较为优秀的方案。
2.层次分析法的具体用法:
1.分层。建立问题目标,影响因素,备选方案等。以选择游玩地点为例,则问题的目标是选择游玩地点,而游玩地点由多个因素所决定,所以这些决定因素就可以被分为第二层。
举例可以列出如下几个因素:风景,交通,价格,饮食等。确定了影响因素之后,我们还要确定我们可以选择的方案,举个例子就是可以选择的游玩地点,比如桂林,湖北,大理等,这就是第三层。
2.列阵。分层之后,首先我们分析每个因素对我们的目标问题的影响,
以这个图为例,我们就将各个因素列出矩阵如图所示,我们按照查找资料或者其他方式,给出几个变量的比较,其中这些比值决定了几个变量之间的重要程度。
列出矩阵之后,我们可以调用matlab层次分析法脚本来反洗每个因素对目标的权重。层次分析法输出的准则特征向量就是每个因素的权重。我们首先可以将单个因素对目标的权重算出来,然后可以将每个选择对每个因素的权重计算出来,然后对于每个选择将因素的权重全都加起来做比较即可以计算出来最优方案。
-
数学建模学习笔记之评价问题层次分析法
2019-08-09 08:53:28层次分析法比较简单,是一个入门级的评价算法模型,模型的建立过程如下。 建立层次结构模型 层次一般分为三种: 最高层,准则层和方案层 一般而言层次结构模型用软件亿图图示画出(强烈建议使用9.0版本...数学建模学习笔记之评价问题层次分析法
-
我们评价的目标是什么?
-
我们为了达到目标有哪几种可选的方案?
-
评价的准则或者指标是什么?(我们根据什么来评价好坏)
层次分析法(AHP)
模型建立
层次分析法比较简单,是一个入门级的评价算法模型,模型的建立过程如下。
-
建立层次结构模型
层次一般分为三种:
最高层,准则层和方案层
一般而言层次结构模型用软件亿图图示画出(强烈建议使用9.0版本,因为9.2,9.4版本破解存在bug,这软件安装还用了我挺久)
-
构造出判断矩阵
通俗点讲,判断矩阵是在准则层之间进行两两比较建立的比较矩阵。
需要了解以下概念:
成对比较矩阵:比较n个因子对于某因素的影响,每次取两个因子进行比较,全部比较结果用矩阵表示。
标度:一般而言比较结果分为1~9个层次,也可成为标度,用来度量两个比较因子的关系。
标度 含义 1 相同重要/满意度 3 稍重要 5 明显重要 7 强烈重要 9 极端重要 2、4、6、8 上述的中间部分 其实就是一个量化过程,同理有1/2、1/3表示稍微不重要、不明显重要等。
那么比较旅游地下面五个影响因子我们可以得到成对比较矩阵(一般来说自己有根据的判断,此处只为示例):
这是不是表示了五个因子之间的重要关系?像不像权重?
那么也应该有下面的矩阵来进行往下一层的判断:
现在应该大致可以判断出:构造判断矩阵本质上来讲就是在一层一层对因子进行加权的操作
-
对判断矩阵进行一致性检验
概念理解
正互反矩阵:我们构造的矩阵比较矩阵都是,特点是斜对称相应的值互为倒数
一致矩阵:必为正互反矩阵、任意两行成比例、秩为1、只有最大特征值等于矩阵的阶、因此只有一个相应的特征向量
定理: n 阶正互反矩阵 A 为一致矩阵当且仅当其最大特征根λ max = n ,且当正
互反矩阵 A 非一致时,必有λ max > n
当正互反矩阵的非一致性越大时,所得到的特征向量就越不能反应真实情况,也就是可信度较低。因此我们要对于建立的比较矩阵进行一致性检验,检验步骤如下:
-
计算一致性指标CI
-
查找相应的平均随机一致性指标 RI,RI相当于官方给的标准一致性数值
-
计算移植性比例CR
当CR<0.10是被认为可以接受,不然就回去修改比较矩阵吧,尽量往一致性矩阵靠拢
-
-
计算权值得出判断结果
我们已经有了判断矩阵和它的特征值,理论上来讲就可以一步步相乘来计算出最底层相对于最高层的权值了,事实上也正是如此。一般而言是建立一个层次总排序来表示比较好:
通过最终权值的比较就可以得出最终评价结果。
代码实现
disp('请输入判断矩阵A') A=input('A='); [n,n] = size(A) %归一化,按行相加再除阶数 Sum_A = sum(A); SUM_A = repmat(Sum_A,n,1); Arm_A = A ./ SUM_A;%到此按列归一化结束 disp('算术平均法求权重的结果为:'); disp(sum(Arm_A,2)./n) %行相乘、再开方、最后归一化 Prduct_A = prod(A,2); Prduct_n_A = Prduct_A .^ (1/n); disp('几何平均法求权重的结果为:'); disp(Prduct_n_A ./ sum(Prduct_n_A)) %计算最大特征值对应特征向量 [V,D] = eig(A); Max_eig = max(max(D)); [r,c]=find(D == Max_eig , 1); disp('特征值法求权重的结果为:'); disp( V(:,c) ./ sum(V(:,c)) ) %选取特征值法来做一致性检验 CI = (Max_eig - n) / (n-1); RI=[0 0.0001 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]; %注意哦,这里的RI最多支持 n = 15 % 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数 CR=CI/RI(n); disp('一致性指标CI=');disp(CI); disp('一致性比例CR=');disp(CR); if CR<0.10 disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!'); else disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!'); end
总结
层次分析法属于比较简单的评价算法,所需步骤不多,而且由于很多判断都是自己主观臆断。并不推荐在比赛中使用,最多使用该算法对建模中的一小问回答。计算时,最好把三种方法计算结果都列写出来,再加一句考虑了模型适用性等。
整理了一点资料:https://download.csdn.net/download/yuanjiteng/11516969
-
-
论文研究 - 喀麦隆西吉姆姆的最佳油棕地块种植建模:加权线性组合,模糊层次分析法和效用函数相结合的GIS...
2020-05-22 01:39:15在同一个GIS环境中,加权线性组合(WLC)和模糊层次分析法(FAHP)分别强调了能力和适用性之间的细微差别,而效用函数(UF)有助于评估对可持续性方面的考虑。 最初的结果包括八层,分别代表自然条件,即降雨,温度... -
降维分析:人类发展指数法(IFI法)
2021-02-20 16:56:34人类发展指数法(IFI法)是平均数方法的一种. 平均数方法是降维分析里面最基础的方法. 比如加权平均, 算术平均, 调和平均等等. 但是注意平均数方法只能把维度降到 1 维. ... 分为以下几部. 带尺寸的图片: ...人类发展指数法(IFI法)是平均数方法的一种. 平均数方法是降维分析里面最基础的方法. 比如加权平均, 算术平均, 调和平均等等. 但是注意平均数方法只能把维度降到 1 维.
我只弄清楚了这个算法的流程和简单的几何意义, 深层次的为什么这么做以及适用的范围还不得而知.
本质上这是一种加权平方平均法, 将一大堆的权重值 Ai 降维成一个变量 IFI. 分为以下几部.
带尺寸的图片:
-
matlab在数据包络分析中的应用_DEA (数据包络分析)介绍及 python3 实现
2020-11-24 02:40:311 (重复了好几次的)前言使用比较...如综合指数法、模糊综合评判法、层次分析法、功效系数法等。这些方法都依赖于 “专家” 的权重或较多独立个体的评判偏好。客观赋权法: 根据各指标间相关关系或各指标值变异程度... -
python聚类分析顾客_聚类分析-python
2020-12-03 14:34:23聚类根据方法大致可以分为以下几种:(1)基于划分的方法:给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K算法:K-MEANS算法、K-MEDOIDS算法、CLARANS算法(2) 基于层次的方法... -
需求分析专项练习
2020-06-17 17:18:281.马斯洛需求层次理论低到高按层次分为五种,分别是:生理需求、安全需求、社交需求、尊重需求和...累积贡献率法要求几个因子的贡献率加起来大于85% 4.用户需求分析中,为了洞察用户的真实需求,以下最适合的方法是:参 -
数据挖掘--聚类分析
2014-02-28 20:25:07聚类分析的算法可以分为以下几大类:划分法、层次法、基于网格的方法、基于密度的方法和基于模型的方法。以下是集中常见聚类分析的基本思想: 1. 划分法(partitioning methods) 给定一个由n远足或数据组成的... -
本科毕业设计开题报告(学生电子作业提交与分析系统的设计与实现V2)
2018-08-15 10:26:05本系统按功能分为以下几个模块: (1)管理员用户功能模块:要求实现增加课程,学生、教师角色帐号及课程添加更新,用户登录、密码更换等功能。 (2)学生用户功能模块:要求实现新用户注册,用户登录,教师发布的... -
C语言实现K-Means算法
2021-01-20 06:03:56一、聚类和聚类算法 聚类,就是将数据对象划分成若干个类,在同一个类中的对象具有较高的相似度,而不同的类相似度较小。...在数据挖掘领域,聚类分析算法可以分为一下几个大类,包括划分法、层次法、基于密度的 -
计算机二级公共基础知识
2011-04-30 14:00:09二叉树具有以下几个性质: 性质1:在二叉树的第k层上,最多有2k-1(k≥1)个结点。 性质2:深度为m的二叉树最多有2m-1个结点。 性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。 ... -
软件工程-理论与实践(许家珆)习题答案
2011-01-12 00:49:42还有知识工程方法,例如,场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等 。 (2) 模拟和分析需求 需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如... -
计算机二级C语言考试题预测
2010-06-08 18:29:34(17) 软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及(B) 注:P66 A. 阶段性报告 B. 需求评审 C. 总结 D. 都不正确 (18) 下述关于数据库系统的叙述中正确的是(A) A. 数据库... -
二级C语言公共基础知识
2009-11-20 11:26:03(17) 软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及______。(B) A. 阶段性报告 B. 需求评审 C. 总结 D. 都不正确 (18) 下述关于数据库系统的叙述中正确的是______。(A) A.... -
北大青鸟ACCP 6.0 软件开发初级程序员:使用C#语言开发数据库应用系统.pdf
2012-07-13 14:30:24分层次深入:主要分为初次使用、理解加深和灵活应用这三个层次。学员理解为更为透彻,掌握更为牢固。 逆向设计确保就业——专业分析5362条招聘信息 ——深入访谈386家用人企业 ——定制2份行业人才需求标准... -
2.4.8 在交换机中用户权限分为几个级别? 2.4.9 在路由器的配置过程中查询以S开头所有命令的方法是? 2.5.0 第一次配置路由器时可以使用的方法为? 2.5.1 在何种状态下可以为路由器改名? 2.5.2 某公司申请到一...
-
北大青鸟ACCP 6.0 软件开发初级程序员:使用Java实现面向对象编程.pdf
2012-07-13 20:15:12分层次深入:主要分为初次使用、理解加深和灵活应用这三个层次。学员理解为更为透彻,掌握更为牢固。 逆向设计确保就业——专业分析5362条招聘信息 ——深入访谈386家用人企业 ——定制2份行业人才需求标准... -
北大青鸟ACCP 6.0 软件开发初级程序员:职业修养和进阶项目训练高级篇
2012-07-13 21:40:27分层次深入:主要分为初次使用、理解加深和灵活应用这三个层次。学员理解为更为透彻,掌握更为牢固。 逆向设计确保就业——专业分析5362条招聘信息 ——深入访谈386家用人企业 ——定制2份行业人才需求标准... -
软件工程知识点
2012-12-02 21:34:25它包含:软件定义、软件开发、软件运行维护三个时期,并可以细分为可行性研究、项目计划、需求分析、概要设计、详细设计、编码实现与单元测试、系统集成测试、系统确认验证、系统运行与维护等几个阶段。 软件定义... -
AutoCAD VBA二次开发教程.PDF
2015-07-01 12:31:25三点法创建UCS、在任意平面上创建图案填充、创建正多面体和创建偏心圆台都以数学知识为基础,解决几个在三维建模中应用的典型问题。 第10章讨论打印和布局的问题。本章仅提供了批量打印的程序。 第11章介绍了扩展... -
软件工程教程
2012-07-06 23:10:29顺序图、协作图:单用例中几个对象的行为 顺序图突出顺序,协作图着重对象间链接关系 项目三 项目市场调研 任务1. 系统的研发背景 任务2. 软件开发计划 油画创作背景 波洛克 《1948年第五号》 1.4亿$,最昂贵画作... -
这里我总结了几个技巧: 看题目的数据范围, 看能否暴力模拟 暴力枚举所有可能的算法往上套,比如图的题目。 总结和记忆解题模板,减少解题压力 以下是我列举的经典题目(带 91 字样的表示出自 91 天学算法活动)...
-
《计算机操作系统》期末复习指导
2009-12-30 10:57:55一般来说同步反映了进程之间的协作性质,往往指有几个进程共同完成一个任务时在时间次序上的某种限制,进程相互之间各自的存在及作用,通过交换信息完成通信。如接力比赛中一组队员使用接力棒等。 进程互斥... -
C++程序员面试宝典
2013-04-01 13:36:19本书内容大多取材于各大IT公司的面试题,详细分析了应聘C/C++程序员职位的常见考点。本书主要内容包括:面试流程及准备、英语面试、电话面试、C/C++语言基础、流程控制、输入/输出、预处理、内存管理、指针、面向... -
C语言程序设计标准教程
2009-05-22 18:41:512. C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。 (1)有返回值函数 此类函数被调用执行完后将向调用者返回一个执行结果, 称为函数返回值。如... -
哈佛大学职业经理MBA全套讲义
2008-10-08 19:15:54是指以公司制为主体的市场经济的基本成份,它包含两个层次的含义:一是作为市场经济的基本成份,凡符合市场经济要求的,与市场经济要求相适应的企业制度均可称为现代企业制度。二是指公司制为核心的具体形式,按公司... -
数据库系统基础:初级篇(第5版)(讲述数据库系统原理的经典教材)--详细书签版
2013-04-05 13:45:321.4.4 系统分析员和应用程序员(软件工程师) 11 1.5 幕后工作者 11 1.6 使用DBMS方法的优势 12 1.6.1 控制冗余 12 1.6.2 限制非授权的访问 12 1.6.3 为程序对象提供持久性存储 13 1.6.4 ... -
Excel图表实战技巧精粹
2013-01-04 17:01:41通过对excel技术论坛上上百万提问的分析与提炼,本书汇集了用户在使用excel图表过程中最常见的需求,通过190多个技巧的演示与讲解,将 excel高手的过人技巧手把手教给读者,并帮助读者发挥创意,灵活有效地使用excel... -
传智播客扫地僧视频讲义源码
2019-04-03 21:54:2220_信息系统框架集成第三方产品案例_几个重要的面向对象思想_传智扫地僧 21_作业 文档和源码 01_上一次课程回顾 02_数组指针语法梳理 03_函数指针语法梳理_传智扫地僧 04_函数指针做函数参数思想剖析_传智扫地僧 05_...
-
积攒了不少学习渠道和方法,分享给大家
-
2014年重庆理工大学《局域网技术与组网工程》期末考试试卷.pdf
-
IFIX简单历史报警显示功能.docx
-
【论文写作】毕业论文降重技巧
-
呆逼萌新的小程序。。。。。
-
MySQL 管理利器 mysql-utilities
-
maven更新慢等问题换镜像
-
Python函数库深度详解(1)
-
CISA培训与认证精讲全套视频.txt
-
人事管理系统-Java类代码资源
-
09_Redis的事物
-
网络安全等级保护等级测评实施培训-公安部.pdf
-
MySQL 查询与高级查询(多表、嵌套和正则表达式)
-
华为1+X——网络系统建设与运维(高级)
-
2014年重庆理工大学《软件质量保证与测试》两套期末考试试卷.pdf
-
第一次云服务器部署
-
Linux挂载exfat格式U盘
-
基于Qt的LibVLC开发教程
-
Educational Codeforces Round 105 (Rated for Div. 2) D题-Dogeforces(构造+并查集)
-
7-Verilog HDL二分频与三分频设计.7z