数学建模——层次分析法

原理小结

问题的主要困难

  1. 难以完全定量分析
  2. 当影响某因素的因子较多时,直接考虑因子的影响程度常常考虑不周全、顾此失彼,从而得出一组与实际不相一致甚至隐含矛盾的数据

解决办法

对指标进行两两比较,进而推算出权重

层次分析法

帮助解决较为复杂、模糊的问题作出决策的方法

步骤:
a. 建立递阶层次结构模型;
b. 构造出各层次中的所有判断矩阵;
c. 层次单排序及一致性检验;
d. 层次总排序及一致性检验。

局限
评价的决策不能太多,RI表格中n最大为15

步骤a 建立梯阶层次结构模型


注:论文使用层次分析法需要将此图放上去注:
每一层次中各元素所支配的元素一般不要超过9 个。这是因为支配
的元素过多会给两两比较判断带来困难。



步骤b 构造判断矩阵 (两两比较建立成对比较矩阵)


定义:若矩阵 A = ( a i j ) n   n A=(a_{ij})_{n\ n} A=(aij)n n满足

( 1 ) a i j > 0 , ( 2 ) a j i = 1 a i j , i , j = 1 , 2 , ⋯   , n (1)a_{ij} > 0,(2)a_{ji}=\frac{1}{a{ij}},i,j=1,2,\cdots,n (1)aij>0(2)aji=aij1,i,j=1,2,,n

则称之为正互反矩阵

a i j a_{ij} aij的值:1~9及其倒数作为标度

标度含义
1重要性相同
3前者比后者稍重要
5前者比后者明显重要
7前者比后者强烈重要
9前者比后者极端重要
2、4、6、8上述相邻判断的中间值
倒数 a i j a_{ij} aij的值

矩阵的具体书写:对 n n n 个准则,列写 n n n 个判断矩阵,用于两两比较各测量的值

如之前所建立模型所列判断矩阵(需列 n n n 个):

方案 n n n策略1策略2策略3
策略1123
策略21/214
策略31/31/41

注:此表中数值随意编写,实际写论文过程中,文字用字母替换如下:方案—C、策略—P,且命名:判断矩阵 C n − P C_{n}-P CnP



步骤c 层次单排序及一致性检验


基本概念:

  • 满足关系式 a i j ⋅ a j k = a i k , ∀ i , j , k = 1 , 2 , ⋯   , n a_{ij}\cdot a_{jk}=a_{ik}, \forall i,j,k=1,2,\cdots,n aijajk=aik,i,j,k=1,2,,n 的正互反矩阵称为一致矩阵
  • 一致矩阵常用性质(据此判断是否为一致矩阵):
    • 任意两行(列)成比例,矩阵秩为1
    • 最大特征值 λ m a x = n \lambda _{max}=n λmax=n,其余特征根为0。当矩阵非一致时, λ m a x > n \lambda _{max}>n λmax>n,偏差越大,其非一致程度越大
  • 线性代数补充:设A是n阶方阵,若数 λ \lambda λ n n n 维非零列向量x,使得 A x = λ x Ax = \lambda x Ax=λx 成立,则称 λ \lambda λ 是方阵A的一个特征值, x x x为方阵 A A A 的对应于特征值 λ \lambda λ 的一个特征向量。

由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验
三种计算权重的方法:

  1. 算数平均法
  2. 几何平均法
  3. 特征值法(最常用)

详细计算过程由代码部分汇总展示


一致性检验步骤:

  1. 计算一致性指标 C I CI CI C I = λ m a x − n n − 1 CI=\frac{\lambda_{max}-n}{n-1} CI=n1λmaxn
  2. 查找相应随机一致性指标 R I RI RI
n n n123456789
R I RI RI000.580.901.121.241.321.411.45

计算一致性比例CR: C R = C I R I CR=\frac{CI}{RI} CR=RICI



代码汇总

%%%%%%%%%%%%%%%%% 代码1:函数清单 %%%%%%%%%%%%%%%%%%%
help disp
help input
help strcat
help num2st
help sum
help prod
help size
help repmat		% 重点
help eig		% 重点
help find		% 重点

%%%%%%%%%% 代码2:求判断矩阵权重——算数平均法 %%%%%%%%%%%
%% 思路:先对每一列求和,再将对应列每一元素除以该和,
%% 	    得每一列的权重,最后按行求平均,得权重向量
clear, clc
lsum_A = sum(A);				% A为权重矩阵
n = size(a,1);					% 判断矩阵为方阵
sum_A = repmat(lsum_A, n, 1);
lweight_A = A./sum_A;
weight_A1 = sum(weight_A, 2)/3	% 按行对列权重求平均

%%%%%%%%%% 代码3:求判断矩阵权重——几何平均法 %%%%%%%%%%%
%% 思路类似与代码2
clc
multi_A = prod(A, 2); 			%按行相乘,得一列向量
root_A = power(multi_A, 1/n);
weight_A2 = root_A ./sum(root_A)%即为所求

%%%%%%%%%%% 代码4:求判断矩阵——权重特征值法 %%%%%%%%%%%%
%% 依据定理:判断矩阵 A 对应于最大特征值的特征向量,
%% 归一化后即为相应因素对于上一层次某因素相对重要性的排序权值
clc
[V, D] = eig(A); %特征向量&特征值构成的对角阵
lambda_max = max(max(D));
[row, col] = find(D==lambda_max, 1);%最大特征值位置
weight_A3 = V(:, col)./sum(V(:, col));

%%%%%%%%%%%%%% 代码5:计算一致性比例CR %%%%%%%%%%%%%%%
clc
CI = (lambda_max - n)/(n-1);
RI=[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) 				       %可直接输入RI的值
if CR<0.10
    disp('判断矩阵的一致性可以接受。');
else
    disp('应对判断矩阵作适当修正');
end
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清上尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值