层次分析法各权重计算的MATLAB程序

层次分析法各权重计算的MATLAB程序
层次分析法各权重计算的MATLAB程序

层次分析法各权重计算的MATLAB程序

clc

clear %修改对比矩阵、一致性检验就可以

a=[1,1,1,4,1,1/2

1,1,2,4,1,1/2

1,1/2,1,5,3,1/2

1/4,1/4,1/5,1,1/3,1/3

1,1,1/3,3,1,1

2,2,2,3,3,1];

[x,y]=eig(a);eigenvalue=diag(y);lamda=eigenvalue(1); ci1=(lamda-6)/5;cr1=ci1/1.24

w1=x(:,1)/sum(x(:,1))

b1=[1,1/4,1/2;4,1,3;2,1/3,1];

[x,y]=eig(b1);eigenvalue=diag(y);lamda=eigenvalue(1); ci21=(lamda-3)/2;cr21=ci21/0.58

w21=x(:,1)/sum(x(:,1))

b2=[1 1/4 1/5;4 1 1/2;5 2 1];

[x,y]=eig(b2);eigenvalue=diag(y);lamda=eigenvalue(1); ci22=(lamda-3)/2;cr22=ci22/0.58

w22=x(:,1)/sum(x(:,1))

b3=[1 3 1/3;1/3 1 1/7;3 7 1];

[x,y]=eig(b3);eigenvalue=diag(y);lamda=eigenvalue(1); ci23=(lamda-3)/2;cr23=ci23/0.58

w23=x(:,1)/sum(x(:,1))

b4=[1 1/3 5;3 1 7;1/5 1/7 1];

[x,y]=eig(b4);eigenvalue=diag(y);lamda=eigenvalue(1); ci24=(lamda-3)/2;cr24=ci24/0.58

w24=x(:,1)/sum(x(:,1))

b5=[1 1 7;1 1 7;1/7 1/7 1];

[x,y]=eig(b5);eigenvalue=diag(y);lamda=eigenvalue(2); ci25=(lamda-3)/2;cr25=ci25/0.58

w25=x(:,2)/sum(x(:,2))

b6=[1 7 9;1/7 1 1 ;1/9 1 1];

[x,y]=eig(b6);eigenvalue=diag(y);lamda=eigenvalue(1); ci26=(lamda-3)/2;cr26=ci26/0.58

w26=x(:,1)/sum(x(:,1))

w_sum=[w21,w22,w23,w24,w25,w26]*w1

ci=[ci21,ci22,ci23,ci24,ci25,ci26];

cr=ci*w1/sum(0.58*w1)

层次分析法及matlab程序

层次分析法建模 层次分析法(AHP-Analytic Hierachy process)---- 多目标决策方法 70 年代由美国运筹学家T·L·Satty提出的,是一种定性与定量分析相结合的多目标决策分析方法论。吸收利用行为科学的特点,是将决策者的经验判断给予量化,对目标(因素)结构复杂而且缺乏必要的数据情况下,採用此方法较为实用,是一种系统科学中,常用的一种系统分析方法,因而成为系统分析的数学工具之一。 传统的常用的研究自然科学和社会科学的方法有: 机理分析方法:利用经典的数学工具分析观察的因果关系; 统计分析方法:利用大量观测数据寻求统计规律,用随机数学方法描述(自然现象、 社会现象)现象的规律。 基本内容:(1)多目标决策问题举例AHP建模方法 (2)AHP建模方法基本步骤 (3)AHP建模方法基本算法 (3)AHP建模方法理论算法应用的若干问题。 参考书: 1、姜启源,数学模型(第二版,第9章;第三版,第8章),高等教育出版社 2、程理民等,运筹学模型与方法教程,(第10章),清华大学出版社 3、《运筹学》编写组,运筹学(修订版),第11章,第7节,清华大学出版社 一、问题举例: A.大学毕业生就业选择问题 获得大学毕业学位的毕业生,“双向选择”时,用人单位与毕业生都有各自的选择标准和要求。就毕业生来说选择单位的标准和要求是多方面的,例如: ①能发挥自己的才干为国家作出较好贡献(即工作岗位适合发挥专长); ②工作收入较好(待遇好); ③生活环境好(大城市、气候等工作条件等); ④单位名声好(声誉-Reputation); ⑤工作环境好(人际关系和谐等) ⑥发展晋升(promote, promotion)机会多(如新单位或单位发展有后劲)等。 问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?

