Matlab笔记_层次分析法020_第1页
Matlab笔记_层次分析法020_第2页
Matlab笔记_层次分析法020_第3页
Matlab笔记_层次分析法020_第4页
Matlab笔记_层次分析法020_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、20.层次分析法一、概述层次分析法Analytic Hierarchy Process, AHD是将要决策的问 题及其有关因素分解成目标、准那么、方案等层次,进而进行定性和定 量分析的决策方法.它的特征是合理地将定性与定量决策结合起来, 根据思维、心理的规律把决策过程细致化层次化、数量化.层次分析法广泛地应用到处理复杂的决策问题,而决策是基于 该方法计算出的权重,所以也常用来确定指标的权重.层次分析法的根本思路与人们对一个决策问题的思维、判断过 程大体上是一样的.例如,选购一台笔记本电脑,假设有三种不同品 牌款式的笔记本电脑A、B、C供选择.我们一般会根据价格、外观、 重量、用途、功耗、品牌等

2、一些准那么去反复比拟这个三个候选.首先,会确定这些准那么在自己心目中各占多大比重, 不同的人这种比重会有 很大差异喜欢玩游戏的人看重硬件性能和散热、预算有限的人看重价格等.其次,还会就每一个准那么将 A、B、C进行比照,比方 A 最廉价,B次之;C性能最好,B次之;C的品牌最知名等.最后, 将这两个层次的比拟判断进行综合,在 A、B、C中确定一台作为最 符合自己需求的电脑.二、算法步骤1 .将问题条理化、层次化,建立层次结构模型1最高层目标层一一只有一个元素:决策目标;2中间层准那么层一一考虑的因素,决策的准那么、子准那么;3最底层方案层一一决策时的备选方案、举措.层次分析法要解决的问题是,求

3、出最底层对最高层的相对权重,以此对最底层的方案、举措进行排序,选择最优方案.注1:为了防止两两比拟判断过于复杂,每层次中各元素所支配的元素一般不要超过9个,否那么应划分为假设干子层;注2:层次分析法只考虑相邻两个层次间自上向下的支配作用, 认为同一层次的元素间相互独立,假设考虑进来需要网络分析法ANP.例如前文提到的选购笔记本电脑的决策模型, 可以建立如下的层 次结构:港层此 w 为wc;电.a电脯.粉 格 耳逸哨噫记本电崖4在比拟第i个元素与第j2 .构造判断矩阵成比照拟矩阵 构造好层次模型后,针对某一层来讲,个元素相对于上一层某个因素的重要性时,使用数量化的相对权重aj来表示,假设共有n个

4、元素参与比拟,那么矩阵a11La1nA M O M (aij)nnan1Lann称为判断矩阵或成比照拟矩阵Saaty根据绝大多数人认知事物的心理习惯,建议用19及其倒数作为标度来确定aj的值.*ii-i 1冷稳度含义:比J强的重要程度相等解强搐强葩刈 ,3579其中,2, 4, 6, 8分别介于1, 3, 5, 7, 9对应的重要程度之间.显然,A中的元素满足:i) aij> 0; ii) aji = 1/aij; iii) aii =1称为正互反矩阵.例如,选购笔记本电脑模型中,可以根据实际三台电脑的重量得到电脑对准那么层B3的判断矩阵aij可以取笔记本电脑j与i的重量之比,重量越轻越

