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

目录

文章目录

前言

一、评价类问题概述

二、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,这个时候要再构造一次判断矩阵,本质上就是先聚类(将单个指标因素按照关联度和相似度分为互不影响的几大类)再使用层次分析法

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

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

  • 对于每个判断矩阵Ai,计算其最大 特征根 λmax 和对应的特征向量 **Wi,**对特征向量Wi进行归一化处理(其实就是特征向量/n)
  • 得到准则层Ci下各因素的权重向量wi = (wi1, wi2, ..., wim)。
  • 计算一致性指标CI 和随机一致性指标RI(可在网上查到),进而计算一致性比例CR = CI / RI。
  • 如果CR < 0.1 ,(这里只有CI越小CR才能越小,故当λmax--->n时,我们认为矩阵Ai越接近一致矩阵) 则认为判断矩阵Ai具有满意的一致性

,CI通过上述公式求出,同时Xmax即为最大特征根,n为评价指标个数
整个过程可概括为下面的流程图

2、层次分析法---Matlab代码

Matlab 复制代码
%层次分析法-一致性检验
A = input('判断矩阵A=');%输入判断矩阵
[n,n]=size(A); %获取A的行和列

%求出最大特征值以及对应的特征向量
[V,D]=eig(A); %V是特征向量 D是特征值构成的对角矩阵
Max_eig = max(max(D)); %先求出每一行的最大值,再求出最大值中的最大值,即为最大特征值

CI = (Max_eig - n)/(n-1);%求出一致性检验指标

%网上查表可得
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];

%注意RI最多支持n=15
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);

if CR<0.1
    disp('因为CR<0.01,所以该判断矩阵A的一致性可以接受!');
else
    disp('注意:CR>=0.10,因此该判断举证A要进行修改!');
end

三、权重计算

1、算术平均法

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

2、几何平均法

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

3、特征值法

Matlab 复制代码
A = input('判断矩阵A='); %输入判断矩阵
[n,n] = size(A); %获取A的行和列
%求出最大特征值以及对应的特征向量
[V,D] = eig(A); %V是特征向量 D是特征值构
成的对角矩阵
Max_eig = max(max(D)); %先求出每一列的最大值,
再求最大值中的最大值
[r,c] = find(Max_eig == D,1);%使用find()函数找出最大
特征值对应的特征向量的位置(索引)
%对特征向量进行归一化得到所需权重
disp(V(:,c)./sum(V(:,c)));
相关推荐
yannan201903131 分钟前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法3 分钟前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR4 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer5 分钟前
快乐数算法
算法·leetcode·职场和发展
小芒果_016 分钟前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
qq_434085908 分钟前
Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
算法
Beau_Will8 分钟前
ZISUOJ 2024算法基础公选课练习一(2)
算法
XuanRanDev10 分钟前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
gkdpjj12 分钟前
C++优选算法十 哈希表
c++·算法·散列表
代码猪猪傻瓜coding12 分钟前
力扣1 两数之和
数据结构·算法·leetcode