数学建模01-层次分析法

数学建模01-层次分析法

一.层次分析法

•日常工作、生活中的决策问题
•涉及经济、社会等方面的因素
•作比较判断时人的主观选择起相当大的作用,各因素的重要性难以量化(用于难以完全定量的复杂事情)

1.基本步骤

层次分析法的运用主要分为以下几个步骤:

  1. 将问题条理化,层次化,构造出一个有层次的结构模型。层次分为三层目标层准则层方案层
  2. 比较同一层次元素对上一层次同一目标的影响,从而确定它们在目标中所占的比重。写出成对比较矩阵。
  3. 对所写矩阵进行一致性检验。

2.成对比较矩阵

标度重要程度
1两个元素同等重要
3前者稍重要
5前者明显重要
7前者强烈重要
9前者极端重要

2,4,6,8为上诉判断中间值。

设要比较的n个元素y={y1,……,yn}对目标Z的影响,确定它们在Z中的比重。每次取其中两个元素yi和yj,用aij表示yi与yj对Z的影响之比:

aij>0 , aji=1/aij (i,j=1,2,……,n)

A=(aij)称为成对比较矩阵或判断矩阵。满足上式的矩阵称为正互反阵。

3.例题1(实践以上步骤)

旅游问题:设置有三个地点供小张选择,长白山1,拉萨2,杭州3,他考虑的因素有费用
y1,景色y2,居住y3,饮食y4,交通y5。

  1. 对以上问题进行分析和建模:建立模型

  2. 确定对目标的重要程度,写出成对比较矩阵。
    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;]
    B1 =
    [1,2,5;
    1/2,1,2;
    1/5,1/2,1;]
    B2 =
    [1,1/3,1/8;
    3,1,1/3;
    8,3,1;]
    B3 =
    [1,1,3;
    1,1,3;
    1/3,1/3,1;]
    B4 =
    [1,3,4;
    1/3,1,1;
    1/4,1,1;]
    B5 =
    [1,1,1/4;
    1,1,1/4;
    4,4,1;]

  3. 检验上成对比较矩阵的一致性并求出权重计算出结果。

4.代码片段

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('特征值法求权重:');
disp(w);

%算数平均法求权重
sum_a = sum(A);
[n,n] = size(A);
sum_a = repmat(sum_a,n,1);
stand_a = A./sum_a;
x = sum(stand_a,2)/n;
disp('算数平均法求权重:');
disp(x);

%几何平均法求权重
prduct_a = prod(A,2);
prduct_n_a = prduct_a.^(1/n);
z = prduct_n_a./sum(prduct_n_a);
disp('几何平均法求权重:');
disp(z);

%以下是一致性检验
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


以上代码执行后输入需要计算的矩阵即可。

(以上文章及代码在查看各种网课和相关资料后整理自用。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值