2020数学建模C题 层次分析法....干货!有代码!!必看

关注持续更新inging!!!

1.层次分析法与数学建模
在数学建模中,通常解决的问题是:“影响某一问题的几个因素的权重大小”、“产生某一问题的主要的因素分析”、“权重的大小分析”。当然在现实生活中的应用也是十分广泛而且一样的不知不觉。最简单的就是你想去几个地方旅游,但是要综合考虑时间、金钱、当地的风景、当地的旅游数是否较多等等因素。

2.层次分析法的基本原理与步骤
层次分析法( Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。直白的说就是那些没有什么数据,基本就是凭空和个人的主观意识让你去选择一个最佳的目标或者判断出对于一个目标,各个因素所占的权重。这样一说,它的优点和缺点也就很明显了:优点就是简单明了,不需要太多数据的处理;缺点就是主观性太强。因此如何尽量客观的两两比较因素之间的相对重要程度就比较重要了。基本上,大家的论文上写的都是”在查阅相关资料后,得到如下判断矩阵”。运用层次分析法建模,大体上可按下面四个步骤进行:
( i)建立递阶层次结构模型;
( ii)构造出各层次中的所有判断矩阵;
( iii)层次单排序及一致性检验;
( iv)层次总排序及一致性检验。
具体来说就是:
( i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。
( ii)中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干
个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。
( iii)最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。

需要注意的是:
递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地
层次数不受限制。每一层次中各元素所支配的元素一般不要超过 9 个。这是因为支配的元素过多会给两两比较判断带来困难。把三个层次画出来会比较容易理解:

在这里插入图片描述

3.构造判断矩阵
终于来到了正题,也是最基础和重要的一个环节。层次结构反映了因素之间的关系,但准则层中的各准则在目标衡量中所占的比重并不一定相同,在决策者的心目中,它们各占有一定的比例。所以才会觉得如何判断它们的相对大小很不容易。
设现在要比较 n 个因子 X = {x1,L, xn} 对某因素 Z 的影响大小, 怎样比较才能提
供可信的数据呢? Saaty 等人建议可以采取对因子进行两两比较建立成对比较矩阵的办法。即每次取两个因子xi 和 x j ,以 aij 表示 xi 和 x j 对 Z 的影响大小之比,全部比较结果用矩阵A = (aij )n×n 表示,称 A 为 Z − X 之间的成对比较判断矩阵(简称判断矩阵)。容易看出,若xi 与 x j 对 Z 的影响之比为 aij ,则 x j 与 xi 对 Z 的影响之比应为1/aij。
关于如何确定aij 的值, Saaty 等建议引用数字 1~9 及其倒数作为标度。
在这里插入图片描述

至于如何分为9个标度,据说是和心理学有关系的。

4.判断矩阵的一致性检验
当写出来判断矩阵之后还会存在一个问题,那就是按理来说如果i对j的重要程度是a,j对k的重要程度是b,那么理所应当i对k的重要程度应该a*b,有点符合“传递性”的感觉。但事实上不是这样的。所以需要进行一致性检验,如果在一定的合理范围之内,矩阵不需要修改,如果不在,则需要修改矩阵。我们可以由λmax 是否等于 n 来检验判断矩阵 A 是否为一致矩阵。由于特征根连续地依赖于aij ,故 λmax 比 n 大得越多, A 的非一致性程度也就越严重,λmax 对应的标准化特征向量也就越不能真实地反映出 因素在对目标的影响中所占的比重。因此,对决策者提供的判断矩阵有必要作一次一致性检验,以决定是否能接受它。
(1)计算一致性指标
CI=(入-n)/(n-1)
(2)查找平均随机一致性指标RI
在这里插入图片描述

(3)计算一致性比例
CR=CI/RI
当CR < 0.10 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正
矩阵符合一致性检验后,可以进行计算了:判断矩阵 A 对应于最大特征值λmax 的特征向量W ,经归一化后即为同一层次相应因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。

5、层次总排序及一致性检验
上面我们得到的是一组元素对其上一层中某元素的权重向量。我们最终要得到各元素,特别是最低层中各方案对于目标的排序权重,从而进行方案选择。总排序权重要自上而下地将单准则下的权重进行合成。

在这里插入图片描述

解释一下,比如A1这一列的b11……bn1,分别表示对于A1这一个目标,b11……bn1的重要程度分布。
对层次总排序也需作一致性检验,检验仍象层次总排序那样由高层到低层逐层进行。这是因为虽然各层次均已经过层次单排序的一致性检验,各成对比较判断矩阵都已具有较为满意的一致性。但当综合考察时,各层次的非一致性仍有可能积累起来,引起最终分析结果较严重的非一致性。设 B 层中与Aj 相关的因素的成对比较判断矩阵在单排序中经一致性检验,求得单排序一致性指标为CI( j) ,(j = 1,L,m ),相应的平均随机一致性指标为 RI( j)( CI( j)、 RI( j) 已在层次单排序时求得),则 B 层总排序随机一致性比例为
在这里插入图片描述

6、具体举例及代码
有一个毕业生为挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生,该毕业生考虑的因素有6个,研究课题、发展前途、待遇、同事情况、地理位置和单位名气。
那么这六个因素就是准则层,三个单位就是方案层,最后要求的就是应该去哪个单位。
1)准则层判断矩阵(主观性)
在这里插入图片描述

2)方案层判断矩阵(主观性)
在这里插入图片描述

(分别针对每一个B,判断C1、C2、C3之间的相对大小)

4)计算的 Matlab 程序如下:
clc,clear
fid=fopen(‘txt3.txt’,’r’);
n1=6;n2=3;
a=[];
for i=1:n1
tmp=str2num(fgetl(fid));
a=[a;tmp]; %读准则层判断矩阵
end
for i=1:n1
str1=char([‘b’,int2str(i),=[];]);
str2=char([‘b’,int2str(i),=[b’,int2str(i),;tmp];]);
eval(str1);
for j=1:n2
tmp=str2num(fgetl(fid));
eval(str2); %读方案层的判断矩阵
end
-173-
end
ri=[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);
end
cr1, ts=w1*w0, cr=cr1*w0
纯文本文件txt3.txt中的数据格式如下:
1 1 1 4 1 1/2
1 1 2 4 1 1/2
1 1/2 1 5 3 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/2
4 1 3
2 1/3 1
1 1/4 1/5
4 1 1/2
5 2 1
1 3 1/3
1/3 1 1/7
3 7 1
1 1/3 5
3 1 7
1/5 1/7 1
1 1 7
1 1 7
1/7 1/7 1
1 7 9
1/7 1 1
1/9 1 1

在这里插入图片描述
看上面 然后回复2020数学建模C题领取文献,论文,还有层次分析法相关的。加油哦!!! 你懂的哦!!!
另外回复2020数学建模领取其他资料

猜你喜欢

转载自blog.csdn.net/weixin_45488131/article/details/108539572
今日推荐