ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:721.31KB ,
资源ID:22770253      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22770253.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Matlab笔记层次分析法020文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Matlab笔记层次分析法020文档格式.docx

1、称为判断矩阵(或成对比较矩阵)。Saaty根据绝大多数人认知事物的心理习惯,建议用19及其倒数作为标度来确定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)nn满足aika

2、kj = aij(对应aij=wi/wj, 故需要aikakj =(wi/wk)/(wk/wj) = aij),则称(aij)nn为一致性矩阵。特征根法的基本思想是,当正互反矩阵 (aij)nn为一致性矩阵时,对应于判断矩阵的最大特征根max的特征向量,经归一化后(使向量中各元素之和等于1)即为排序权向量,记为w, w的元素为同一层次因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。能否进行层次单排序,就看判断矩阵是否为一致性矩阵,有如下定理:定理n阶正互反矩阵A为一致性矩阵的充要条件是,A的最大特征值max = n.在实际操作中,由于客观事物的复杂性以及人们对事物判断比较时

3、的模糊性,很难构造出完全一致的判断矩阵。因此,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. 计算各元素对目标层的合成权重(层次总排序)为

4、了实现层次分析法的最终目的,需要从上而下逐层进行各层元素对目标合成权重的计算。设已计算出第k-1层nk-1个元素相对于目标的合成权重为:再设第k层的nk个元素关于第k-1层第j个元素(j=1,nk-1)的单一准则排序权重向量为:上式对k层的nk个元素是完全的,若某些元素不受k-1层第j个元素支配,相应位置用0补充,于是得到nknk-1阶矩阵:从而可以得到第k层的nk个元素关于目标层的合成权重向量:按递归展开得写成分量形式为各层元素对目标层的合成排序权重向量是否可以满意接受,与单一准则下的排序问题一样,需要进行综合一致性检验:当C.R.(k) 0.1时,则认为层次结构在第k层以上的判断具有整体满

5、意的一致性。注:实际应用中,整体一致性检验常不予进行。主要原因是,整体考虑十分困难;其次若每个单一准则下的判断矩阵具有满意的一致性,而整体达不到满意的一致性时,调整起来非常困难。另外,整体一致性的背景也不如单一准则下的背景清晰,它的必要性有待进一步研究。三、Matlab实现实现层次分析法的Matlab函数:ahp.mfunction W,ahpResult = ahp(C)%层次分析法%C为n1的元胞数组,存储整个层次模型结构:第2层对第1层、第3层对第2层、.第n+1层对第n层%假设第k层有m_k个元素,从左到右依次编号1,.,m_k%Ck也是元胞数组, k=1,.,n%Ck1,j存储受第j

6、元素支配的第k+1层各元素的判断矩阵(j=1,2,.,m_k)%Ck2,j存储第k+1层各元素是否受第k层第j元素支配的(m_k+1)*1的逻辑数组,1表示支配,0表示不受支配%W返回方案层对目标层的最终权重向量%ahpResult为n1的元胞数组, 存储层次分析过程各层的结果信息, ahpResultk也是元胞数组%ahpResultk1,j返回第k+1层所有元素相对第k层j元素的权重向量, 第k+1层元素不受第k层j元素支配的权重为0%ahpResultk2,j返回第k+1层所有元素相对于第k层第j元素的判断矩阵的最大特征值%ahpResultk3,j返回第k+1层所有元素相对于第k层第j

