Matlab笔记——层次分析法020.docx
《Matlab笔记——层次分析法020.docx》由会员分享,可在线阅读,更多相关《Matlab笔记——层次分析法020.docx(17页珍藏版)》请在咨信网上搜索。
Matlab笔记——层次分析法020 20. 层次分析法 一、概述 层次分析法(Analytic Hierarchy Process, AHD)是将要决策的问题及其有关因素分解成目标、准则、方案等层次,进而进行定性和定量分析的决策方法。它的特征是合理地将定性与定量决策结合起来,按照思维、心理的规律把决策过程细致化(层次化、数量化)。 层次分析法广泛地应用到处理复杂的决策问题,而决策是基于该方法计算出的权重,所以也常用来确定指标的权重。 层次分析法的基本思路与人们对一个决策问题的思维、判断过程大体上是一样的。例如,选购一台笔记本电脑,假设有三种不同品牌款式的笔记本电脑A、B、C供选择。我们一般会根据价格、外观、重量、用途、功耗、品牌等一些准则去反复比较这个三个候选。首先,会确定这些准则在自己心目中各占多大比重,不同的人这种比重会有很大差异(喜欢玩游戏的人看重硬件性能和散热、预算有限的人看重价格等)。其次,还会就每一个准则将A、B、C进行对比,比如A最便宜,B次之;C性能最好,B次之;C的品牌最知名等。最后,将这两个层次的比较判断进行综合,在A、B、C中确定一台作为最符合自己需求的电脑。 二、算法步骤 1. 将问题条理化、层次化,建立层次结构模型 1)最高层(目标层)——只有一个元素:决策目标; 2)中间层(准则层)——考虑的因素,决策的准则、子准则; 3)最底层(方案层)——决策时的备选方案、措施。 层次分析法要解决的问题是,求出最底层对最高层的相对权重,以此对最底层的方案、措施进行排序,选择最优方案。 注1:为了避免两两比较判断过于复杂,每层次中各元素所支配的元素一般不要超过9个,否则应划分为若干子层; 注2:层次分析法只考虑相邻两个层次间自上向下的支配作用,认为同一层次的元素间相互独立,若考虑进来需要网络分析法(ANP)。 例如前文提到的选购笔记本电脑的决策模型,可以建立如下的层次结构: 2. 构造判断矩阵(成对比较矩阵) 构造好层次模型后,针对某一层来讲,在比较第i个元素与第j个元素相对于上一层某个因素的重要性时,使用数量化的相对权重aij来表示,假设共有n个元素参与比较,则矩阵 称为判断矩阵(或成对比较矩阵)。 Saaty根据绝大多数人认知事物的心理习惯,建议用1~9及其倒数作为标度来确定aij的值。 其中,2, 4, 6, 8分别介于1, 3, 5, 7, 9对应的重要程度之间。显然,A中的元素满足: i) aij> 0; ii) aji = 1/aij; iii) aii =1 称为正互反矩阵。 例如,选购笔记本电脑模型中,可以根据实际三台电脑的重量得到电脑对准则层B3的判断矩阵(aij可以取笔记本电脑j与i的重量之比,重量越轻越好): 3. 层次单排序及判断矩阵的一致性检验 通常用特征根法从判断矩阵导出,单一准则下元素相对排序权重。 定义若n阶正互反矩阵 (aij)n×n满足aikakj = aij(对应aij=wi/wj, 故需要aikakj =(wi/wk)/(wk/wj) = aij),则称(aij)n×n为一致性矩阵。 特征根法的基本思想是,当正互反矩阵 (aij)n×n为一致性矩阵时,对应于判断矩阵的最大特征根λmax的特征向量,经归一化后(使向量中各元素之和等于1)即为排序权向量,记为w, w的元素为同一层次因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。 能否进行层次单排序,就看判断矩阵是否为一致性矩阵,有如下定理: 定理n阶正互反矩阵A为一致性矩阵的充要条件是,A的最大特征值λmax = n. 在实际操作中,由于客观事物的复杂性以及人们对事物判断比较时的模糊性,很难构造出完全一致的判断矩阵。因此,Satty在构造层次分析法时,提出了一致性检验,所谓一致性检验是指判断矩阵允许有一定不一致的范围。 一致性检验步骤如下: 1)计算判断矩阵A的最大特征值λmax; 2)求出一致性指标(Consistencey Index): C.I.=0表示完全一致,C.I.越大越不一致; 3)用随机模拟取平均的方法,求相应的平均随机一致性指标R.I., 或者直接用Satty模拟1000次得到的R.I.表: 4)计算一致性比率: 5)判断,当C.R.<0.1时,认为判断矩阵A有满意的一致性;若C.R.≥0.1, 应考虑修正判断矩阵A. 4. 计算各元素对目标层的合成权重(层次总排序) 为了实现层次分析法的最终目的,需要从上而下逐层进行各层元素对目标合成权重的计算。 设已计算出第k-1层nk-1个元素相对于目标的合成权重为: 再设第k层的nk个元素关于第k-1层第j个元素(j=1,…,nk-1)的单一准则排序权重向量为: 上式对k层的nk个元素是完全的,若某些元素不受k-1层第j个元素支配,相应位置用0补充,于是得到nk×nk-1阶矩阵: 从而可以得到第k层的nk个元素关于目标层的合成权重向量: 按递归展开得 写成分量形式为 各层元素对目标层的合成排序权重向量是否可以满意接受,与单一准则下的排序问题一样,需要进行综合一致性检验: 当C.R.(k)< 0.1时,则认为层次结构在第k层以上的判断具有整体满意的一致性。 注:实际应用中,整体一致性检验常不予进行。主要原因是,整体考虑十分困难;其次若每个单一准则下的判断矩阵具有满意的一致性,而整体达不到满意的一致性时,调整起来非常困难。另外,整体一致性的背景也不如单一准则下的背景清晰,它的必要性有待进一步研究。 三、Matlab实现 实现层次分析法的Matlab函数:ahp.m function [W,ahpResult] = ahp(C) %层次分析法 %C为n×1的元胞数组,存储整个层次模型结构:第2层对第1层、第3层对第2层、...第n+1层对第n层 %假设第k层有m_k个元素,从左到右依次编号1,...,m_k %C{k}也是元胞数组, k=1,...,n %C{k}{1,j}存储受第j元素支配的第k+1层各元素的判断矩阵(j=1,2,...,m_k) %C{k}{2,j}存储第k+1层各元素是否受第k层第j元素支配的(m_k+1)*1的逻辑数组,1表示支配,0表示不受支配 %W返回方案层对目标层的最终权重向量 %ahpResult为n×1的元胞数组, 存储层次分析过程各层的结果信息, ahpResult{k}也是元胞数组 %ahpResult{k}{1,j}返回第k+1层所有元素相对第k层j元素的权重向量, 第k+1层元素不受第k层j元素支配的权重为0 %ahpResult{k}{2,j}返回第k+1层所有元素相对于第k层第j元素的判断矩阵的最大特征值 %ahpResult{k}{3,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+1 ahpResult = cell(n,1); % ´存储各层结果信息 for k = 1:n m_k = size(C{k},2); % k层的元素个数 ahpResult{k} = cell(m_k,1); forkk = 1:m_k %求第k+1层各元素对第k层kk元素的成对比较矩阵的特征值和特征向量 [V,D] = eig(C{k}{1,kk}); [maxD,ind] = max(diag(D)); % 求最大特征值和其位置 %为存储第k+1层所有元素相对k层kk元素的权重预留出空间,长度应等于C{k}{2,kk}的长度 ahpResult{k}{1,kk} = zeros(length(C{k}{2,kk}),1); %将相应正互反矩阵属于最大特征值的特征向量归一化后赋给ahpResult{k}{1,kk}中相应位置 %这些位置由逻辑数组C{k}{2,kk}决定 ahpResult{k}{1,kk}(C{k}{2,kk}) = V(:,ind)/sum(V(:,ind)); ahpResult{k}{2,kk} = maxD; % C{k}{1,kk}正互反矩阵的最大特征值 nn = size(C{k}{1,kk},1); % C{k}{1,kk}的阶数 ahpResult{k}{3,kk} = (maxD-nn)/(nn-1)/RI(nn); % 相应的一致性比率C.R. end end W = ahpResult{1}{1,1}; for k = 2:n % cat(2,ahpResult{k}{1,:})把k+1层所有元素相对k层各个元素的权重向量横向排在一起生成权重矩阵U^(k) W = cat(2,ahpResult{k}{1,:})*W; end 用该函数实现层次分析法的关键是,把整个层次结构存入嵌套元胞数组C中(见程序注释): C{k}——存储第k+1层与第k层的结构(k=1,…,n); 设第k层有mk个元素,其中第j元素与第k+1层的结构关系存储到C{k}{…, j}中(j=1,…,mk),需要存储的信息有: ① 受第j元素支配的第k+1层各元素的判断矩阵 ② 第k+1层各元素是否受第k层第j元素支配(即有没有连线) 所以需要两个位置,即C{k}{1, j}和C{k}{2, j}. 例1某工厂有一笔企业留成利润,需要决定如何分配使用。已经决定有三种用途:奖金、集体福利措施、引进技术设备。考察准则也有三个:是否能调动职工的积极性、是否有利于提高技术水平、考虑改善职工生活条件。建立如下层次模型: 经过工厂决策人员讨论,得到如下判断矩阵: 1. 第2层对第1层 三个元素C1, C2, C3都受A支配,判断矩阵C{1}{1,1}为 相应的逻辑数组C{1}{2,1}为[true truetrue]. 2. 第3层对第2层 (1) 第3层对第2层第1个元素C1 受C1支配的只有两个元素P1和P2,判断矩阵C{2}{1,1}为 相应的逻辑数组C{2}{2,1}为[true truefalse]. (2) 第3层对第2层第2个元素C2 受C2支配的只有两个元素P2和P3,判断矩阵C{2}{1,2}为 相应的逻辑数组C{2}{2,2}为[false true true]. (3) 第3层对第2层第3个元素C3 受C3支配的只有两个元素P1和P2,判断矩阵C{2}{1,3}为 相应的逻辑数组C{2}{2,3}为[true truefalse]. 3. 有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数ahp.m即可 C = cell(2,1);%共n+1=3层, 故n=2 C{1}{1,1} = [1 1/5 1/3;5 1 3;3 1/3 1];%第2层(C层)关于第1层(目标层A)的判断矩阵 C{1}{2,1} = [true truetrue];%相应的逻辑数组 C{2}{1,1} = [1 1/3;3 1];%第3层(P层)关于第2层第1元素C1的判断矩阵 C{2}{2,1} = [true truefalse];%相应的逻辑数组 C{2}{1,2} = [1 1/5;5 1];%第3层(P层)关于第2层第2元素C2的判断矩阵 C{2}{2,2} = [false true true];%相应的逻辑数组 C{2}{1,3} = [1 2;1/2 1];%第3层(P层)关于第2层第3元素C3的判断矩阵 C{2}{2,3} = [true truefalse];%相应的逻辑数组 [W,ahpResult]=ahp(C);%调用ahp求解 W %输出总排序的权重向量 运行结果: W = 0.1984 0.2708 0.5308 W就是方案层各个方案所占的比重,可见引进技术设备所占比重最大,改善员工福利次之。体现在奖金分配上,即用全部留成利润的53.08%引进技术设备,27.08%改善员工福利,19.84%发奖金。 例2假设某人在制定食谱时有三类食品可选:肉、面包、蔬菜。这三类食品所含营养成分及单价如下表所示: 假设该人体重为55kg, 每天对各类营养的最小需求为 维生素A 7500IU 维生素B2 1.6338mg 热量Q 8548.5kJ 问题是:应如何制定食谱使得在保证营养的前提下支出最小? 单纯考虑问题条件,容易建立如下的线性规划模型:设选择肉x1, 面包x2, 蔬菜x3, 则有 用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,b,[],[],[0;0;0],[infinfinf],[],options) 运行结果: x = 0 687.5267 610.6420 fval= 8.3997 flag = 1 %表示算法成功 求解出的结果是,每天不吃肉,吃面包687.5267g, 蔬菜610.642g, 最低支出为8.40元。但实际考虑的话,这个方案是难以让人接受的,只考虑了营养够、价格低,没有考虑到营养均衡(需要吃一定量的肉)。 为此,我们先用层次分析法确定每天需要肉、面包、蔬菜的比重,再重新线性规划。建立如下的层次模型: 注意:由于第2层支出因素D2直接支配第4层,需要在第3层补上一个因素“补项B”(仍当作“支出”看待),它只受D2支配,并且支配D2的每个支配因素(第4层的肉Me, 面包Br, 蔬菜Ve)。 有了上面的层次结构,再根据偏好建立判断矩阵(当然偏好因人而异): 1. 第2层对第1层 判断矩阵: 逻辑数组:C{1}{2,1}=[true true]. 2. 第3层对第2层 (1) 第3层对第2层第1元素D1 判断矩阵: 逻辑数组:C{2}{2,1}=[true truetrue false]. (2) 第3层对第2层第2元素D2 判断矩阵:C{2}{1,2}=[1] 逻辑数组:C{2}{2,2}=[false falsefalseture]. 3. 第4层对第3层 (1) 第4层对第3层第1元素A 判断矩阵(用数据直接做比得到): 逻辑数组:C{3}{2,1}=[true true true]. (2) 第4层对第3层第2元素B2 判断矩阵(用数据直接做比得到): 逻辑数组:C{3}{2,2}=[true true true]. (3) 第4层对第3层第3元素Q 判断矩阵(用数据直接做比得到): 逻辑数组:C{3}{2,3}=[true true true]. (4) 第4层对第3层第4元素B 判断矩阵(用单价比的倒数,因为单价越高越不重要): 逻辑数组:C{3}{2,4}=[true true true]. 4. 有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数ahp.m即可 C = cell(3,1); C{1}{1,1} = [1 1/3;3 1]; C{1}{2,1} = true(2,1); C{2}{1,1} = [1 1 2;1 1 2; 1/2 1/2 1]; C{2}{2,1}=[true truetrue false]; C{2}{1,2}=1; C{2}{2,2} = [false,false,false,true]; C{3}{1,1} = [1,0.3527/0.0005,0.3527/25;0.0005/0.3527,1,0.0005/25;25/0.3527,25/0.0005,1 ]; C{3}{2,1}=true(3,1); C{3}{1,2} = [1,0.0021/0.0006,0.0021/0.002;0.0006/0.0021,1,0.0006/0.002;0.002/0.0021,0.002/0.0006,1 ]; C{3}{2,2}=true(3,1); C{3}{1,3} = [1,11.93/11.51,11.93/1.04;11.51/11.93,1,11.51/1.04;1.04/11.93,1.04/11.51,1 ]; C{3}{2,3}=true(3,1); C{3}{1,4} = [1,0.006/0.0275,0.007/0.0275;0.0275/0.006,1,0.007/0.006;0.0275/0.007,0.006/0.007,1 ]; C{3}{2,4}=true(3,1); [W,ahpResult]=ahp(C); W 运行结果: W = 0.2376 0.2293 0.5331 该结果表明,按这个人的情况,肉、面包、蔬菜的比例取0.2376, 0.2293, 0.5331比较合适。引入参变量k, 令x1=0.2376k, x2=0.2293k, x3=0.5331k, 将其代入前文的线性规划模型,得到 用linprog求解: f = [0.0116]; A = -[13.4116;0.0017;6.0282]; b = -[7500;1.6338;8548.5]; W = [0.23760.22930.5331]; options = optimset('LargeScale', 'off', 'Simplex', 'on'); [k,fval,flag] = linprog(f,A,b,[],[],[0],[inf],[],options) x = k*W 运行结果: k = 1.4181e+03 fval = 16.4498 flag = 1 x = 336.9370 325.1669 755.9811 故k=1418.1, x1=336.94, x2=325.17, x3=755.98. 每天食品支出16.45元。 注:对于不同的人可以有不同的判断矩阵C{1}{1,1}, 即营养与支出的相对重要程度,例如,修改为[1 1/3; 3 1], 可以得到x1=188.88, x2=497.82, x3=567.04. 每天食品支出12.14元。 主要参考文献:吴鹏,《Matlab高效编程技巧与应用:25个案例分析》第11章。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 笔记 层次 分析 020
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文