使用层次分析法选择旅游地

这是我的数学模型作业。数学模型(第五版)7.2节的复习题第2题(p246)。端午节假期计划的是学《常微分方程》和《概率论》,但今天我的大脑特别排斥《常微分方程》,索性做数学建模作业吧,反正不能闲着,反正早晚都得做。

题目

以选择旅游地为目标的层次结构图如右图,景色、费用等5个准则构成准则层,P_1,P_2,P_33个旅游地构成方案层[1].

旅游地选择层次结构图

已知准则对目标的成对比较阵

A=\begin{bmatrix} 1 & 1/2 & 4 & 3 & 3\\ 2 & 1 & 7 & 5 & 5\\  1/4 & 1/7 & 1 & 1/2 & 1/3\\  1/3 & 1/5 & 2 & 1 & 1\\  1/3 & 1/5 & 3 & 1 & 1 \end{bmatrix}

及方案对5个准则的成对比较阵

B_1=\begin{bmatrix} 1 & 2 & 5\\  1/2 & 1 & 2\\  1/5 & 1/2 &1  \end{bmatrix},

B_2=\begin{bmatrix} 1 & 1/3 & 1/8\\  3 & 1 & 1/3\\  8 & 3 & 1 \end{bmatrix},

B_3=\begin{bmatrix} 1 & 1 & 3\\  1 & 1 & 3\\  1/3 & 1/3 &1  \end{bmatrix},

B_4=\begin{bmatrix} 1 & 3 & 4\\  1/3 & 1 & 1\\  1/4 & 1 & 1 \end{bmatrix},

B_5=\begin{bmatrix} 1 & 1 & 1/4\\  1 & 1 & 1/4\\  4 & 4 & 1 \end{bmatrix}

(1)计算各个成对比较阵的特征向量, 作一致性检验, 确定权向量.

(2)计算方案对目标的综合权重, 确定用层次分析法选择的旅游地.

特征向量

不妨先来算一算以上各个矩阵的秩, 看看各个成对比较矩阵是不是一致阵[2]. 我们使用 Matlab 的rank 函数计算得到以上各个矩阵的秩为:

AB1B2B3B4B5
533131

可以看到 B3, B5 的秩为1, 说明这两个矩阵为一致阵. 那么这两个矩阵的特征向量就可以取为

\overrightarrow{\omega}=\left ( \omega_1,\omega_2,\omega_3 \right )^\mathrm{T}

其中\omega_i 为各个方案在准则”居住(B3)”和”旅途(B5)”两方面的重要性(权重)之比. 不妨假定  \omega_1,\omega_2,\omega_3已经归一化,即满足

\sum_{i=1}^3\omega_i=1.

回到本题.

对于以上矩阵, 我们用 Matlab 计算得到它们各自的最大特征根及其对应的特征向量为

\lambda_A=5.0721,\overrightarrow{\omega_A}=\left ( 0.2636,0.4758, 0.0538,0.0981,0.1087 \right )^\mathrm{T}\\

\lambda_{B1}=3.0055,\overrightarrow{\omega_{B1}}=\left ( 0.5954,0.2764,0.1283\right )^\mathrm{T}\\

\lambda_{B2}=3.0015,\overrightarrow{\omega_{B2}}=\left ( 0.0819,0.2363,0.6817\right )^\mathrm{T}\\

\lambda_{B3}=3.0000,\overrightarrow{\omega_{B3}}=\left ( 0.4286,0.4286,0.1429\right )^\mathrm{T}\\

\lambda_{B4}=3.0092,\overrightarrow{\omega_{B4}}=\left ( 0.6337,0.1919,0.1744\right )^\mathrm{T}\\

\lambda_{B5}=3.0000,\overrightarrow{\omega_{B5}}=\left ( 0.1667,0.1667,0.6667\right )^\mathrm{T}\\

一致性检验

Saaty将CI定义为一致性指标

CI=\frac{\lambda-n}{n-1}

其中, \lambda为矩阵的最大特征根, n为矩阵的阶数. 当CI=0时, 矩阵为一致阵, CI越大, 矩阵越不一致.

Saaty又引入随机一致性指标RI, 并给出了他计算得到的随机一致性指标RI的数值:

n345678910
RI0.580.901.121.241.321.411.451.49

当CR(一致性比率)满足

CR=\frac{CI}{RI}<0.1

时认为A的不一致程度在容许范围之内. 上式中的0.1是可以调整的, 对于重要决策问题应当适当减小.

上述过程称为一致性检验. 若检验通过, 则可以用矩阵的特征向量作为权向量, 若检验不通过, 需要对矩阵作修正, 或者重新做成对比较.

经计算, 以上各矩阵的CI值如下表

AB1B2B3B4B5
0.01800.00287.7081e-04-1.1102e-150.0046-4.4409e-16

以上各矩阵的CR值如下表

AB1B2B3B4B5
0.01610.00480.0013-1.9142e-150.0079-7.6567e-16