7、元素的判断矩阵的一致性比率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); % k层的元素个数ahpResultk = cell(m_k,1);forkk = 1:m_k%求第k+1层各元素对第k层kk元素的成对比较矩阵的特征值和特征向量 V,D = eig(Ck1,kk); maxD,ind = max(dia

8、g(D); % 求最大特征值和其位置%为存储第k+1层所有元素相对k层kk元素的权重预留出空间,长度应等于Ck2,kk的长度ahpResultk1,kk = zeros(length(Ck2,kk),1);%将相应正互反矩阵属于最大特征值的特征向量归一化后赋给ahpResultk1,kk中相应位置 %这些位置由逻辑数组Ck2,kk决定ahpResultk1,kk(Ck2,kk) = V(:,ind)/sum(V(:,ind);ahpResultk2,kk = maxD; % Ck1,kk正互反矩阵的最大特征值nn = size(Ck1,kk,1); % Ck1,kk的阶数ahpResultk3

9、,kk = (maxD-nn)/(nn-1)/RI(nn); % 相应的一致性比率C.R.endW = ahpResult11,1;for k = 2:% cat(2,ahpResultk1,:)把k+1层所有元素相对k层各个元素的权重向量横向排在一起生成权重矩阵U(k) W = cat(2,ahpResultk1,:)*W;用该函数实现层次分析法的关键是,把整个层次结构存入嵌套元胞数组C中(见程序注释):Ck存储第k+1层与第k层的结构(k=1,n);设第k层有mk个元素,其中第j元素与第k+1层的结构关系存储到Ck, j中(j=1,mk),需要存储的信息有:1受第j元素支配的第k+1层各元

10、素的判断矩阵2第k+1层各元素是否受第k层第j元素支配(即有没有连线)所以需要两个位置,即Ck1, j和Ck2, j.例1某工厂有一笔企业留成利润,需要决定如何分配使用。已经决定有三种用途:奖金、集体福利措施、引进技术设备。考察准则也有三个:是否能调动职工的积极性、是否有利于提高技术水平、考虑改善职工生活条件。建立如下层次模型:经过工厂决策人员讨论,得到如下判断矩阵:1. 第2层对第1层三个元素C1, C2, C3都受A支配,判断矩阵C11,1为相应的逻辑数组C12,1为true truetrue.2. 第3层对第2层(1) 第3层对第2层第1个元素C1受C1支配的只有两个元素P1和P2,判断

11、矩阵C21,1为相应的逻辑数组C22,1为true truefalse.(2) 第3层对第2层第2个元素C2受C2支配的只有两个元素P2和P3,判断矩阵C21,2为相应的逻辑数组C22,2为false true true.(3) 第3层对第2层第3个元素C3受C3支配的只有两个元素P1和P2,判断矩阵C21,3为相应的逻辑数组C22,3为true truefalse.3. 有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数ahp.m即可C = cell(2,1);%共n+1=3层, 故n=2C11,1 = 1 1/5 1/3;5 1 3;3 1/3 1;%第2层(C层)关于第1层(目标

12、层A)的判断矩阵C12,1 = true truetrue;%相应的逻辑数组C21,1 = 1 1/3;3 1;%第3层(P层)关于第2层第1元素C1的判断矩阵C22,1 = true truefalse;C21,2 = 1 1/5;5 1;%第3层(P层)关于第2层第2元素C2的判断矩阵C22,2 = false true true;C21,3 = 1 2;1/2 1;%第3层(P层)关于第2层第3元素C3的判断矩阵C22,3 = true truefalse;W,ahpResult=ahp(C);%调用ahp求解W %输出总排序的权重向量运行结果:W = 0.1984 0.2708 0.5

13、308W就是方案层各个方案所占的比重,可见引进技术设备所占比重最大,改善员工福利次之。体现在奖金分配上,即用全部留成利润的53.08%引进技术设备,27.08%改善员工福利,19.84%发奖金。例2假设某人在制定食谱时有三类食品可选:肉、面包、蔬菜。这三类食品所含营养成分及单价如下表所示:假设该人体重为55kg, 每天对各类营养的最小需求为维生素A 7500IU维生素B2 1.6338mg热量Q 8548.5kJ问题是:应如何制定食谱使得在保证营养的前提下支出最小?单纯考虑问题条件,容易建立如下的线性规划模型:设选择肉x1, 面包x2, 蔬菜x3, 则有用Matlab求解线性规划问题的函数li

14、nprog, 可以求出最优解: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, offSimplexon);x,fval,flag = linprog(f,A,b,0;0;0,infinfinf,options)x = 0 687.5267 610.6420fval= 8.3997flag = 1 %表示算法成功求解出的结果是,每天不吃肉,吃面包687.5267g, 蔬菜6

15、10.642g, 最低支出为8.40元。但实际考虑的话,这个方案是难以让人接受的,只考虑了营养够、价格低,没有考虑到营养均衡(需要吃一定量的肉)。为此,我们先用层次分析法确定每天需要肉、面包、蔬菜的比重,再重新线性规划。建立如下的层次模型:注意:由于第2层支出因素D2直接支配第4层,需要在第3层补上一个因素“补项B”(仍当作“支出”看待),它只受D2支配,并且支配D2的每个支配因素(第4层的肉Me, 面包Br, 蔬菜Ve)。有了上面的层次结构,再根据偏好建立判断矩阵(当然偏好因人而异):判断矩阵:逻辑数组:C12,1=true true.(1) 第3层对第2层第1元素D1C22,1=true

16、truetrue false.(2) 第3层对第2层第2元素D2C21,2=1C22,2=false falsefalseture.3. 第4层对第3层(1) 第4层对第3层第1元素A判断矩阵(用数据直接做比得到):C32,1=true true true.(2) 第4层对第3层第2元素B2C32,2=true true true.(3) 第4层对第3层第3元素QC32,3=true true true.(4) 第4层对第3层第4元素B判断矩阵(用单价比的倒数,因为单价越高越不重要):C32,4=true true true.4. 有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数ah

17、p.m即可C = cell(3,1);C11,1 = 1 1/3;C12,1 = true(2,1);C21,1 = 1 1 2;1 1 2; 1/2 1/2 1;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

18、.0006/0.002;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/11.93,1.04/11.51,1 ;C32,3=true(3,1);C31,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 ;C32,4=true(3,1);WW = 0.2376 0.2293 0.5331该结果表明,按这个人的情

19、况,肉、面包、蔬菜的比例取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;W = 0.23760.22930.5331;k,fval,flag = linprog(f,A,b,0,inf,options)x = k*Wk = 1.4181e+03fval = 16.4498flag = 1x = 336.9370 325.1669 755.9811故k=1418.1, x1=336.94, x2=325.17, x3=755.98. 每天食品支出16.45元。对于不同的人可以有不同的判断矩阵C11,1, 即营养与支出的相对重要程度,例如,修改为1 1/3; 3 1, 可以得到x1=188.88, x2=497.82, x3=567.04. 每天食品支出12.14元。主要参考文献:吴鹏,Matlab高效编程技巧与应用:25个案例分析第11章。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1