当前位置:   article > 正文

数学建模评价类模型—层次分析法(无数据情况下)_数学建模无数据评价模型

数学建模无数据评价模型

目录

前言

一、评价类问题概述

二、AHP建模流程

1、过程描述

2、层次分析法—Matlab代码

三、权重计算

1、算术平均法

2、几何平均法

3、特征值法


目录

文章目录

前言

一、评价类问题概述

二、AHP建模流程

1、过程描述

2、层次分析法—Matlab代码

三、权重计算

算术平均法



前言

本文将讲解解决评价类问题的第一种模型层次分析法(AHP法),首先我们会具体讲解评价类问题解答的具体流程再对AHP方法进行讲解


一、评价类问题概述

评价指标本身的数学量化,评价指标之间的数学综合

基本流程明确主体—>指标明确—>权重计算—>方案评价

明确主体:明确哪里可以用到评价,比如:2012对《葡萄酒的评价》这里葡萄球的等级就是可以用到评价的地方

指标确定:可以通过一个思维导图的方式来画出这个指标系统。先确定方向(通过查找文献和头脑风暴),然后再向下细化

权重计算:使用主观权重法和客观权重法,每个指标都要进行归一化

方案评价:得到权重后,再对结果进行进一步分析

二、AHP建模流程

1、过程描述

1、建立层次结构模型:

目标层(决策的目标,如:选出微博之星)

准测层C={C1,C2,···,Cn}(考虑的因素,实质上就是评价指标

方案层P={P1,P2,···Pm}(决策对象,如:微博之星又A,B,C三个人可选择)

2、构造判断矩阵

对于准则层中的每个元素Ci(i=1,2,···,n),构造一个关于方案层P中各个元素两两比较的判断矩阵Ai(mxm),其中元素aij表示因素Pj相对于因素Pi的重要性程度。通常使用1-9的比例标度来表示这种重要性程度。易得aij*aji=1,所以在写判断矩阵时可以只写一边矩阵再对应填另一边

注意:这个地方常常会出现嵌套分层,也就是说可能每个Ci可能会单独对应某些Pi,这个时候要再构造一次判断矩阵,本质上就是先聚类(将单个指标因素按照关联度和相似度分为互不影响的几大类)再使用层次分析法

例如:下面我们将问题分成了三层,其中,我们将指标首先分为互不影响的三大类:通行能力,安全性,便捷度,首先对这三类构造判断矩阵,进行一致性检验,算出这三大类的权重;然后又讨论影响这三大类的因素,在每一大类中,对其中的影响因素再构造相应的判断矩阵,并且检验其一致性,再算出每个因素的权重,最后再计算出每个具体因素的总权重,进行评价分析。 

7756049e84c9445497adb85c7c5133be.png

efaa1fa5282d46e7916c3467562224ab.png

c7717e2fc8b04cea8ae4cc1cf1a0e241.png

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

  • 对于每个判断矩阵Ai,计算其最大特征根λmax和对应的特征向量Wi对特征向量Wi进行归一化处理(其实就是特征向量/n
  • 得到准则层Ci下各因素的权重向量wi = (wi1, wi2, ..., wim)。
  • 计算一致性指标CI 和随机一致性指标RI(可在网上查到),进而计算一致性比例CR = CI / RI。
  • 551a5c0d2c0247d1b8c3e99688fecaf1.png
  • 如果CR < 0.1,(这里只有CI越小CR才能越小,故当λmax—>n时,我们认为矩阵Ai越接近一致矩阵) 则认为判断矩阵Ai具有满意的一致性
224b85bcee00430e93fd1b157fc0649f.png,CI通过上述公式求出,同时Xmax即为最大特征根,n为评价指标个数
整个过程可概括为下面的流程图
7c33b155db914c0f885a8bedd3d9e22f.png

2、层次分析法—Matlab代码

  1. %层次分析法-一致性检验
  2. A = input('判断矩阵A=');%输入判断矩阵
  3. [n,n]=size(A); %获取A的行和列
  4. %求出最大特征值以及对应的特征向量
  5. [V,D]=eig(A); %V是特征向量 D是特征值构成的对角矩阵
  6. Max_eig = max(max(D)); %先求出每一行的最大值,再求出最大值中的最大值,即为最大特征值
  7. CI = (Max_eig - n)/(n-1);%求出一致性检验指标
  8. %网上查表可得
  9. RI=[0,0.0001,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];
  10. %注意RI最多支持n=15
  11. CR=CI/RI(n);
  12. disp('一致性指标CI=');disp(CI);
  13. disp('一致性比例CR=');disp(CR);
  14. if CR<0.1
  15. disp('因为CR<0.01,所以该判断矩阵A的一致性可以接受!');
  16. else
  17. disp('注意:CR>=0.10,因此该判断举证A要进行修改!');
  18. end

三、权重计算

1、算术平均法

  1. %1.算术平均法计算权重
  2. %输入样例,将前面的判断矩阵输入即可,此处省略
  3. Asum=sum(A,1);%将A的每列求和赋值到Asum中
  4. Ar = repmat(Asum,n,1);%复制Asum n行1列为Ar矩阵,使得Ar又变回了n行n列的矩阵
  5. stand_A=A./Ar;%归一化处理,./表示对应的元素相除
  6. ASumr = sum(stand_A,2);%再对归一化处理后的矩阵的每列加到同一行
  7. disp(ASumr/n);%相加后的每个元素/n得到权重向量(nx1)

2、几何平均法

  1. A = input('判断矩阵A='); %输入判断矩阵
  2. [n,n] = size(A); %获取A的行和列
  3. prod_A = prod(A,2); %将A中每一行元素相乘得到
  4. 一列向量
  5. prod_n_A = prod_A.^(1/n); %将新的向量的每个分量开n
  6. 次方等价求1/n次方
  7. re_prod_A = prod_n_A./sum(prod_n_A);%归一化处理
  8. disp(re_prod_A); %展示权重结果

3、特征值法

  1. A = input('判断矩阵A='); %输入判断矩阵
  2. [n,n] = size(A); %获取A的行和列
  3. %求出最大特征值以及对应的特征向量
  4. [V,D] = eig(A); %V是特征向量 D是特征值构
  5. 成的对角矩阵
  6. Max_eig = max(max(D)); %先求出每一列的最大值,
  7. 再求最大值中的最大值
  8. [r,c] = find(Max_eig == D,1);%使用find()函数找出最大
  9. 特征值对应的特征向量的位置(索引)
  10. %对特征向量进行归一化得到所需权重
  11. disp(V(:,c)./sum(V(:,c)));

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/941849
推荐阅读
相关标签
  

闽ICP备14008679号