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 )机会多(如新单位或单位发展有后劲)等。
问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?暑假有3个旅游胜地可供选择。
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 1 2 2 2 3 3 1 1 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课件
案例二:投资决策问题
01 02 03
案例二:投资决策问题
3. 收集数据
通过尽职调查、行业报告等方式收集各风险 指标的相关数据。
4. 计算权重
根据层次分析法,计算各风险指标的权重。
5. 综合评价
根据各风险指标的权重和数据,对投资项目 的风险水平进行综合评估。
6. 结果展示
通过图表等方式展示投资项目的风险水平, 为投资者提供决策参考。
层次分析法教程 matlab课件
目 录
• 层次分析法简介 • 层次分析法的基本原理 • 层次分析法的MATLAB实现 • 层次分析法实例分析 • 层次分析法的优缺点及改进方向 • 参考文献
contents
CHAPTER
层次分析法简介
什么是层次分析法
层次分析法的发展历程
1973年由美国运筹学家T.L.Saaty提出,最初用于解决美国的能源问题。
缺点
主观性强
层次分析法中的权重赋值主要基于专家的主观 判断,因此存在一定的主观性。
不能处理动态变化
层次分析法主要用于静态决策,对于动态变化 的复杂问题处理能力较弱。
对复杂问题处理能力有限
层次分析法对于复杂问题的处理能力有限,对于高维度问题可能存在局限性。
改进方向
引入新的分析方法
加强客观性
拓展应用领域
之后被广泛应用于各种领域,包括经济、管理、社会规划等。
层次分析法的应用范围
01 02 03
CHAPTER
层次分析法的基本原理
建立层次结构
目标层 准则层 指标层
构造判断矩 阵
两两比较矩阵
判断矩阵的一致性
计算权重向量
权重向量的计算方法
通过判断矩阵,计算各指标的权重向量。
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中,我们可以使用ahp函数来实现层次分析法,以下是具体实现方法和代码示例。
1. 构建层次结构模型在进行层次分析法之前,首先需要构建层次结构模型。
层次结构模型是由多个因素构成的层次结构,每个因素都对应有多个子因素或者指标,最终目标会在最底层的因素或指标进行判断。
在Matlab中,我们可以使用ahp函数中的输入参数来构建层次结构模型。
2. 对各因素进行比较接着我们需要对各因素进行比较,即两两之间构建比较矩阵。
比较矩阵的大小取值应该为1,3,5,7,9这几个数,分别代表相当于、稍微重要、中等重要、非常重要和绝对重要。
在Matlab中,我们可以使用ahp函数中的输入参数来进行比较矩阵的构建。
3. 计算权重计算权重即为计算每个因素在最终目标中所占的权重大小。
我们可以根据比较矩阵来计算每个因素的权值,这可以通过Matlab的ahp函数中的输出参数进行得到。
以下是一个具体的代码示例:% 定义层次结构模型hierarchy = {'目标' {'因素1' '因素2' '因素3'}};% 构建比较矩阵% 比较矩阵大小代表相当于、稍微重要、中等重要、非常重要和绝对重要% 1代表相等,3代表比较略微重要等等,9代表比较绝对重要cmpMat{1} = [1 3 5;1/3 1 2;1/5 1/2 1];cmpMat{2} = [1 1/5 1/3;5 1 3;3 1/3 1];cmpMat{3} = [1 1/3 2;3 1 4;1/2 1/4 1];% 计算权重,得到结果存储在results变量中 results = ahp(hierarchy, cmpMat);% 层次分析法计算结果的可视化disp('计算结果:');disp(results);。
层次分析法及matlab程序
层次分析法及Matlab程序一、层次分析法简介层次分析法(Analytic Hierarchy Process,简称AHP)是一种用于决策分析的工具,由美国数学家托马斯·L·萨蒂(Thomas L. Saaty)在1970年代创立。
AHP通过将决策问题划分为多个层次和多个因素,将主要因素和次要因素划分归纳,以定量化的方法分析各因素间优先级的关系,从而对决策方案进行综合评价。
AHP的基本原理是通过构造判断矩阵、计算判断矩阵的特征向量、确定权重,最终得到决策方案的优先级,从而找到最终的最优决策方案。
其主要优点是可定量化、简单易行,适用于大部分决策问题。
二、层次分析法的步骤AHP的具体步骤如下:1.确定决策目标;2.确定影响决策的因素,并将它们分成若干类别,即形成层次结构;3.为每个因素构建判断矩阵,评估每个因素的重要程度(用1~9的数字表示);4.将各判断矩阵进行一致性检验,并计算其权重;5.对计算得到的权重进行优先级排序,选出最优决策方案。
三、Matlab程序实现AHP计算在Matlab中,可以通过编写程序实现AHP的计算。
以下是一份简单的Matlab 程序,用于计算AHP的权重:% 输入判断矩阵A = [1 4 5;1/4 1 2;1/5 1/2 1];% 计算特征向量[V, D] = eig(A);[m, idx] = max(max(D));w = V(:,idx)';w = w/sum(w);% 一致性检验RI = [0 0 0.58 0.9 1.12 1.24 1.32 1.41 1.45 1.49];CR = (max(D) - 3)/2/RI(length(A));CI = sum(CR)/length(A);if CI < 0.1disp('一致性较好,权重为:');disp(w);elsedisp('一致性差,需重新评估判断矩阵!');end该程序用于计算一个3x3的判断矩阵的权重,并输出一致性检验的结果。
基于Matlab的层次分析法与运用
基于Matlab的层次分析法与运用摘要:本文通过使用Matlab软件进行编程,在满足同一层次中各指标对所有的下级指标均产生影响的假定条件下,实现了层次分析法的分析运算。
本程序允许用户自由设定指标层次结构内的层次数以及各层次内的指标数,通过程序的循环,用户只需输入判断矩阵的部分数据,程序可依据层次分析法的计算流程进行计算并作出判断。
本程序可以方便地处理层次分析法下较大的运算量,解决层次分析法的效率问题,提高计算机辅助决策的时效性。
关键词:Matlab层次分析法判断矩阵决策在当前信息化、全球化的大背景下,传统的手工计算已不能满足人们高效率、高准确度的决策需求。
因此计算机辅助决策当仁不让地成为了管理决策的新工具、新方法。
基于此,本文在充分发挥计算机强大运算功能的基础上,选用美国MathWork公司的集成数学建模环境MatlabR2022a作为开发平台,使用M语言进行编程,对计算机辅助决策在层次分析法中的运用进行讨论。
试图通过程序实现层次分析法在计算机系统上的运用,为管理决策探索出新的道路职称论文。
1层次分析法的计算流程根据层次分析法的相关理论,层次分析法的基本思想是将复杂的决策问题进行分解,得到若干个下层指标,再对下层指标进行分解,得到若干个再下层指标,如此建立层次结构模型,然后根据结构模型构造判断矩阵,进行单排序,最后,求出各指标对应的权重系数,进行层次总排序。
1.1构造层次结构模型在进行层次分析法的分析时,最主要的步骤是建立指标的层次结构模型,根据结构模型构造判断矩阵,只有判断矩阵通过了一致性检验后,方可进行分析和计算。
其中,结构模型可以设计成三个层次,最高层为目标层,是决策的目的和要解决的问题,中间层为决策需考虑的因素,是决策的准则,最低层则是决策时的备选方案。
一般来讲,准则层中各个指标的下级指标数没有限制,但在本文中设计的程序尚且只能在各指标具有相同数量的下级指标的假定下,完成层次分析法的分析,故本文后文选取的案例也满足这一假定。
Matlab笔记——层次分析法
一、概述层次分析法(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 个元素参与比较,则矩阵1111()n ij n n n nn a a A a a a ⨯⎛⎫ ⎪== ⎪ ⎪⎝⎭LM OM L 称为判断矩阵(或成对比较矩阵)。
Matlab建模教程层次分析法
第八章层次分析法层次分析法(Analytic Hierarchy Process,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。
它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。
§ 1层次分析法的基本原理与步骤人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。
层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。
运用层次分析法建模,大体上可按下面四个步骤进行:(i)建立递阶层次结构模型;(ii)构造出各层次中的所有判断矩阵;(iii)层次单排序及一致性检验;(iv)层次总排序及一致性检验。
下面分别说明这四个步骤的实现过程。
1.1递阶层次结构的建立与特点应用AHP分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。
在这个模型下,复杂问题被分解为元素的组成部分。
这些元素又按其属性及关系形成若干层次。
上一层次的元素作为准则对下一层次有关元素起支配作用。
这些层次可以分为三类:(i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。
(ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。
(iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。
递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。
每一层次中各元素所支配的元素一般不要超过9个。
这是因为支配的元素过多会给两两比较判断带来困难。
下面结合一个实例来说明递阶层次结构的建立。
例1假期旅游有R、F2、F3 3个旅游胜地供你选择,试确定一个最佳地点。
(完整版)层次分析法及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-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层次分析法
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实现方法
层次分析法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=;i=2;k=abs(m(2)-m(1));while k>pi=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));enda=sum(y(:,i));w=y(:,i)/a;t=m(i);disp(w);disp(t);%以下是一致性检验CI=(t-n)/(n-1);RI=[0 0 ]; CR=CI/RI(n);if CR<disp('此矩阵的一致性可以接受!');disp('CI=');disp(CI);disp('CR=');disp(CR);endfunction AHPInit1(x,y)%层次分析的初始化%默认只有两层x为准则数,y为方案数%CToT为准则对目标生成的比较阵%EigOfCri为准则层的特征向量%EigOfOpt为选项层的特征向量EigOfCri=zeros(x,1);%准则层的特征向量EigOfOpt=zeros(y,x);dim=x;%维度RI=[0 0 ];%RI标准%生成成对比较阵for i=1:dimCToT(i,:)=input('请输入数据:'); endCToT %输出pause,tempmatrix=zeros(x+1); tempmatrix=AHP1(dim,CToT); EigOfCri=tempmatrix(1:x);ci1=tempmatrix(1+x);EigOfCrici1pause,matrix=cell(x);%元胞数组ci=zeros(1,x);dim=y;for k=1:xmatrix{k}=zeros(dim,dim);%生成成对比较阵for i=1:dimmatrix{k}(i,:)=input('请输入数据:'); end%判断该比较阵是不是一致阵tempmatrix=zeros(y+1);tempmatrix=AHP1(dim,matrix{k}); EigOfOpt(:,k)=tempmatrix(1:y);ci(k)=tempmatrix(y+1);EigOfOpt(:,k)ci(k)pause,end%下面进行组合一致性检查RI=[0 0 ];CR=ci1/RI(x)+ci*EigOfCri/RI(y);CRif CR>disp('组合一致性不通过,请重新评分') returnend%下面根据比较阵的结果进行组合result=EigOfOpt*EigOfCri;function f=AHP1(dim,CmpMatrix)RI=[0 0 ];%判断该比较阵是不是一致阵%判断该比较阵是不是一致阵[V,D]=eig(CmpMatrix);%求得特征向量和特征值%求出最大特征值和它所对应的特征向量tempNum=D(1,1);pos=1;for h=1:dimif D(h,h)>tempNumtempNum=D(h,h);pos=h;endendeigVector=V(:,pos);maxeig=D(pos,pos);maxeigdimCI=(maxeig-dim)/(dim-1);CR=CI/RI(dim);disp('准则对目标影响度评分生成的矩阵不是一致阵,请重新评分')returnendCI%归一化sum=0;for h=1:dimsum=sum+eigVector(h);endsumpause,for h=1:dimeigVector(h)=eigVector(h)/sum;endf=[eigVector;CI];层次分析法(Analytic Hierarchy Process,简称AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。
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层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法实例与步骤结合一个具体例子,说明层次分析法的基本步骤和要点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
、概述层次分析法(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 个元素参与比较,则矩阵称为判断矩阵(或成对比较矩阵)Saaty 根据绝大多数人认知事物的心理习惯, 建议用 1~9 及其倒数作为标度来确定 a ij 的值。
其中, 2, 4, 6, 8 分别介于 1, 3, 5, 7, 9 对应的重要程度之间。
显然,A 中的元素满足:i) a ij > 0; ii)a ji = 1/ a ij ; iii) a ii =1称为正互反矩阵。
例如,选购笔记本电脑模型中, 可以根据实际三台电脑的重量得 到电脑对a 11 LA M O a n1 La1nM(aij )n nann准则层B3 的判断矩阵(a ij 可以取笔记本电脑j 与i 的重量之比,重量越轻越好):1 1/3 1/53 1 3/5A B3 C5 5/3 13.层次单排序及判断矩阵的一致性检验通常用特征根法从判断矩阵导出,单一准则下元素相对排序权重。
定义若n阶正互反矩阵(a ij )nxn满足a ik Q j = Q (对应a j =w/w,故需要a k a kj =(w/w)/( w k/w) = a j ),则称(aj nxn 为一致性矩阵。
特征根法的基本思想是,当正互反矩阵(a ij)nx n为一致性矩阵时,对应于判断矩阵的最大特征根入max的特征向量,经归一化后(使向量中各元素之和等于1)即为排序权向量,记为w w的元素为同一层次因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。
能否进行层次单排序,就看判断矩阵是否为一致性矩阵,有如下定理:定理n阶正互反矩阵A为一致性矩阵的充要条件是,A的最大特征值入max = n.在实际操作中,由于客观事物的复杂性以及人们对事物判断比较时的模糊性,很难构造出完全一致的判断矩阵。
因此,Satty在构造层次分析法时,提出了一致性检验,所谓一致性检验是指判断矩阵允许有一定不一致的范围。
致性检验步骤如下:1)计算判断矩阵A的最大特征值入max;2)求出一致性指标(Consistencey Index ):.=0表示完全一致,.越大越不一致;3)用随机模拟取平均的方法,求相应的平均随机一致性指标或者直接用Satty模拟1000次得到的.表:4)计算一致性比率:5)判断,当.< 时,认为判断矩阵A有满意的一致性;若. >,应考虑修正判断矩阵A.4.计算各元素对目标层的合成权重(层次总排序)为了实现层次分析法的最终目的,需要从上而下逐层进行各层元素对目标合成权重的计算。
设已计算出第k-1层n k-1个元素相对于目标的合成权重为:(k 1) , k 1 k 1 . k 1、Tw (W1 ,W2 丄,W n k1)再设第k 层的n k 个元素关于第k-1层第j 个元素(j=1,…,n k -1 )的 单一准则排序权重向量为:k (k)(k)(k) Tu j (u 1j ,u 2j ,L ,u n kj )上式对k 层的n k 个元素是完全的,若某些元素不受k-1层第j 个元素w(k)U(k)w (k 1)按递归展开得w(k)U(k)U (k1)L U (3) w (2)写成分量形式为nk 1(k) (k) (k 1) w i (k)u i (j k)w (j k 1) , i1,L ,n kj1各层元素对目标层的合成排序权重向量是否可以满意接受, 与单 一准则下的排序问题一样,需要进行综合一致性检验:当.(k)<时,则认为层次结构在第 k 层以上的判断具有整体满意的一致性。
注:实际应用中,整体一致性检验常不予进行。
主要原因是,整 体考虑十分困难; 其次若每个单一准则下的判断矩阵具有满意的一致 性,而整体达不到满意的一致性时,调整起来非常困难。
另外,整体支配,相应位置用 0 补充,于是得到n k X n k -1阶矩阵:(k) (k) u1(1k) u1(2k)(k)(k) U (k )u 2(k1)u 2(k2)UM M u(k)u (k )un k 1un k 2 L u 1(kn k) 1L u 2(kn )k 1 OM L u (n kk n )k 1从而可以得到第k 层的n k 个元素关于目标层的合成权重向量:致性的背景也不如单一准则下的背景清晰,它的必要性有待进 研究。
三、Matlab 实现实现层次分析法的Matlab 函数:fun ctio n [W,ah pResult] = ahp(C)沁次分析法%(为nx 1的元胞数组,存储整个层次模型结构:第2层对第1层、第3层对第2层、…第n+1层对第n 层%假设第k 层有m_个元素,从左到右依次编号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表示不受支配%\返回方案层对目标层的最终权重向量%ahpResult 为nX 1的元胞数组,存储层次分析过程各层的结果信息, ahpResult{k}也是元胞数组%ahpResult{k}{1,j} 返回第k+1层所有元素相对第k 层j 元素的权重向量, 第k+1层元素不受第k 层j 元素支配的权重为0%ah pResult{k}{2,j}阵的最大特征值%ah pResult{k}{3,j}阵的一致性比率.RI=[0 0];n = len gth(C);ahp Result = cell( n,1); for k = 1:nm_k = size(C{k},2);% k 层的元素个数ahp Result{k} = cell(m_k,1); for kk = 1:m_k%求第k+1层各元素对第k 层kk 元素的成对比较矩阵的特征值和特征向量[V,D] = eig(C{k}{1,kk}); [maxD,i nd] = max(diag(D));%求最大特征值和其位置%为存储第k+1层所有元素相对k 层kk 元素的权重预留出空间,长度应等于C{k}{2,kk}的长度ahp Result{k}{1,kk} = zeros(le ngth(C{k}{2,kk}),1);%将相应正互反矩阵属于最大特征值的特征向量归一化后赋给 ah pResult{k}{1,kk}中相应位置返回第k+l 层所有元素相对于第k 层第j 元素的判断矩 返回第k+l 层所有元素相对于第k 层第j 元素的判断矩%平均随机一致性指标%得到C 的长度n,于是知道模型总层数为n+1%'存储各层结果信息% 这些位置由逻辑数组C{k}{2,kk}决定ahp Result{k}{1,kk}(C{k}{2,kk}) = V(:,i nd)/sum(V(:,i nd));ahpResult{k}{2,kk} = maxD; % C{k}{1,kk}正互反矩阵的最大特征值nn = size(C{k}{1,kk},1); % C{k}{1,kk}的阶数ahp Result{k}{3,kk} = (maxD-nn)/(nn-1)/RI( nn); % 相应的一致性比率.endendW = ahp Result{1}{1,1};for k = 2:n% cat(2,ahpResult{k}{1,:}) 把k+1层所有元素相对k层各个元素的权重向量横向排在一起生成权重矩阵UA(k)W = cat(2,ah pResult{k}{1,:})*W;end用该函数实现层次分析法的关键是,把整个层次结构存入嵌套元胞数组C 中(见程序注释):C{k}——存储第k+1层与第k层的结构(k=1,…,n);设第k层有m个元素,其中第j元素与第k+1层的结构关系存储到C{k}{…,j}中(j=1,…,m),需要存储的信息有:①受第j元素支配的第k+1层各元素的判断矩阵②第k+1层各元素是否受第k层第j元素支配(即有没有连线)所以需要两个位置,即C{ k}{1, j}和C{k}{2, j}.例1某工厂有一笔企业留成利润, 需要决定如何分配使用。
已经决定有三种用途:奖金、集体福利措施、引进技术设备。
考察准则也有三个:是否能调动职工的积极性、是否有利于提高技术水平、考虑改善职工生活条件。
建立如下层次模型:经过工厂决策人员讨论,得到如下判断矩阵:1.第2层对第1层三个元素G, C2, C3都受A支配,判断矩阵C{1}{1,1}为相应的逻辑数组C{1}{2,1}为[true truetrue].2.第3层对第2层(1)第3层对第2层第1个元素G受C支配的只有两个元素R和P2,判断矩阵C{2}{1,1}相应的逻辑数组C{2}{2,1}为[true truefalse].⑵第3层对第2层第2个元素G受G支配的只有两个元素R和P3,判断矩阵C{2}{1,2}相应的逻辑数组C{2}{2,2}为[false true true].⑶第3层对第2层第3个元素G受G支配的只有两个元素P1和P2,判断矩阵C{2}{1,3}相应的逻辑数组C{2}{2,3}为[true truefalse].3.有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数即可%第2层(C层)关于第1层(目C = cell(2,1); %共n+1=3层,故n=2C{1}{1,1} = [1 1/5 1/3;5 1 3;3 1/3 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]; %相应的逻辑数组f =A = -[ 25;;];3层(P 层)关于第2层第2元素C2的判断矩阵 应的逻辑数组3层(P 层)关于第2层第3元素C3的判断矩阵 应的逻辑数组[W,ah pResult]=ah p(C);%调用 ahp 求解W %俞出总排序的权重向量运行结果:W 就是方案层各个方案所占的比重, 可见引进技术设备所占比重最大,改善员工福利次之。