可以看到, 以上各矩阵的CR均小于0.1, 一致性检验通过. 故它们的特征向量(已归一化)\overrightarrow{\omega_{A}},\overrightarrow{\omega_{B1}},\overrightarrow{\omega_{B2}},\overrightarrow{\omega_{B3}},\overrightarrow{\omega_{B4}},\overrightarrow{\omega_{B5}}均可作为权向量. 其中最引人注目的是矩阵B3和B5, 因为它们是一致矩阵, 所以计算得到的值为0(Matlab中不为0是因为存在误差).

综合权重

W=[\overrightarrow{\omega_{B1}},\overrightarrow{\omega_{B2}},\overrightarrow{\omega_{B3}},\overrightarrow{\omega_{B4}},\overrightarrow{\omega_{B5}}], 那么

W=\begin{bmatrix} 0.5954&0.0819&0.4286&0.6337&0.1667\\ 0.2764&0.2363&0.4286&0.1919&0.1667\\ 0.1283&0.6817&0.1429&0.1744&0.6667 \end{bmatrix}

其中, 第i行的5个数值分别是方案P_i对4项准则的权重, 将它们与准则层对目标层的权重\overrightarrow{\omega_A}对应地相乘再求和, 就得到方案P_i对目标的权重. 从而, 第3层(方案层)对第1层(目标层)的综合权重\omega可表示为

\omega=W\overrightarrow{\omega_A}

我们使用Matlab计算得到

\omega=\begin{bmatrix} 0.2993\\ 0.2453\\ 0.4554  \end{bmatrix}

故, 使用层次分析法, 3种方案的优劣顺序为P_3,P_1,P_2.

故我们应该选择方案P_3.

参考文献

[1]姜启源,谢金星,叶俊.数学模型.北京:高等教育出版社,2018.
[2] 胡端平,唐超.一致矩阵的特征性质[J].武汉工程大学学报,2009,31(05):93-94.

代码

A=[1 1/2 4 3 3;
2 1 7 5 5;
1/4 1/7 1 1/2 1/3;
1/3 1/5 2 1 1;
1/3 1/5 3 1 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];

% 计算以上各矩阵的秩
rank(A);rank(B1);rank(B2);rank(B3);rank(B4);rank(B5);

% 计算以上各矩阵的特征值和右特征向量,找出它们的最大特征值,以及与之对应的右特征向量
% [V,D] = eig(A) 返回特征值的对角矩阵 D 和矩阵 V,其列是对应的右特征向量,使得 A*V = V*D。
[VA,DA]=eig(A);
[MDA,indexA]=max(diag(DA));
MVA=VA(:,indexA);
MVA=MVA./sum(MVA);% 归一化
MDA,MVA' %打印最大特征值和对应的特征向量(已归一化)

[VB1,DB1]=eig(B1);
[MDB1,indexB1]=max(diag(DB1));
MVB1=VB1(:,indexB1);
MVB1=MVB1./sum(MVB1);% 归一化
MDB1,MVB1' %打印最大特征值和对应的特征向量(已归一化)

[VB2,DB2]=eig(B2);
[MDB2,indexB2]=max(diag(DB2));
MVB2=VB2(:,indexB2);
MVB2=MVB2./sum(MVB2);% 归一化
MDB2,MVB2' %打印最大特征值和对应的特征向量(已归一化)

[VB3,DB3]=eig(B3);
[MDB3,indexB3]=max(diag(DB3));
MVB3=VB3(:,indexB3);
MVB3=MVB3./sum(MVB3);% 归一化
MDB3,MVB3' %打印最大特征值和对应的特征向量(已归一化)

[VB4,DB4]=eig(B4);
[MDB4,indexB4]=max(diag(DB4));
MVB4=VB4(:,indexB4);
MVB4=MVB4./sum(MVB4);% 归一化
MDB4,MVB4' %打印最大特征值和对应的特征向量(已归一化)

[VB5,DB5]=eig(B5);
[MDB5,indexB5]=max(diag(DB5));
MVB5=VB5(:,indexB5);
MVB5=MVB5./sum(MVB5);% 归一化
MDB5,MVB5' %打印最大特征值和对应的特征向量(已归一化)

% 计算各矩阵的CI,计算CR并与0.1比较
CIA=(MDA-size(A,1))/(size(A,1)-1)
CRA=CIA/1.12 %其中1.12为RI值

CIB1=(MDB1-size(B1,1))/(size(B1,1)-1)
CRB1=CIB1/0.58
CIB2=(MDB2-size(B2,1))/(size(B2,1)-1)
CRB2=CIB2/0.58
CIB3=(MDB3-size(B3,1))/(size(B3,1)-1)
CRB3=CIB3/0.58
CIB4=(MDB4-size(B4,1))/(size(B4,1)-1)
CRB4=CIB4/0.58
CIB5=(MDB5-size(B5,1))/(size(B5,1)-1)
CRB5=CIB5/0.58

% 计算综合权重
SW=[MVB1,MVB2,MVB3,MVB4,MVB5]*MVA

用到的工具

[0]Matlab
[1] Typora
[2] LaTeX在线公式编辑
[3] Visual Studio Code
[4] KaTeX(及WP同名插件)
[5] Word

我想说

没有严格按我们平时用的模板的格式来写。

WordPress 插入公式好麻烦。

代码不够优雅。但我越来越喜欢Matlab了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注