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

合集下载

层次分析法判断矩阵求权值以及一致性检验程序

层次分析法判断矩阵求权值以及一致性检验程序

function [w,CR]=mycom(A,m,RI)[x,lumda]=eig(A);r=abs(sum(lumda));n=find(r==max(r));max_lumda_A=lumda(n,n);max_x_A=x(:,n);w=A/sum(A);CR=(max_lumda_A-m)/(m-1)/RI;end本matlab程序用于层次分析法中计算判断矩阵给出的权值已经进行一致性检验。

其中A为判断矩阵,不同的标度和评定A将不同。

m为A的维数RI为判断矩阵的平均随机一致性指标:根据m的不同值不同。

当CR<0.1时符合一致性检验,判断矩阵构造合理。

下面是层次分析法的简介,以及判断矩阵构造方法。

一.层次分析法的含义层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.Saaty)正式提出。

它是一种定性和定量相结合的、系统化、层次化的分析方法。

由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。

它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。

二.层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一样的。

(1)层次分析法的原理层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后得用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。

这里所谓“优先权重”是一种相对的量度,它表明各备择方案在某一特点的评价准则或子目标,标下优越程度的相对量度,以及各子目标对上一层目标而言重要程度的相对量度。

层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。

使用Matlab程序实现层次分析法(AHP)的简捷算法

使用Matlab程序实现层次分析法(AHP)的简捷算法

使用Matlab程序实现层次分析法(AHP)的简捷算法作者:于晶来源:《科技风》2016年第16期摘要:层次分析法简便易懂,可操作性和实用性强,但是构造判断矩阵往往不容易,计算判断矩阵的特征值特别繁琐且易出错,得到的一致性检验不易调整,这些都给使用层次分析法带来困难,以往使用办公软件电子表格(Excel)的方法计算单层次排序和总层次排序,这种方法使得计算和一致性检验变得容易,文本使用Matlab程序使得计算变得更容易,也使得层次分析法在多个领域得到推广和应用。

关键词:层次分析法;Excel;matlab1 层次分析法(AHP法)的原理和解决思路层次分析法是对定性问题进行定量分析的一种简便、灵活而又实用的多准则决策方法。

它的原理是模拟人的决策过程,具有思路清晰、方法简便、适用面广、系统性强等特点。

是解决多目标、多准则、多层次复杂问题决策或者大型工程风险分析的有力工具。

层次分析法解决问题的思路就是用下一次因素的相对排序求得上一次因素的相对排序。

按照因素之间的相互影响和隶属关系将各层次因素聚类组合,形成一个递进有序的层次结构模型。

2 层次分析法的应用难点2.1合适的判断矩阵构造不易模型确定后,按照模型层次结构和模型的各因素的相对重要性,综合专家群体咨询意见,采用标度法[ 1 ],从数字1/9一9中选取恰当值,构造各层的判断矩阵,并使之尽量符合一致性检验,这一步成为问题的关键。

但实际上系统越复杂,判定矩阵的阶数就会越高,计算就会越困难。

2.2计算量大,步骤繁琐层次分析法首先要求的就是判断矩阵的最大特征值?姿max,及其正规化的特征向量w,向量w的分量wi是相应因素的单层次权值,这部分计算理论上基于线性代数知识,不用计算机也可以将其计算出来。

但实际上,当矩阵的阶数高于4阶时,人工计算就变得相当困难且易出错,如使用计算机计算,就容易得多,常用的方法有Basic语言,电子表格Excel等方法。

但计算量都有待改进。

(完整版)层次分析法及matlab程序

(完整版)层次分析法及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)机会多(如新单位或单位发展有后劲)等。

问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?工作选择贡献收入发展声誉工作环境生活环境B.假期旅游地点选择暑假有3个旅游胜地可供选择。

基于MATLAB的AHP实现

基于MATLAB的AHP实现

目录中英文摘要 (2)1.层次分析法 (3)1.1 概述 (3)1.2 AHP的基本原理和步骤[6] (3)1.2.1 递阶层次结构原理 (3)1.2.2 标度原理 (4)1.2.3 排序原理 (4)1.3 AHP的层次总排序及其一致性检验 (6)1.3.1 层次总排序 (6)1.3.2 AHP的一致性检验 (7)2.MATLAB的基本内容 (7)MATLAB矩阵 (8)MATLAB矩阵的建立 (8)矩阵的特征值与特征向量 (8)2.2 MATLAB的M文件 (9)3.基于MATLAB的AHP实现 (10)3.1 AHP的MATLAB的计算流程框图 (10)3.2 平均随机一致性指标的MATLAB实现 (10)3.3 AHP各环节的MATLAB实现 (12)3.3.1 特征向量及其归一化的MATLAB实现 (12)3.3.2 一致性检验及单排序的MATLAB实现 (13)3.3.3 一致性检验及总排序的MATLAB实现 (14)选择最优排序 (15)4.基于MATLAB的AHP应用 (16)4.1 挑选合适工作问题 (16)5.结束语 (26)参考文献 (27)致谢 (28)基于MATLAB的AHP实现摘要:在实际统计分析工作中,常会遇到多指标的综合评价和多目标决策的问题。