层次分析法matlab程序

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(w);disp(t); %以下是一致性检验 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 function AHPInit1(x,y) %层次分析的初始化 %默认只有两层x为准则数,y为方案数 %CToT为准则对目标生成的比较阵 %EigOfCri为准则层的特征向量 %EigOfOpt为选项层的特征向量 EigOfCri=zeros(x,1);%准则层的特征向量 EigOfOpt=zeros(y,x); dim=x;%维度 RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准%生成成对比较阵 for i=1:dim CToT(i,:)=input('请输入数据:'); end CToT %输出 pause, tempmatrix=zeros(x+1);

层次分析法矩阵权重和,根,特征值法,c语言计算

// ???óè¨??2010.cpp : ?¨ò?????ì¨ó|ó?3ìDòμ?è??úμ??£ #include "stdafx.h" //vs2010ò?é?°?±?óD′??? #include"stdio.h" #include"math.h" void sum(int N,double a[13][13]) { double sum[13]={0},pro[13]={0}; int i,j,k; for(i=0;i

} for(k=0;k

层次分析法实现代码(MATLAB)

%% AHP weight calculation %%data input clc clear all A =[1 3 5 7 9 5;1/3 1 3 9 3 3;1/5 1/3 1 3 3 1/3;1/7 1/9 1/3 1 5 1/3;1/9 1/3 1/3 1/5 1 1/3;1/5 1/3 1 3 3 1]; %%Consistency calculation and weight vector calculation [n,n] = size(A); [v,d] = eig(A); r = d(1,1); CI = (r-n)/(n-1); RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.52 1.54 1.56 1.58 1.59]; CR = CI/RI(n); if CR<0.10 CR_Result = 'pass'; else CR_Result = 'no pass'; end % % Weight vector calculation w = v(:,1)/sum(v(:,1));

w = w'; % % output disp('The judgment matrix weight vector calculation report:'); disp('coincidence indicator:');disp(num2str(CI)); disp('Consistency ratio:');disp(num2str(CR)); disp(' Consistency test results:');disp(CR_Result); disp('eigenvalue:');disp(num2str(r)); disp('weight vector:');disp(num2str(w));

基于Matlab的层次分析法及其运用浅析

基于Matlab的层次分析法及其运用浅析 本文通过使用Matlab软件进行编程,在满足同一层次中各指标对所有的下级指标均产生影响的假定条件下,实现了层次分析法的分析运算。本程序允许用户自由设定指标层次结构内的层次数以及各层次内的指标数,通过程序的循环,用户只需输入判断矩阵的部分数据,程序可依据层次分析法的计算流程进行计算并作出判断。本程序可以方便地处理层次分析法下较大的运算量,解决层次分析法的效率问题,提高计算机辅助决策的时效性。 标签:Matlab层次分析法判断矩阵决策 在当前信息化、全球化的大背景下,传统的手工计算已不能满足人们高效率、高准确度的决策需求。因此计算机辅助决策当仁不让地成为了管理决策的新工具、新方法。基于此,本文在充分发挥计算机强大运算功能的基础上,选用美国MathWorks公司的集成数学建模環境Matlab R2009a作为开发平台,使用M语言进行编程,对计算机辅助决策在层次分析法中的运用进行讨论。试图通过程序实现层次分析法在计算机系统上的运用,为管理决策探索出新的道路。 1 层次分析法的计算流程 根据层次分析法的相关理论,层次分析法的基本思想是将复杂的决策问题进行分解,得到若干个下层指标,再对下层指标进行分解,得到若干个再下层指标,如此建立层次结构模型,然后根据结构模型构造判断矩阵,进行单排序,最后,求出各指标对应的权重系数,进行层次总排序。 1.1 构造层次结构模型在进行层次分析法的分析时,最主要的步骤是建立指标的层次结构模型,根据结构模型构造判断矩阵,只有判断矩阵通过了一致性检验后,方可进行分析和计算。其中,结构模型可以设计成三个层次,最高层为目标层,是决策的目的和要解决的问题,中间层为决策需考虑的因素,是决策的准则,最低层则是决策时的备选方案。一般来讲,准则层中各个指标的下级指标数没有限制,但在本文中设计的程序尚且只能在各指标具有相同数量的下级指标的假定下,完成层次分析法的分析,故本文后文选取的案例也满足这一假定。 1.2 建立判断矩阵判断矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较给判断矩阵的要素赋值时,常采用九级标度法(即用数字1到9及其倒数表示指标间的相对重要程度),具体标度方法如表1所示。 1.3 检验判断矩阵的一致性由于多阶判断的复杂性,往往使得判断矩阵中某些数值具有前后矛盾的可能性,即各判断矩阵并不能保证完全协调一致。当判断矩阵不能保证具有完全一致性时,相应判断矩阵的特征根也将发生变化,于是就可以用判断矩阵特征根的变化来检验判断的一致性程度。在层次分析法中,令判断矩阵最大的特征值为λmax,阶数为n,则判断矩阵的一致性检验的指标记为:

