数学建模分析模型:层次分析法(附MATLAB代码)

层次分析法

一、问题引入

旅游有苏杭、北戴河、桂林三个旅游胜地供你选择,根据诸如景色、费用、居住、饮食和旅途条件等一些准则确定一个最佳地点。

二、递阶层次结构的建立

应用AHP分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类:

(1)目标层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果。

(2)准则层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则。

(3)方案层:这一层次包括了为实现目标可供选择的各种措施、决策方案等。

根据问题描述可以构建如下递阶层次结构

图1 层次结构模型

三、构造判断矩阵

通过各要素之间相互两两比较,并确定各准则层对目标层的权重以及方案层对准则层的权重(引用数字1~9及倒数作为标度,如表1所示)构造判断矩阵。

表1 标度的含义

标度

含义

1

表示两个因素相比,具有相同重要性

3

表示两个因素相比,前者比后者稍重要

5

表示两个因素相比,前者比后者明显重要

7

表示两个因素相比,前者比后者强烈重要

9

表示两个因素相比,前者比后者极端重要

2,4,6,8

表示上述相邻判断的中间值

倒数

若因素i 与因素 j 的重要性之比为 aij ,那么因素 j 与因素i 重要性 之比为 aji aij =1/

表2准则层对于目标层权重表

景色

费用

居住

饮食

旅途

景色

1

5

5

1/3

8

费用

1/5

1

1/4

1/6

2

居住

1/5

4

1

1/5

3

饮食

3

6

5

1

6

旅途

1/8

1/2

1/3

1/6

1

根据表2构造判断矩阵

表3景色对于方案层权重表

景色

苏杭

北戴河

桂林

苏杭

1

2

5

北戴河

1/2

1

2

桂林

1/5

1/2

1

根据表3构造判断矩阵

表4费用对于方案层权重表

费用

苏杭

北戴河

桂林

苏杭

1

1/3

1/8

北戴河

3

1

1/3

桂林

8

3

1

根据表4构造判断矩阵

表5居住对于方案层权重表

居住

苏杭

北戴河

桂林

苏杭

1

1

3

北戴河

1

1

3

桂林

1/3

1/3

1

根据表5构造判断矩阵

表6饮食对于方案层权重表

饮食

苏杭

北戴河

桂林

苏杭

1

3

4

北戴河

1/3

1

1

桂林

1/4

1

1

根据表6构造判断矩阵

表7旅途对于方案层权重表

旅途

苏杭

北戴河

桂林

苏杭

1

1

1/4

北戴河

1

1

1/4

桂林

4

4

1

根据表7构造判断矩阵

四、层次单排序及一致性检验

(1)根据我们构造的判断矩阵,求解各个指标的权重

使用求和法计算权重

step1:先将矩阵的每列进行归一化
step2:将归一化后的各元素按行求和
step3:将求和结果进行归一化得到目标层的权值

(2)求解最大特征根与CI值

计算最大特征根,其公式为:

                                                      

                                                 

其中n为维度数,w为目标层的权值矩阵,Aw为判断矩阵乘标准化后的权重。

表8 标准化后的权重

指标

景色

费用

居住

饮食

旅途

权重

0.3127

0.0571

0.1181

0.4707

0.0413

表9 Aw值

指标

景色

费用

居住

饮食

旅途

Aw值

1.7671

0.3229

0.6673

2.6594

0.2336

通过公式计算得出最大特征根

计算CI,其公式为:

                                                        

通过公式计算得出CI=0.1066

(3)求解CR值,判断其一致性是否通过

计算CR,其公式为:

                                                            

表10 RI值

矩阵阶数n

1

2

3

4

5

6

7

8

9

RI值

0

0

0.58

0.90

1.12

1.24

1.32

1.41

1.45

通过公式计算得出CR=0.0952<0.1,一致性检验通过。

以上步骤进行了准则层与目标层之间的层次单排序,我们可以使用相同方法进行准则层与目标层的层次单排序。

五、层次总排序与一致性检验

使用步骤四中的方法可逐一解出其他因素对于目标层相对重要性的权值,进行层次总排序。(排序结果如表11所示)

表11层次总排序

准则

景色

费用

居住

饮食

旅途

总排序权值

权值

0.3127

0.0571

0.1181

0.4707

0.0413

方案层单排序权值

苏杭

0.5954

0.0819

0.4286

0.6337

0.1667

0.5467

北戴河

0.2763

0.2363

0.4286

0.1919

0.1667

0.2477

桂林

0.1283

0.6817

0.1429

0.1744

0.6667

0.2056

进行层次总排序后,同样需要求解CR值,判断其一致性是否通过

计算CR,其公式为:  

其中a为目标层权值,n为权向量个数,CI为一致性指标,RI查表10可得。

通过公式计算得出CR=0.0027<0.1,一致性检验通过。

六、问题解答

通过层次分析法对问题求解,我们可以得出以下权重关系图(如图2所示)。

图2 权重关系图

   详细代码

A = [1,5,5,1/3,8;1/5,1,1/4,1/6,2;1/5,4,1,1/5,3;3,6,5,1,6;1/8,1/2,1/3,1/6,1];
B1 = [1,2,5;1/2,1,2;1/5,1/2,1]
B2 = [1,1/3,1/8;3,1,1/3;8,3,1]
B3 = [1,1,3;1,1,3;1/3,1/3,1]
B4 = [1,3,4;1/3,1,1;1/4,1,1]
B5 = [1,1,1/4;1,1,1/4;4,4,1]
%1.a矩阵归一化,得矩阵b
%2.b矩阵按行求和,得矩阵c
%3.c归一化,得矩阵d(此时得到的矩阵就是目标层的权值)
%4.对a矩阵进行赋值(a * d),得矩阵e
%5.对矩阵e进行归一化,得权向量x
%6.求矩阵的最大特征根y,sum(e./d)/n;
%7.求一致性指标z,(y - n) ./ (n-1);
function [e,x,y,z]= ccfx(a,n)
    b = a ./ sum(a);%归一化
    c = sum(b,2);%按行求和
    d = c ./ sum(c);
    e = a*d;
    x = e ./ sum(e);
    y = sum(e./d)/n;
    z = (y - n) ./ (n-1);
end
[e0,w0,u0,ci0] = ccfx(A,5);
[e1,w1,u1,ci1] = ccfx(B1,3);
[e2,w2,u2,ci2] = ccfx(B2,3);
[e3,w3,u3,ci3] = ccfx(B3,3);
[e4,w4,u4,ci4] = ccfx(B4,3);
[e5,w5,u5,ci5] = ccfx(B5,3);
%目标层与准则层
disp(w0);%权向量
disp(u0);%最大特征根
disp(ci0);%一致性指标CI
disp(ci0/1.12);%一致性比率
%方案层与准则层
c1 = [w1,w2,w3,w4,w5];%权向量
c2 = [u1,u2,u3,u4,u5];%最大特征根
c3 = [ci1,ci2,ci3,ci4,ci5];%一致性指标CI
C4 = [ci1/0.58,ci2/0.58,ci3/0.58,ci4/0.58,ci5/0.58]%一致性比率
disp(c1);
disp(c2);
disp(c3);
disp(C4);
%总排序
c5 = c1*w0;%总排序权向量
c6 = c3*w0;
c7 = sum(w0*1.12);
c8 = c6/c7;%层次总排序一致性比率
disp(c5);
disp(c8);

  • 18
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值