5、好:1 1/3 1/5Ab3 c 313/55 5/313 .层次单排序及判断矩阵的一致性检验通常用特征根法从判断矩阵导出,单一准那么下元素相对排序权重.7E乂右n阶正互反矩阵ajnxn满足aikakj = aij 对应aij =W i/Wj,故需要 aikakj =Wi/Wk/Wk/Wj = a.,那么称两 、n 为一致性矩阵.成比照拟的不一致情况A -«;1=2 二C; 一致比拟4=4C:C1;1 1/24 2 I7 - 卜4=8(£:不一致允许不一致,但要确定不一致的允许范围特征根法的根本思想是,当正互反矩阵ajnxn为一致性矩阵时, 对应于判断矩阵的最大特征根从ax

6、的特征向量,经归一化后使向量 中各元素之和等于1即为排序权向量,记为W, W的元素为同一层次 因素对于上一层次某因素相对重要性的排序权值, 这一过程称为层次 单排序.能否进行层次单排序,就看判断矩阵是否为一致性矩阵,有如下 定理:定理n阶正互反矩阵A为一致性矩阵的充要条件是,A的最大 特征值储ax = n.在实际操作中,由于客观事物的复杂性以及人们对事物判断比拟 时的模糊性,很难构造出完全一致的判断矩阵.因此, Satty在构造 层次分析法时,提出了一致性检验,所谓一致性检验是指判断矩阵允 许有一定不一致的围.一致性检验步骤如下:1计算判断矩阵A的最大特征值 乐ax;2)求出一致性指标(Con

7、sistencey IndeX :C.I. max nn 1C.I.=0表示完全一致,C.I.越大越不一致;3用随机模拟取平均的方法,求相应的平均随机一致性指标 R.I.,或者直接用Satty模拟1000次得到的R.I.表:矩阵阶数34567R, 1.由580. 90L 12L U1.32L 4【矩阵阶数101113RJ.L 4511.491. 51541.554计算一致性比率:c.R.嗡5判断,当C.R.<0.1时,认为判断矩阵A有满意的一致性;假设C.R.A0.1,应考虑修正判断矩阵 A.4.计算各元素对目标层的合成权重层次总排序为了实现层次分析法的最终目的,需要从上而下逐层进行各层

8、元素对目标合成权重的计算.设已计算出第k-1层nk-1个元素相对于目标的合成权重为:(k 1)/ k 1 k 1 . k 1、 Tw(Wi ,W2 ,L ,Wnk1)再设第k层的nk个元素关于第k-1层第j个元素j= 1,nk-1的单一准那么排序权重向量为:k /(k)(k)(k)TUj(U1j ,U2j ,L ,Unkj)上式对k层的nk个元素是完全的,假设某些元素不受 k-1层第j个元素(k)(k)L(k)11U12U1 nk 1(k)(k)L(k)21U22U2nk1MMOM(k),(k)L,(k)“1Unk2Unk 1uuU(k) u支配,相应位置用0补充,于是得到gx nk-1阶矩阵

9、:从而可以得到第k层的nk个元素关于目标层的合成权重向量:(k)(k) (k 1)w U w按递归展开得w(k) U(k)U(k1)L U w写成分量形式为nk i(k)(k) (k 1)wUi( )w( ), i 1,L ,nkj 1各层元素对目标层的合成排序权重向量是否可以满意接受,与单一准那么下的排序问题一样,需要进行综合一致性检验:设土层的琮合指惊分别为一致性指标C. 巴电机一致性指标R. L'L致性比率 C.RK 再设以第启一1m上第,元素为准那么的一致性指标为CJ产,平均一致性指斥为 氐I.产.=1,2.,冷I),那幺<G IJCUlCL)献即J(11 - IDJ I

10、(11 -12)R.L w ="i-L; 利用式Ci - in和式ni -12),可.算综合一致性比率(11 - 13)当C.R.(k)< 0,1时,那么认为层次结构在第k层以上的判断具有整体 满意的一致性.注:实际应用中,整体一致性检验常不予进行.主要原因是,整体考虑十分困难;其次假设每个单一准那么下的判断矩阵具有满意的一致 性,而整体达不到满意的一致性时,调整起来非常困难.另外,整体 一致性的背景也不如单一准那么下的背景清楚,它的必要性有待进一步 研究.三、Matlab实现实现层次分析法的Matlab函数:ahp.mfunction W,ahpResult = ahp(C)

11、%层次分析法%&n x 1的元胞数组,存储整个层次模型结构:第2层对第1层、第3层对 第2层、第n+1层对第n层%贸设第k层有m_k个元素,从左到右依次编号1,.,m_k%Ck也是元胞数组,k=1,.,n%Ck1,j存储受第j元素支配的第k+1层各元素的判断矩阵(j=1,2,.,m_k)%Ck2,j 存储第k+1层各元素是否受第k层第j元素支配的(m_k+1 )*1的逻辑数组,1表示支配,0表示不受支配%惬回方案层对目标层的最终权重向量%ahpResult为n x 1的元胞数组,存储层次分析过程各层的结果信息,ahpResultk也是元胞数组%ahpResultk1,j 返回第k+1层

12、所有元素相对第k层j元素的权重向量,第k+1层元素不受第k层j元素支配的权重为0%ahpResultk2,j 返回第k+1层所有元素相对于第k层第j元素的判断矩阵的最大特征值%ahpResultk3,j 返回第k+1层所有元素相对于第k层第j元素的判断矩阵的一致性比率C.R.RI=0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51;%平均随机一致性指标n = length(C);%马到C的长度n,于是知道模型总层数为n+1ahpResult = cell(n,1);% '存储各层结果信息for k = 1:nm_k = size(Ck,2)

13、;% k 层的元素个数ahpResultk = cell(m_k,1);for kk = 1:m_k%求第k+1层各元素对第k层kk元素的成比照拟矩阵的特征值和特征向量V,D = eig(Ck1,kk);maxD,ind = max(diag(D);%求最大特征值和其位置%为存储第k+1层所有元素相对k层kk元素的权重预留出空间,长度应等于Ck2,kk 的长度ahpResultk1,kk = zeros(length(Ck2,kk),1);%等相应正互反矩阵属于最大特征值的特征向量归一化后赋给ahpResultk1,kk 中相应位置% 这些位置由逻辑数组Ck2,kk决定ahpResultk1,

14、kk(Ck2,kk)=V(:,ind)/sum(V(:,ind);ahpResultk2,kk = maxD;% Ck1,kk正互反矩阵的最大特征值nn = size(Ck1,kk,1);% Ck1,kk 的阶数ahpResultk3,kk = (maxD-nn)/(nn-1)/RI(nn);% 相应的一致性比率C.R.endendW = ahpResult11,1;for k = 2:n% cat2,ahpResultk1,:把k+1层所有元素相对k层各个元素的权重向量横向排在一起生成权重矩阵 UAkW = cat2,ahpResultk1,:*W;end用该函数实现层次分析法的关键是,把整

15、个层次结构存入嵌套元 胞数组C中见程序注释:Ck存储第k+1层与第k层的结构k=1,n;设第k层有mk个元素,其中第j元素与第k+1层的结构关系存储 到Ck,j中j=1,mJ,需要存储的信息有:受第j元素支配的第k+1层各元素的判断矩阵第k+1层各元素是否受第k层第j元素支配即有没有连线 所以需要两个位置,即Ck1, j和Ck2, j.例1某工厂有一笔企业留成利润,需要决定如何分配使用.已经决定 有三种用途:奖金、集体福利举措、引进技术设备.考察准那么也有三 个:是否能调动职工的积极性、是否有利于提升技术水平、考虑改善 职工生活条件.建立如下层次模型:1.第2层对第1层三个元素 Ci, C2,

16、 C3都受A支配,判断矩阵C11,1为ACiCiCiG11/51/3q5i3C»31/31相应的逻辑数组 C12,1为true truetrue.2 .第3层对第2层第3层对第2层第1个元素C1受C1支配的只有两个元素 R和P2,判断矩阵C21,1为相应的逻辑数组 C22,1为true truefalse.第3层对第2层第2个元素C2受C2支配的只有两个元素P2和P3,判断矩阵C21,2为相应的逻辑数组 C22,2为false true true.3第3层对第2层第3个元素C3受C3支配的只有两个元素Pi和P2,判断矩阵C21,3为G巴厘Pi12P:1/21相应的逻辑数组 C22,3

17、为true truefalse.3 .有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数ahp.m即可故n=2C = cell(2,1);/n+1=3 层,C11,1 = 1 1/5 1/3;5 1 3;3 1/3 1;第1层(目标层A)的判断矩阵C12,1 = true truetrue;C21,1 = 1 1/3;3 1;断矩阵C22,1 = true truefalse;C21,2 = 1 1/5;5 1;断矩阵C22,2 = false true true;C21,3 = 1 2;1/2 1;断矩阵%第2层C层关于咐目应的逻辑数组%第3层P层关于第2层第1元素C1的判咐目应的逻

18、辑数组%®3层P层关于第2层第2元素C2的判咐目应的逻辑数组%®3层P层关于第2层第3元素C3的判咐目应的逻辑数组C22,3 = true truefalse;W,ahpResult=ahp(C);%H用 ahp 求解W %输出总排序的权重向量运行结果:W = 0.19840.27080.5308W就是方案层各个方案所占的比重,可见引进技术设备所占比 重最大,改善员工福利次之.表达在奖金分配上,即用全部留成利润 的53.08%引进技术设备,27.08%改善员工福利,19.84%发奖金.例2假设某人在制定食谱时有三类食品可选:肉、面包、蔬菜.这三类食品所含营养成分及单价如下表

19、所示:* A续生* A/E15Q0/( x«贸0,35270.37$面包o.oooe】L5】0.00«苴第温. -瓦曜假设该人体重为55kg,每天对各类营养的最小需求为维生素A7500IU维生素 B21.6338mg热量 Q8548.5kJ问题是:应如何制定食谱使得在保证营养的前提下支出最小单纯考虑问题条件,容易建立如下的线性规划模型:设选择肉X1,面包X2,蔬菜X3,那么有fmm,=0. 0275工+0, 006r +0, 0.7工,孔 a 0. 3527x)+ 0. OOO5j-2 + 25- 0x3?7500J0.0021X1 +0.0006*+0. 002t3>

20、;1, 6338IL 93工| + lL51x: + L 04x, >8548. 5l工工?.用Matlab求解线性规划问题的函数linprog,可以求出最优解:f = 0.0275;0.006;0.007;A = -0.3527 0.0005 25;0.0021 0.0006 0.002;11.93 11.51 1.04;b = -7500;1.6338;8548.5;options = optimset( 'LargeScale' , 'off, 'Simplex' ,'on');x,fval,flag= linprog(f,A

21、,b,0;0;0,infinfinf,options)x =0 687.5267 610.6420fval= 8.3997flag =1 %表示算法成功求解出的结果是,每天不吃肉,吃面包687.5267g,蔬菜610.642g,最低支出为8.40元.但实际考虑的话,这个方案是难以让人接受的,只考虑了营养够、价格低,没有考虑到营养均衡(需要吃一定量的肉).为此,我们先用层次分析法确定每天需要肉、面包、蔬菜的比重,再重新线性规划.建立如下的层次模型:注意:由于第2层支出因素D2直接支配第4层,需要在第3层 补上一个因素“补项B仍当作“支出看待,它只受D2支配, 并且支配D2的每个支配因素第4层的肉

22、Me,面包Br,蔬菜Ve.有了上面的层次结构,再根据偏好建立判断矩阵当然偏好因人而异:1.第2层对第1层判断矩阵:13C 1 1,11/ 3 1逻辑数组:C12,1=true true.2.第3层对第2层1第3层对第2层第1元素D1判断矩阵:1 12C 2 1,11121/ 2 1/2 1逻辑数组:C22,1=true truetrue false.第3层对第2层第2元素D2判断矩阵:C21,2=1逻辑数组:C22,2=false falsefalseture.3 .第4层对第3层第4层对第3层第1元素A判断矩阵用数据直接做比得到:10.3527/0.0005 0.3527/25C 3 1,1

23、0.0005/0.352710.0005/2525/0.352725/0.00051逻辑数组:C32,1=true true true.第4层对第3层第2元素B2判断矩阵用数据直接做比得到:10.0021/ 0.0006 0.0021/ 0.002C 3 1,20.0006/0.002110.0006/0.0020.002/0.00210.002 / 0.00061逻辑数组:C32,2=true true true.第4层对第3层第3元素Q判断矩阵用数据直接做比得到:111.93/11.5111.93/1.04C 3 1,311.51/11.93111.51/1.041.04/11.931.0

24、4/11.511逻辑数组:C32,3=true true true.第4层对第3层第4元素B判断矩阵用单价比的倒数,由于单价越高越不重要10,006 / 0.0275 0.007 / 0.0275C 3 1,40.0275/0.00610.007/0.0060.0275/0.007 0.006/0.0071逻辑数组:C32,4=true true true.4 .有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数ahp.m即可C = cell(3,1);C11,1 = 1 1/3;3 1;C12,1 = true(2,1);C21,1 = 1 1 2;1 1 2; 1/2 1/2 1;

25、C22,1=true truetrue false;C21,2=1;C22,2 = false,false,false,true;C31,1=1,0.3527/0.0005,0.3527/25;0.0005/0.3527,1,0.0005/25;25/0 .3527,25/0.0005,1 ;C32,1=true(3,1);C31,2=1,0.0021/0.0006,0.0021/0.002;0.0006/0.0021,1,0.0006/0.00 2;0.002/0.0021,0.002/0.0006,1 ;C32,2=true(3,1);C31,3= 1,11.93/11.51,11.93/1.04;11.51/11.93,1,11.51/1.04;1.04/1 1.93,1.04/11.51,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论