层次分析法的计算步骤

8.3.2 层次分析法的计算步骤 一、建立层次结构模型 运用AHP进行系统分析,首先要将所包含的因素分组,每一组作为一个层次,把问题条理化、层次化,构造层次分析的结构模型。这些层次大体上可分为3类 1、最高层:在这一层次中只有一个元素,一般是分析问题的预定目标或理想结果,因此又称目标层; 2、中间层:这一层次包括了为实现目标所涉及的中间环节,它可由若干个层次组成,包括所需要考虑的准则,子准则,因此又称为准则层; 3、最底层:表示为实现目标可供选择的各种措施、决策、方案等,因此又称为措施层或方案层。 层次分析结构中各项称为此结构模型中的元素,这里要注意,层次之间的支配关系不一定是完全的,即可以有元素(非底层元素)并不支配下一层次的所有元素而只支配其中部分元素。这种自上而下的支配关系所形成的层次结构,我们称之为递阶层次结构。 递阶层次结构中的层次数与问题的复杂程度及分析的详尽程度有关,一般可不受限制。为了避免由于支配的元素过多而给两两比较判断带来困难,每层次中各元素所支配的元素一般地不要超过9个,若多于9个时,可将该层次再划分为若干子层。 例如,大学毕业的选择问题,毕业生需要从收入、社会地位及发展机会方面考虑是否留校工作、读研究生、到某公司或当公务员,这些关系可以将其划分为如图8.1所示的层次结构模型。 图8.1 再如,国家综合实力比较的层次结构模型如图6 .2: 图6 .2 图中,最高层表示解决问题的目的,即应用AHP所要达到的目标;中间层表示采用某种措施和政策来实现预定目标所涉及的中间环节,一般又分为策略层、约束层、准则层等;最低层表示解决问题的措施或政策(即方案)。 然后,用连线表明上一层因素与下一层的联系。如果某个因素与下一层所有因素均有联系,那么称这个因素与下一层存在完全层次关系。有时存在不完全层次关系,即某个因素只与下一层次的部分因素有联系。层次之间可以建立子层次。子层次从属于主层次的某个因素。它的因素与下一层次的因素有联系,但不形成独立层次,层次结构模型往往有结构模型表示。 二、构造判断矩阵 任何系统分析都以一定的信息为基础。AHP的信息基础主要是人们对每一层次各因素的相对重要性给出的判断,这些判断用数值表示出来,写成矩阵形式就是判断矩阵。判断矩阵是AHP工作的出发点,构造判断矩阵是AHP的关键一步。 当上、下层之间关系被确定之后,需确定与上层某元素(目标A或某个准则Z)相联系的下层各元素在上层元素Z之中所占的比重。 假定A层中因素Ak与下一层次中因素B1,B2,…,Bn有联系,则我们构造的判断矩阵如表8.16所示。 表8.16 判断距阵 Ak B1 B2 …Bn

