数学建模中的层次分析法

层次分析法(Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模 糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。

层次分析法的基本原理与步骤


人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是 一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次 分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。
运用层次分析法建模,大体上可按下面四个步骤进行:
(i)建立递阶层次结构模型;
(ii)构造出各层次中的所有判断矩阵;
(iii)层次单排序及一致性检验;
(iv)层次总排序及一致性检验

1.1 递阶层次结构的建立与特点


应用 AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次 的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属 性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。 这些层次可以分为三类:
(i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结 果,因此也称为目标层。
(ii)中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干 个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。
(iii)最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等, 因此也称为措施层或方案层。
递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地 层次数不受限制。每一层次中各元素所支配的元素一般不要超过 9 个。这是因为支配 的元素过多会给两两比较判断带来困难。
下面结合一个实例来说明递阶层次结构的建立。
这里写图片描述

1.2 构造判断矩阵


层次结构反映了因素之间的关系,但准则层中的各准则在目标衡量中所占的比重 并不一定相同,在决策者的心目中,它们各占有一定的比例。
在确定影响某因素的诸因子在该因素中所占的比重时,遇到的主要困难是这些比 重常常不易定量化。此外,当影响某因素的因子较多时,直接考虑各因子对该因素有 多大程度的影响时,常常会因考虑不周全、顾此失彼而使决策者提出与他实际认为的 重要性程度不相一致的数据,甚至有可能提出一组隐含矛盾的数据。
这里写图片描述
关于如何确定 a i j 的值,Saaty 等建议引用数字 1~9 及其倒数作为标度。表 1 列出 了 1~9 标度的含义:
这里写图片描述
从心理学观点来看,分级太多会超越人们的判断能力,既增加了作判断的难度, 又容易因此而提供虚假数据。Saaty 等人还用实验方法比较了在各种不同标度下人们判 断结果的正确性,实验结果也表明,采用 1~9 标度最为合适。

1.3 层次单排序及一致性检验


判断矩阵 A对应于最大特征值 λ m a x 的特征向量W,经归一化后即为同一层次相应因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。
上述构造成对比较判断矩阵的办法虽能减少其它因素的干扰,较客观地反映出一 对因子影响力的差别。但综合全部比较结果时,其中难免包含一定程度的非一致性。 如果比较结果是前后完全一致的,则矩阵 A的元素还应当满足:
这里写图片描述
这里写图片描述
根据定理 3,我们可以由λ m a x 是否等于n 来检验判断矩阵 A是否为一致矩阵。由于特征根连续地依赖于a i j ,故λ m a x 比n大得越多, A的非一致性程度也就越严重,λ m a x 对应的标准化特征向量也就越不能真实地反映出X={x 1 ,x 2 ,…,x n }在对因素Z的影响中所占的比重。因此,对决策者提供的判断矩阵有必要作一次一致性检验,以决定是否能接受它。
对判断矩阵的一致性检验的步骤如下:
这里写图片描述

1.4 层次总排序及一致性检验


上面我们得到的是一组元素对其上一层中某元素的权重向量。我们最终要得到各 元素,特别是最低层中各方案对于目标的排序权重,从而进行方案选择。总排序权重 要自上而下地将单准则下的权重进行合成。
这里写图片描述
对层次总排序也需作一致性检验,检验仍象层次总排序那样由高层到低层逐层进 行。这是因为虽然各层次均已经过层次单排序的一致性检验,各成对比较判断矩阵都 已具有较为满意的一致性。但当综合考察时,各层次的非一致性仍有可能积累起来, 引起最终分析结果较严重的非一致性。
这里写图片描述

层次分析法的应用


在应用层次分析法研究问题时,遇到的主要困难有两个:
(i)如何根据实际情况 抽象出较为贴切的层次结构;
(ii)如何将某些定性的量作比较接近实际定量化处理。
层次分析法对人们的思维过程进行了加工整理,提出了一套系统分析问题的方法,为科学管理和决策提供了较有说服力的依据。但层次分析法也有其局限性,主要表现在:
(i)它在很大程度上依赖于人们的经验,主观因素的影响很大,它至多只能排除思维 过程中的严重非一致性,却无法排除决策者个人可能存在的严重片面性。
(ii)比较、 判断过程较为粗糙,不能用于精度要求较高的决策问题。AHP 至多只能算是一种半定 量(或定性与定量结合)的方法。
在应用层次分析法时,建立层次结构模型是十分关键的一步。现再分析一个实例, 以便说明如何从实际问题中抽象出相应的层次结构。
这里写图片描述
这里写图片描述
这里写图片描述
根据层次总排序权值,该生最满意的工作为工作1。
计算的 Matlab 程序如下:

clc,clear 
fid=fopen('txt3.txt','r');  
n1=6;n2=3; % n1为准则层矩阵大小,n2为方案层矩阵大小
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
end
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标 
[x,y]=eig(a); % 求判断矩阵的特征值和特征向量,y特征值,x特征向量;
lamda=max(diag(y)); % 矩阵最大特征值
num=find(diag(y)==lamda); 
w0=x(:,num)/sum(x(:,num)); % 归一化特征向量
cr0=(lamda-n1)/(n1-1)/ri(n1) % 计算一致性比例CR 
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

这里写图片描述
输出结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/sunyueqinghit/article/details/81205118