数模 01层次分析法1

层次分析法

什么是层次分析法

层次分析法,属于运筹学理论。简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国国防部研究"根据各个工业部门对国家福利的贡献大小而进行电力分配"课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。

基本内容

 

层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序,以作为目标(多指标)、多方案优化决策的系统方法。

 

层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。

 

层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。
 
原理
层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。
 
利用层次分析法构造系统模型时,基本步骤:

 下面来一个简单的数模例子进行演示

旅游地选择问题

 1 构造层次结构模型

将决策目标,考虑因素和决策对象按他们的相互关系分为最高层,最底层和中间层

 

构造出来为:

2 构造成对比较矩阵

为了确定两两之间的确定关系,有一致矩阵法

成对比较矩阵标度表

根据此表,我们构建此问题的成对比较矩阵:

eg:第一行第三列的4表示,c1和c3相比比稍微重要更重要一点。

其中得注意一个问题,一致性检验:

一般情况下构造的都是通过一致性检验的,具体方法在后文中的matlab中会体现

下图是此问题所需要的所有成对比较矩阵

下面的5个成对比较矩阵,eg:b1的5表示b1和b3相比,b1的景色明显重要于b3的景色。

有了这些矩阵,进行matlab实操:

disp('请输入判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while  k>p
  i=i+1;
  x(:,i)=A*y(:,i-1);
  m(i)=max(x(:,i));
  y(:,i)=x(:,i)/m(i);
  k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);
         %以下是一致性检验
CI=(t-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);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end
层次分析法

在命令行输入:cengcifenxi(保存文件名)

输入成对比较矩阵:

在输入之后的5个数即为相应的对z的权重参数,下图为6组的计算结果:

 

 然后计算3个地方对总目标的权重:

计算方法一目了然。

因为得出的第三个地方:桂林的权重更大,所以,最后的决策应该是桂林。

posted @ 2019-01-15 17:31  ivanthor  阅读(444)  评论(0)    收藏  举报