Matlab求解层次分析法程序代码【求解步骤+代码】

层次分析法 1)建立层次结构模型: (2)构造判断矩阵 判断矩阵() ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法): (3)单层排序及一致性检验 1、单层排序 求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量

ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此 权重的大小,便可确定该层因素的排序。

2、一致性检验 取一致性指标max 1 n CI n λ-= -,(n 为A 的阶数) 令CR RI = ,若0.1CR <,则认为A 具有一致性。 否则,需要对A 进行调整,直到具有满意的一致性为止。 (4)层次总排序及一致性检验 假定准则层12,,,n C C C 排序完成,其权重分别为12,, ,n a a a ,方案层P 包含m 个方 案:12,, ,m P P P 。其相对于上一层的()1,2, ,j C j n =对方案层P 中的m 个方案进行单层排序,其排序权重记为12,,,j j mj b b b ()1,2, ,j n =,则方案层P 中第i 个方案Pi 的总 排序权重为 1 n j ij j a b =∑,见下表: 从而确定层的排序。 例: 纯文本文件txt3.txt 中的数据格式如下: 1 1 1 4 1 1/ 2 1 1 2 4 1 1/2 1 1/2 1 5 3 1/2 1/ 4 1/4 1/ 5 1 1/3 1/3 1 1 1/3 3 1 1 2 2 2 3 3 1 1 1/4 1/2

4 1 3 2 1/ 3 1 1 1/4 1/5 4 1 1/2 5 2 1 1 3 1/3 1/3 1 1/7 3 7 1 1 1/3 5 3 1 7 1/5 1/7 1 1 1 7 1 1 7 1/7 1/7 1 1 7 9 1/7 1 1 1/9 1 1 matlab程序: >> fid=fopen('txt3.txt','r'); n1=6;n2=3; a=[]; for i=1:n1 tmp=str2num(fgetl(fid)); a=[a;tmp]; %读准则层判断矩阵 end for i=1:n1 str1=char(['b',int2str(i),'=[];']); str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1); for j=1:n2 tmp=str2num(fgetl(fid)); eval(str2); %读方案层的判断矩阵 end end ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标[x,y]=eig(a); lamda=max(diag(y)); num=find(diag(y)==lamda); w0=x(:,num)/sum(x(:,num)); cr0=(lamda-n1)/(n1-1)/ri(n1) for i=1:n1 [x,y]=eig(eval(char(['b',int2str(i)]))); lamda=max(diag(y)); num=find(diag(y)==lamda);

变异系数_层次分析_各种权重求解法

二、权重的确定方法 在统计理论和实践中,权重是表明各个评价指标(或者评价项目)重要性的权数,表示各个评价指标在总体中所起的不同作用。权重有不同的种类,各种类别的权重有着不同的数学特点和经济含义,一般有以下几种权重。 按照权重的表现形式的不同,可分为绝对数权重和相对数权重。相对数权重也称比重权数,能更加直观地反映权重在评价中的作用。 按照权重的形成方式划分,可分为人工权重和自然权重。自然权重是由于变换统计资料的表现形式和统计指标的合成方式而得到的权重,也称为客观权重。人工权重是根据研究目的和评价指标的内涵状况,主观地分析、判断来确定的反映各个指标重要程度的权数,也称为主观权重。 按照权重形成的数量特点的不同划分,可分为定性赋权和定量赋权。如果在统计综合评价时,采取定性赋权和定量赋权的方法相结合,获得的效果更好。 按照权重与待评价的各个指标之间相关程度划分,可分为独立权重和相关权重。 独立权重是指评价指标的权重与该指标数值的大小无关,在综合评价中较多地使用独立权重,以此权重建立的综合评价模型称为“定权综合”模型。 相关权重是指评价指标的权重与该指标的数值具有函数关系,例如,当某一评价的指标数值达到一定水平时,该指标的重要性相应的减弱;或者当某一评价指标的数值达到另一定水平时,该指标的重要性相应地增加。相关权重适用于评价指标的重要性随着指标取值的不同而发生变化的条件下,基于相关权重建立的综合评价模型被称为“变权模型”。比如评估环境质量多采用“变权综合”模型。 确定权重的方法较多,这里介绍统计平均法、变异系数法和层次分析法,这些也是实际工作种常用的方法。 (一) 统计平均法 统计平均数法(Statistical average method)是根据所选择的各位专家对各项评价指标所赋予的相对重要性系数分别求其算术平均值,计算出的平均数作为各项指标的权重。其基本步骤是: 第一步,确定专家。一般选择本行业或本领域中既有实际工作经验、又有扎实的理论基础、并公平公正道德高尚的专家; 第二步,专家初评。将待定权数的指标提交给各位专家,并请专家在不受外界干扰的前提下独立的给出各项指标的权数值; 第三步,回收专家意见。将各位专家的数据收回,并计算各项指标的权数均值和标准差;

