矩阵的一致性检验程序matlab2011-12-08 直接输入矩阵就可以输出特征值和特征向量以及是否一致。 2KB matlab开发-近邻空间权重矩阵2019-08-28 matlab开发-近邻空间权...
数学建模:层次分析法一直性检验MATLAB代码 ...展开详情 层次分析法 matlab一致性检验代码 matlab层次分析法一致性检验 立即下载 低至0.43元/次 身份认证VIP会员...
Matlab源程序代码如下:clccleardisp('请输入判断矩阵A')A=input('A=');[n,n] = size(A)%方法1: 算术平均法Sum_A = sum(A);SUM_A = repmat(Sum_A,n,1);Stand_A = A ./ SUM_A;Stand_A = A ./ Sum_A; % 这样也可以的 disp('算术平均法求权重的结果为:');disp(sum(Stand_A,2)./n)%方法2: 几何平均法Prduct_A = prod(A,2);Prduct_n_A = Prduct_A .^ (1/n);disp('几何平均法求权重的结果为:');disp(Prduct_n_A ./ sum(Prduct_n_A))%方法3: 特征值法求权重[V,D] = eig(A);Max_eig = max(max(D))[r,c]=find(D == Max_eig , 1);disp('特征值法求权重的结果为:');disp( V(:,c) ./ sum(V(:,c)) )%计算一致性比例CRCI = (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.581.59]; % 这里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
层次分析法原理简单,matlab实现起来也较容易。
对于matlab新手而言,主要在判断矩阵未通过一致性检验的时候,需要重新输入,重新计算。clc;clear;% 清除所有命令窗口,清除所有变量while true %无条件进入循环A=input('请输入判断矩阵A=');[m,n]=size(A); %获取指标个数RI=[ 0 0 0.58 0.901.121.261.361.411.46];[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;tz=max(D);B=max(tz); %最大特征值[row, col]=find(D==B); %最大特征值所在位置C=V(:,col); %对应特征向量CI=(B-n)/(n-1); %计算一致性检验指标CICR=CI/RI(1,n); if CR<0.10 disp('CI=');disp(CI); disp('CR=');disp(CR);disp('对比矩阵A通过一致性检验,各向量权重向量Q为:'); break; elsedisp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');continue;end endQ=zeros(n,1);for i=1:n Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化endQ %最后输出权重值
前一篇讲述了层次分析的原理,例题讲解,接下来是matlab代码实现层次分析法理论部分评价类模型——层次分析法,一致性检验学习笔记(一)层次分析法方法总结:第一步:分析系统中各因素之间的关系,建立系统的递阶层次结构第二步:对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。1.构建准则层判断矩阵2.准则层—方案层的判断矩阵第三步: 由判断矩阵计算被比较元素对于该准则的相对权重, 并进行一致性检验(检验通过权重才能用)三种方法计算权重: (1)算术平均法(2)几何平均法(3)特征值法第四步:计算各层元素对系统目标的合成权重,并进行排序。 代码:以解决景色、花费、居住、饮食、交通为例的判断矩阵的权重为例子:新建一个后缀名为.m文件,将代码复制进去,在工作区新建变量并命名为A,填写如下信息当然也可以通过键盘输入,参考注释语句。具体实现代码如下 %%输入判断矩阵% clear;% clc;%A=input('请输入判断矩阵:')[n,n]=size(A);%取矩阵列数n%%%判断矩阵一致性检验clc;[V,D]=eig(A);%求特征值和特征向量,V存放特征向量,D存放特征值Max_eig=max(max(D));%取D中最大特征值CI=(Max_eig-n)/(n-1);%计算一致性指标CIRI=[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);%计算一致比例% 如果CR < 0.1, 则可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正。disp('一致性指标CI=');disp(CI);disp('一致性比例CR=');disp(CR);if CR<0.10 disp('因为CR < 0.10,所以该判断矩阵A的一致性可以接受!');else disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');end%%%方法1:算术平均法求权重sum_A=sum(A);%对矩阵所在列作和SUM_A=repmat(sum_A,n,1);%将sum_A看做一个整体,重复n*1块stand_A=A./SUM_A;%A和SUM_A矩阵对应行相除;即将判断矩阵按照列归一化disp('算术平均法求权重的结果为:');disp(sum(stand_A,2) / n)%%%方法2:几何平均法求权重Prduct_A = prod(A,2);%将A的元素按照行相乘得到一个新的列向量% prod函数和sum函数类似,一个用于乘,一个用于加 dim = 2 维度是行Prduct_n_A = Prduct_A .^ (1/n);% 这里对每个元素进行乘方操作,这里是开n次方,所以我们等价求1/n次方disp('几何平均法求权重的结果为:');disp(Prduct_n_A ./ sum(Prduct_n_A))%%%方法3:特征值法求权重[r,c] = find(D == Max_eig , 1);% 找到D中第一个与最大特征值相等的元素的位置,记录它的行和列。disp('特征值法求权重的结果为:');disp( V(:,c) ./ sum(V(:,c)) )%对求出的特征向量进行归一化即可得到我们的权重实验结果存储完矩阵A后,点击运行输出结果为: 清除工作区间后,输入其他的判断矩阵。你学会了吗。
IYUANNORMALUNIVERSITY(NaturalScienceEdition)Vol.5No.4Dec.2006AHP法中平均随机一致性指标的算法及MATLAB实现焦树锋(山东滨州职业学院,山东滨州256624)〔摘要〕利用层次分析法解决问题时,要对通过两两比较得出的判断矩阵进行一致性检验.而作为参与计算检验的平均随机一致性指标的值一般需要通过查表而得,一般表中又查不到高阶平均随机一致性指标值,这一难点阻碍着层次分析法大面积的推广应用.在深刻剖析层次分析法的基础上,给出了平均随机一致性指标的算法,并且基于MATLAB软件下予以程序实现.〔关键词〕层次分析法;判断矩阵;平均随机一致性指标;MATLAB〔文章编号〕167222027(2006)0420045203〔中图分类号〕E91〔文献标识码〕A0引言层次分析法[1](AnalyticalHierarchyProcess)是20世纪70年代由ThomasSaaty提出的一种定性问题定量化的行之有效的方法.AHP的理论核心在于,按照从简单到复杂的认识论规律,将复杂系统分解为有序的递阶层次结构,其决策问题通常表现为一组方案优先顺序的排列问题,根据特定的选优条件组,从方案全序里挑选最佳者.为了给方案组排序,理论上采用对全体方案进行两两比较的遍历法.1AHP的基本步骤层次分析法首先把问题层次化,按问题性质和总目标将此问题分解成不同层次,构成一个多层次的分析结构模型.其主要步骤如下[2]:1)根据标度理论,构造两两比较评判矩阵A;A=(aij)n×n(i,j=1,2,…,n)通常使用1~9比例标度法,判断矩阵的比例标度及含义如表1所示.2)将判断矩阵A的各列作归一化处理:aij=aij∑nk=1akj(i,j=1,2,…,n)3)求判断矩阵A各行元素之和wi=∑nj=1aij(i=1,2,…,n)表1判断矩阵的比例标度及含义Table1Proportionquotietyofjudgementmatrixanditsmeaning标度含义1表示两个因素相比,同样重要3表示两个因素相比,一个比另一个稍微重要5表示两个因素相比,一个比另一个明显重要7表示两个因素相比,一个比另一个强烈重要9表示两个因素相比,一个比另一个极端重要2,4,6,8分别表示为相邻1-3,3-5,5-7,7-9的中值倒数若因素i与j比较得,则j与i比较得4)对wi进行归一化处理得到wi:wi=wi∑ni=1wi(i=1,2,…,n)5)根据AW=ΚmaxW求出最大特征值及其特征向量,Κmax=1n∑i(AW)iwi.6)一致性检验:检查判断矩阵A的非一致性是否可以接受.Ξ收稿日期:2006210205作者简介:焦树锋(19732),男,山东日照人,硕士,山东滨州职业学院讲师,主要从事数学模型、运筹决策与控制研究.© 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
联系客服