许多人利用层次分析法将复杂的问题分解为假设干层次和假设干因素,在各因素之间进行简单的比较和计算,就可以得出不同方案的权重,为最正确方案的选择提供依据且使问题简单化。

但是,受计算条件的限制,不能及时给出结果,从而影响现场决策。

MATLAB是当今最优秀的科技应用软件之一,利用MA TLAB对层次分析法的判断、分析和计算过程进行处理后,为决策者提供方便友好的对话界面。

只要决策者在MATLAB软件中输入自己的层次结构方案和两两比照的判断矩阵后能迅速得出相应的结果,为解决实际问题提供一个快捷的方法。

从而提高人们的决策效率,同时也为科技工作者使用层次分析法提供一种新思路。

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

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

层次分析法1)建立层次结构模型:(2)构造判断矩阵判断矩阵()ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法):(3)单层排序及一致性检验1、单层排序求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此权重的大小,便可确定该层因素的排序。

2、一致性检验取一致性指标max 1nCI 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 的总排序权重为1nj ijj a b=∑,见下表:从而确定层的排序。

例:纯文本文件txt3.txt 中的数据格式如下:1 1 1 4 1 1/2 1 1 2 4 1 1/2 1 1/2 1 53 1/2 1/4 1/4 1/5 1 1/3 1/3 1 1 1/3 3 1 12 2 23 3 11 1/4 1/24 1 32 1/3 11 1/4 1/54 1 1/25 2 11 3 1/31/3 1 1/73 7 11 1/3 53 1 71/5 1/7 11 1 71 1 71/7 1/7 11 7 91/7 1 11/9 1 1matlab程序:>> fid=fopen('txt3.txt','r');n1=6;n2=3;a=[];for i=1:n1tmp=str2num(fgetl(fid));a=[a;tmp]; %读准则层判断矩阵endfor i=1:n1str1=char(['b',int2str(i),'=[];']);str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1);for j=1:n2tmp=str2num(fgetl(fid));eval(str2); %读方案层的判断矩阵endendri=[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);w1(:,i)=x(:,num)/sum(x(:,num));cr1(i)=(lamda-n2)/(n2-1)/ri(n2);endcr1, ts=w1*w0, cr=cr1*w0层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法实例与步骤结合一个具体例子,说明层次分析法的基本步骤和要点。

层次分析法报告

