这是我的数学模型作业。数学模型(第五版)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 函数计算得到以上各个矩阵的秩为:
A | B1 | B2 | B3 | B4 | B5 |
---|---|---|---|---|---|
5 | 3 | 3 | 1 | 3 | 1 |
可以看到 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的数值:
n | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|
RI | 0.58 | 0.90 | 1.12 | 1.24 | 1.32 | 1.41 | 1.45 | 1.49 |
当CR(一致性比率)满足 | ||||||||
CR=\frac{CI}{RI}<0.1 | ||||||||
时认为A的不一致程度在容许范围之内. 上式中的0.1是可以调整的, 对于重要决策问题应当适当减小. | ||||||||
上述过程称为一致性检验. 若检验通过, 则可以用矩阵的特征向量作为权向量, 若检验不通过, 需要对矩阵作修正, 或者重新做成对比较. | ||||||||
经计算, 以上各矩阵的CI值如下表 |
A | B1 | B2 | B3 | B4 | B5 |
---|---|---|---|---|---|
0.0180 | 0.0028 | 7.7081e-04 | -1.1102e-15 | 0.0046 | -4.4409e-16 |
以上各矩阵的CR值如下表 |
A | B1 | B2 | B3 | B4 | B5 |
---|---|---|---|---|---|
0.0161 | 0.0048 | 0.0013 | -1.9142e-15 | 0.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了。