数学建模模型1——层次分析法
程序员文章站
2022-07-14 23:19:47
...
层次分析法
通常用于多目标决策问题,例如在考虑价格,舒适度,环境,交通便利等方面的条件下选择合适的房子。
步骤
- 建立层次结构模型
- 构造判断(成对比较)矩阵
- 层次单排序及其一致性检验
- 层次总排序及其一致性检验
建立层次结构模型
将决策的目标、考虑的因素和决策对象按他们之间的互相关系分为最高层、中间层和最底层,画出层次结构图。
- 最高层:决策的目的,要解决的问题。eg.选择哪里的房子
- 最底层:决策时的备选方案。eg.不同地方的房子
- 中间层:考虑的因素、决策的准则。eg.价格、舒适度、环境、交通便利
构造成对比较矩阵
利用一致矩阵法构造成对比较矩阵,一致矩阵法即
- 不把所有因素放在一起比较,而是两两进行比较。
- 采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,从而提高准确度。
成对比较矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较,成对比较矩阵的元素用1-9标度方法给出:
层次单排序及其一致性检验
- 层次单排序:对于上一层某因素而言,本层次各因素的重要性的排序
- 一致性检验:按理来说应该有,但实际上通常不相等,只要在一定范围内即可,即允许不一致,但要确定不一致的允许范围。
一致性检验是通过计算一致性比例 来进行的,当 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。 的值由判断矩阵计算获得,的值查表获得。其中 为矩阵最大特征根。
层次总排序及其一致性检验
- 层次总排序:某层所有因素对于总目标相对重要性的排序权值过程
代码——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