层次分析法报告
实验内容、操作步骤: 首先理解层次分析法的原理、熟悉其步骤. 然后对 matlab 软件进行学习,掌握基本的 matlab 程序语言的含义并应用。 最后利用 matlab 程序对老师给出的层次分析法案例进行分析。 在进行层次分析时,首先根据各层次的关系构造判断矩阵。然后利用[x,y]
=eig()函数其判断矩阵的特征值,利用 lamda=max(diag(y)) 求矩阵的最 大特征根,并进行一致性检验。在第一个案例当中,判断矩阵 B1、B2、B3、 C1、C2、C3、C4、C 5、C6 均为 2 维方阵,绝对符合一致性检验,所以在程序中 为节省空间,不对其进行一致性检验。最后求出方案层的总权重并输出。
if CR<0.10
disp(’C 矩阵的一致性可以接受!’);
1/3 2 1 1 3 3 5 3 5 5 5 2 4 1/2 1/3 1 4 1/2 1 6 3 3 1 1/3 1/4 1/3 1/4 1 2 1/2 2 2 1/2
1/3 1/2 1/3 1/5 2 1 1 2 1 3 1
1/2 1 1/3 1/5 1 2 1/2 1 2 2 1/2 1/2 1/4 1/6 1/5 1/6 1/2 1 1/2 1 1/2 2 1/2 1/5 1/4 1/5 1/3 1/2 1/3 1/2 2 1 1 1/2 1/5 1/4 1/5 1/3 2 1 2 1/2 1 1 ]; 准则层与方案层: A1=[ 1 5 1/3;1/5 1 1/7;3 7 1 ];A2=[1 1/3 3;3 1 5; 1/3 1/5 1 ]; A3=[1 1/3 3;3 1 5; 1/3 1/5 1 ];A4=[1 1/3 3;3 1 5; 1/3 1/5 1 ]; A5= [1 1/2 3;2 1 5; 1/3 1/5 1];A6= [1 1/3 3;3 1 5;1/3 1/5 1]; A7=[1 1/3 3;3 1 5;1/3 1/5 1]; A8=[1 1/3 3;3 1 5;1/3 1/5 1]; A9=[1 1/2 1/3;2 1 1/2;3 2 1]; A10=[1 2 1/3;1/2 1 1/5;3 5 1]; A11=[1 1/3 3;3 1 5;1/3 1/5 1]; 实现层次分析法的 MATLAB 程序如下: C=[1 4 1/3 1/3 1/2 1 3 2 2 2 2 ; 1/4 1 1/2 1/2 1/4 3 2 1 4 5 5 ;

MATLAB层次分析法

MATLAB层次分析法

C11
C1
0
桥梁 D1
隧道 D2
渡船 D3
(1)过河效益层次结构
例3 横渡江 河、海峡方 案的抉择
经济代价 B1
过河的代价 A
社会代价 B2
环境代价 B3
投 操 冲冲 交 居 汽 对 对
入 作 击击 通 民 车 水 生
资 维 渡生 拥 搬 排 的 态
金 护 船活 挤 迁 放 污 的
C1 C2 业 方 C5 C6 物 染 破






对外 贸易
位 置
供选择的岗位
例3 横渡江 河、海峡方 案的抉择
经济效益 B1
过河的效益 A
社会效益 B2
节 收岸 当 建安 交 自
省 入间 地 筑全 往 豪
时 C2 商 商 就 可 沟 感

业 业 业 靠 通 C8
C1
C3 C4 C5 C6 C7
环境效益 B3
舒进 美
适出 化
C9
方 便
Ci : C j aij
A
(aij )nn , aij
0,
a ji
1 aij
选 择
1 1/ 2 4 3 3
2
1
7
5
5
A~成对比较阵
旅 A 1/ 4 1/ 7
游 地
1/ 3
1/ 5
1/ 3 1/ 5
1 2
1/ 2 1
1/ 3
1
A是正互反阵
3 1 1
要由A确定C1,…, Cn对O的权向量
2
n
min
wi ( i1,,n ) i1
n j1 ln aij
ln wi wj

层次分析法判断矩阵

层次分析法判断矩阵

层次分析法判断矩阵层次分析法判断矩阵程序先确定判断矩阵;然后用以下程序就好了:%层次分析法的matlab程序%%%%diertimoxingyiclc,cleardisp(输入判断矩阵);% 在屏幕显示这句话A=input(A=);% 从屏幕接收判断矩阵[n,n]=size(A);% 计算A的维度,这里是方阵,这么写不太好x=ones(n,100);% x为n行100列全1的矩阵y=ones(n,100);% y同xm=zeros(1,100);% m为1行100列全0的向量m(1)=max(x(:,1));% x第一列中最大的值赋给m的第一个分量y(:,1)=x(:,1);% x的第一列赋予y 的第一列x(:,2)=A*y(:,1);% x的第二列为矩阵A*y(:,1)m(2)=max(x(:,2));% x 第二列中最大的值赋给m的第二个分量y(:,2)=x(:,2)/m(2);% x的第二列除以m(2)后赋给y的第二列p=0.0001;i=2;k=abs(m(2)-m(1));% 初始化p,i,k为m(2)-m(1)的绝对值while k>p% 当k>p是执行循环体i=i+1;% i 自加1x(:,i)=A*y(:,i-1);% x的第i列等于A*y的第i-1列m(i)=max(x(:,i));% m的第i个分量等于x第i列中最大的值y(:,i)=x(:,i)/m(i);% y的第i列等于x的第i列除以m的第i个分量k=abs(m(i)-m(i-1));% k等于m(i)-m(i-1)的绝对值enda=sum(y(:,i));% y的第i列的和赋予aw=y(:,i)/a;% y的第i 列除以at=m(i);% m的第i个分量赋给tdisp(权向量:);disp(w);% 显示权向量wdisp(最大特征值:);disp(t);% 显示最大特征值t %以下是一致性检验CI=(t-n)/(n-1);% t-维度再除以维度-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);% 计算一致性if CR摘要在定性问题的决策中,AHP是一种优秀的方法,其基础是对评价对象的两两比较,并用比较结果构造判断矩阵,而这些都依赖于决策者选用的偏好关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档