AHP层次分析法计算原理

AHP层次分析法计算原理 一般地,可以选用三层结构对发展战略作出整体评价。 第一层为目标层,它是企业要实现的战略目标,第二层是评价因素层,它包括战略目标实现进行评价的所考虑的各种因素以及各因素之间的相对比值,并求出各要素实现总体目标所占的权重。第三层是指标层,即个评价因素需考虑的具体指标。 首先,根据总目标确定各要素之间的相对重要关系,构建两两比较判断矩阵,其基本形式为: 其中,a j表示对于C来说,A对A相对重要性的数值体现,通常a j可取1、2、3……、9以及它们的倒数作为标度。其中, 1――表示两个元素相比,具有同样的重要性; 3――表示两个元素相比,一个元素比另一个元素稍微重要; 5――表示两个元素相比,一个元素比另一个元素明显重要; 7――表示两个元素相比,一个元素比另一个元素强烈重要; 9――表示两个元素相比,一个元素比另一个元素极端重要。 2、4、6、8为上述相邻判断的中值。 矩阵中的元素具有以下特征:①a j >0,②a j二丄,③a H=1o a ji 然后,根据判断矩阵计算相对于战略目标各评价元素的相对重要 性次序的权重,首先计算判断矩阵A的最大特征根入max和其对应的经归一化后的特征向量W=[W i, W2 , W3, , W n ]T,计算的公式为:(8 - 1)

归一化后的特征向量W=[W i, W2, W3, , W n]T即为各评价因素对于总目标的权重。 (8 - 2)W i - n W i i J 其 1 n 中,W = a j (8 - 3) 入max为判断矩阵A的最大特征根,计算公式为: (8 - 4) 其中,(AW)i表示AW的第i个元素。 最后,对矩阵A进行一致性检验。当a q二空时,称判断矩阵为a jk 致性矩阵。判断一致性的指标为C.R.的取值。 C.R.嚅 (8 - 5) (8 - 6) R丄为随机一致性指标,其值是通过多次重复进行随机判断矩阵特征值的计算后得到的。随机一致性指标R丄的取值见表8-2。 表8-2随机一致性指标R.I?的取值表 维数12 345 6 7 8 9 10 J (AW)i i吕nw

层次分析法matlab程序举例

层次分析法程序举例: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); cil=(lamda-6)/5; crl=cil/1.26; w1=v(:,1)/sum(v(:,1)) 挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生。该生根据已有信息建立了一个层次结构模型,如下图所示。 程序: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); ci=(lamda-6)/5

cr=ci/1.26 w1=v(:,1)/sum(v(:,1)) B1=[1 1/4 1/2;4 1 3;2 1/3 1]; [v,d]=eig(B1); eigenvalue=diag(d); lamda=max(eigenvalue); cil1=(lamda-3)/2 cr1=cil1/0.52 b1w=v(:,1)/sum(v(:,1)) B2=[1 1/4 1/5;4 1 1/2;5 2 1]; [v,d]=eig(B2); eigenvalue=diag(d); lamda=max(eigenvalue); cil2=(lamda-3)/2 cr2=cil2/0.52 b2w=v(:,1)/sum(v(:,1)) B3=[1 1/2 2; 2 1 3;1/2 1/3 1]; [v,d]=eig(B3); eigenvalue=diag(d);

层次分析法计算权重在matlab中的实现

