数模(1)——层次分析法

原创为b站视频:https://www.bilibili.com/video/av20238704ide

简介:性能

层次分析法(AHP)是一种层次权重决策分析方法,平常生活中好比:冰箱品牌的选购(考虑到价格,性能,售后等因素);旅游景点的选择(交通,居住环境,饮食等)。code

步骤:视频

1.创建层次结构模型blog

2.构造判断(成对比较)矩阵ci

3.一致性检验get

 

1.创建层次结构模型(以选择旅游地为例)input

2.构造判断(成对比较)矩阵class

标度表gc

例:

3.一致性检验

 

以旅游问题为例:

成对比较矩阵是怎么得出来的呢(查找了大量的数据并综合了相关领域专家的意见后获得,,,)

程序:

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

成对比较矩阵:

[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;]

[1,2,5;
1/2,1,2;
1/5,1/2,1;]

[1,1/3,1/8;
3,1,1/3;
8,3,1;]

[1,1,3;
1,1,3;
1/3,1/3,1;]

[1,3,4;
1/3,1,1;
1/4,1,1;]

[1,1,1/4;
 1,1,1/4;
 4,4,1;]

运行结果:以A和B1为例

>> cengcifenxi
请输入判断矩阵A(n阶)
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;]
    0.2636
    0.4758
    0.0538
    0.0981
    0.1087

此矩阵的一致性能够接受!
CI=
    0.0180

CR=
    0.0161

>> cengcifenxi
请输入判断矩阵A(n阶)
A=[1,2,5;
1/2,1,2;
1/5,1/2,1;]
    0.5954
    0.2764
    0.1283

此矩阵的一致性能够接受!
CI=
    0.0028

CR=
    0.0053

>>

获得权重值:

注:层次分析法主观性比较强,可用于建模中的一小问