信息系统分析与设计作业 层次分析法确定绩效评价权重在matlab中的实现 小组成员:孙高茹、王靖、李春梅、郭荣1 程序简要概述 编写程序一步实现评价指标特征值lam、特征向量w以及一致性比率CR的求解。 具体的操作步骤是:首先构造评价指标,用专家评定法对指标两两打分,构建比较矩阵,继而运用编写程序实现层次分析法在MATLAB中的应用。 通过编写MATLAB程序一步实现问题求解,可以简化权重计算方法与步骤,减少工作量,从而提高人力资源管理中绩效考核的科学化电算化。 2 程序在matlab中实现的具体步骤 function [w,lam,CR] = ccfx(A) %A为成对比较矩阵,返回值w为近似特征向量 % lam为近似最大特征值λmax,CR为一致性比率 n=length(A(:,1)); a=sum(A); B=A %用B代替A做计算 for j=1:n %将A的列向量归一化 B(:,j)=B(:,j)./a(j); end s=B(:,1); for j=2:n s=s+B(:,j); end c=sum(s);%计算近似最大特征值λmax w=s./c; d=A*w lam=1/n*sum((d./w)); CI=(lam-n)/(n-1);%一致性指标 RI=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51];%RI为随机一致

性指标 CR=CI/RI(n);%求一致性比率 if CR>0.1 disp('没有通过一致性检验'); else disp('通过一致性检验'); end end 3 案例应用 我们拟构建公司员工绩效评价分析权重,完整操作步骤如下: 3.1构建的评价指标体系 我们将影响员工绩效评定的指标因素分为:打卡、业绩、创新、态度与品德。 3.2专家打分,构建两两比较矩阵 A = 1.0000 0.5000 3.0000 4.0000 2.0000 1.0000 5.0000 3.0000 0.3333 0.2000 1.0000 2.0000 0.2500 0.3333 0.5000 1.0000 3.3在MATLAB中运用编写好的程序实现 直接在MATLAB命令窗口中输入 [w,lam,CR]=ccfx(A) 继而直接得出 d = 1.3035 2.0000 0.5145 0.3926 w = 0.3102 0.4691 0.1242 0.0966 lam =4.1687

模糊层次分析法的Matlab实现

一、引言 层析分析法是将定量与定性相结合的多目标决策法,是一种使用频率很高的方法,在经济管理、城市规划等许多领域得到了广泛应用。由于其结果受主观思维的影响较大,许多科研工作者对其进行了深入的研究,将模糊理论与层次分析法相结合,提出了模糊层次分析法。为克服层次分析法中判断矩阵的一致性与人类思维的一致性存在的显著差异,文献[1-2]引入了模糊一致矩阵。为解决解的精度及收敛问题,文献[3-4]引入幂法来求排序向量。运用模糊层次分析法研究实际问题时,常采用迭代法来得到精度更高的排序向量,这就要求选择合适的初始值并通过大量的计算,为此,文中利用三种方法计算了初始排序向量,并给出了算法的Matlab程序,最后通过实例说明。 二、模糊层次分析法 为解决AHP种所存在的问题,模糊层次分析法引入模糊一致矩阵,无需再进行一致性检验,同时使用幂法来计算排序向量,可以减少迭代齿数,提高收敛速度,满足计算精度的要求.具体步骤: 1.构造优先关系矩阵 采用0.1~0.9标度[2],建立优先判断矩阵 2.将优先关系矩阵转化为模糊一致矩阵 3.计算排序向量 (1)和行归一法: (2)方根法: (3)利用排序法: (4)利用幂法[5-6]求精度更高的排序向量: 否则,继续迭代。 三、模糊层次分析法的程序实现 给出模糊层次分析法的Matlab程序。 clear; clc; E=input('输入计算精度e:') Max=input('输入最大迭代次数Max:')

F=input('输入优先关系矩阵F:'); %计算模糊一致矩阵 N=size(F); r=sum(F'); for i=1:N(1) for j=1:N(2) R(i,j)=(r(i)-r(j))/(2*N(1))+0.5; end end E=R./R'; % 计算初始向量---------- % W=sum(R')./sum(sum(R)); % 和行归一法 %--------------------------------------------------------- for i=1:N(1) S(i)=R(i,1); for j=2:N(2) S(i)=S(i)*R(i,j); end end S=S^(1/N(1)); W = S./sum(S);%方根法%-------------------------------------------------------- % a=input('参数a=?'); %W=sum(R')/(N(1)*a)-1/(2*a)+1/N(1); %排序法 % 利用幂法计算排序向量----V(:,1)=W'/max(abs(W)); %归一化 for i=1:Max V(:,i+1)=E*V(:,i); V(:,i+1)=V(:,i+1)/max(abs(V(:,i+1))); if max(abs(V(:,i+1)-V(:,i)))k=i; A=V(:,i+1)./sum(V(:,i+1)); break Else End End 四、计算实例

层次分析法的MATLAB实现(20210228092712)

MATLAB教程网 第八章层次分析法 层次分析法(Analytic Hierarchy Process,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。 MATLAB教程网 § 1层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次分析法建模,大体上可按下面四个步骤进行: (i)建立递阶层次结构模型; (ii)构造出各层次中的所有判断矩阵; (iii)层次单排序及一致性检验; (iv)层次总排序及一致性检验。 下面分别说明这四个步骤的实现过程。 1.1递阶层次结构的建立与特点 应用AHP分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类: (i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。 (ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。 (iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。 递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过9个。这是因为支配 的元素过多会给两两比较判断带来困难。 下面结合一个实例来说明递阶层次结构的建立。 例1假期旅游有R、F2、F3 3个旅游胜地供你选择,试确定一个最佳地点。在此问题中,你会根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反复比较3个侯选地点。可以建立如下的层次结构模型。 目标层0 选择旅游地

MatLab层次分析法代码

>> A= [1 2 5 6 4 7 2 4;1/2 1 2 4 2 7 1 2; 1/5 1/2 1 5 1 5 1/2 2 ; 1/6 1/4 1/5 1 1/3 3 1/2 1/4 ;1/4 1/2 1 3 1 5 1 2;1/7 1/7 1/5 1/3 1/5 1 1/7 1/5;1/2 1 2 2 1 7 1 2;1/4 1/2 1/2 4 1/2 5 1/2 1]; >> d=eig(A) %求全部特征值所组成的向量 >> [V,D]=eig(A) %求特征值及特征向量所组成的矩阵 >> A= [1 2 5 6 4 7 2 4;1/2 1 2 4 2 7 1 2; 1/5 1/2 1 5 1 5 1/2 2 ;1/6 1/4 1/5 1 1/3 3 1/2 1/4 ;1/4 1/2 1 3 1 5 1 2;1/7 1/7 1/5 1/3 1/5 1 1/7 1/5;1/2 1 2 2 1 7 1 2;1/4 1/2 1/2 4 1/2 5 1/2 1]; d=eig(A) %求全部特征值所组成的向量 [V,D]=eig(A) %求特征值及特征向量所组成的矩阵 d = 8.4243 -0.0020 + 1.7077i -0.0020 - 1.7077i -0.1240 + 0.7030i -0.1240 - 0.7030i -0.1103 + 0.3207i -0.1103 - 0.3207i 0.0483 V = Columns 1 through 7 0.7427 0.8569 0.8569 0.7153 0.7153 0.7100 0.7100 0.3893 0.1636 + 0.0231i 0.1636 - 0.0231i 0.1747 - 0.0500i 0.1747 + 0.0500i -0.2144 + 0.4572i -0.2144 - 0.4572i 0.2579 -0.0614 + 0.3195i -0.0614 - 0.3195i -0.0739 - 0.0916i -0.0739 + 0.0916i -0.1506 - 0.0176i -0.1506 + 0.0176i 0.0985 -0.0976 - 0.0879i -0.0976 + 0.0879i 0.0679 + 0.0635i 0.0679 - 0.0635i 0.0183 + 0.0558i 0.0183 - 0.0558i 0.2588 0.0176 + 0.1232i 0.0176 - 0.1232i 0.0227 + 0.3409i 0.0227 - 0.3409i -0.0373 - 0.2293i -0.0373 + 0.2293i 0.0519 0.0080 - 0.0585i 0.0080 + 0.0585i -0.0134 - 0.0662i -0.0134 + 0.0662i -0.0507 - 0.0850i -0.0507 + 0.0850i 0.3352 0.1943 - 0.0809i 0.1943 + 0.0809i -0.4321 + 0.2823i -0.4321 - 0.2823i 0.1131 + 0.3427i 0.1131 - 0.3427i

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 个元素相对于上一层某个因素的重要性时,使用数量化的相对权重a ij来表示,假设共有n个元素参与比较,则矩阵

层次分析法及其Matlab实现

第八章 层次分析法 层次分析法(Analytic Hierarchy Process ,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。 §1 层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次分析法建模,大体上可按下面四个步骤进行: (i )建立递阶层次结构模型; (ii )构造出各层次中的所有判断矩阵; (iii )层次单排序及一致性检验; (iv )层次总排序及一致性检验。 下面分别说明这四个步骤的实现过程。 1.1 递阶层次结构的建立与特点 应用AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类: (i )最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。 (ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。 (iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。 递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过9个。这是因为支配的元素过多会给两两比较判断带来困难。 下面结合一个实例来说明递阶层次结构的建立。 例1 假期旅游有1P 、2P 、3P 3个旅游胜地供你选择,试确定一个最佳地点。 在此问题中,你会根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反复比较3个侯选地点。可以建立如下的层次结构模型。 目标层O 选择旅游地 准则层C 景色 费用 居住 饮食 旅途 措施层P 1P 2P 3P

层次分析法例题

专题:层次分析法 一般情况下,物流系统的评价属于多目标、多判据的系统综合评价。如果仅仅依靠评价者的定性分析和逻辑判断,缺乏定量分析依据来评价系统方案的优劣,显然是十分困难的。尤其是物流系统的社会经济评价很难作出精确的定量分析。 层次分析法(Analytical Hierarchy Process )由美国著名运筹学家萨蒂(T .L .Saaty )于1982年提出,它综合了人们主观判断,是一种简明、实用的定性分析与定量分析相结合的系统分析与评价的方法。目前,该方法在国内已得到广泛的推广应用,广泛应用于能源问题分析、科技成果评比、地区经济发展方案比较,尤其是投入产出分析、资源分配、方案选择及评比等方面。它既是一种系统分析的好方法,也是一种新的、简洁的、实用的决策方法。 ◆ 层次分析法的基本原理 人们在日常生活中经常要从一堆同样大小的物品中挑选出最重的物品。这时,一般是利用两两比较的方法来达到目的。假设有n 个物品,其真实重量用w 1,w 2,…w n 表示。要想知道w 1,w 2,…w n 的值,最简单的就是用秤称出它们的重量,但如果没有秤,可以将几个物品两两比较,得到它们的重量比矩阵A 。 如果用物品重量向量W =[w 1,w 2,…w n ]T 右乘矩阵A ,则有: 由上式可知,n 是A 的特征值,W 是A 的特征向量。根据矩阵理论,n 是矩阵A 的唯一非零解,也是最大的特征值。这就提示我们,可以利用求物品重量比判断矩阵的特征向量的方法来求得物品真实的重量向量W 。从而确定最重的物品。 将上述n 个物品代表n 个指标(要素),物品的重量向量就表示各指标(要

matlab用层次分析法输入判断的源程序

matlab用层次分析法输入判断矩阵A(n阶)源程序如下: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(w);disp(t); %以下是一致性检验

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 function AHPInit1(x,y) %层次分析的初始化 %默认只有两层x为准则数,y为方案数 %CToT为准则对目标生成的比较阵 %EigOfCri为准则层的特征向量 %EigOfOpt为选项层的特征向量 EigOfCri=zeros(x,1);%准则层的特征向量 EigOfOpt=zeros(y,x); dim=x;%维度 RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准 %生成成对比较阵 for i=1:dim CToT(i,:)=input('请输入数据:'); end CToT %输出 pause, tempmatrix=zeros(x+1);

相关文档
最新文档