层次分析法(matlab实现)

1.层次分析法(AHP)

       在决策理论中,层次分析法是一种以数学心理学为基础,组织和分析复杂决策的结构化技术,它代表了一种量化决策标准权重的准确方法,通过成对比较,利用个别专家的经验来估计因素的相对大小

2.算法用途

       在很多情况下,我们对事物的评价,应该多维度的进行评价。多维度评价之后我们要如何把它们合并成一个指标用于比较事物的好坏?这时候需要对各个指标赋权,层次分析法就是用来赋权重的,这个方法个体主观性较强,在数据集比较小,实在不好比较的时候可以选择这种方法

3.算法简述

这个算法是一个多指标综合评价算法,这种算法一般会有两个用途:

  • 指标定权

我们可以在没有数据支撑的情况下可以根据每个人对重视程度不一样而给各个指标指定权重

  • 量化方案选择

      我们在旅游的时候,可能会面临去哪的难题,我们会假设有几套方案,例如:杭州、三亚、成都,而每个地方的都可以综合以上的4个因素,给这些方案计算出一个量化得分,然后我们就可以根据它们各自的得分得出我们心里的最优选择

 4.AHP层次分析过程

       在分析一个现象或者问题之前,首先将现象或问题根据它们的性质分解成有关因素,并根据它们之间的关系分类而形成一个多层次的结构模型,然后通过经验或者专家,来判断和衡量底层因素对高层因素的相对重要性,并根据重要性的程度得出权重排序,进而可以量化分析比较。

       层次分析法的核心是将影响因素层次化和数据化,它把一个抽象的现象或问题由难到易的予以分解,易于对复杂问题进行直观的判断并做出决策。层次分析法具有将复杂问题简单化且计算简单等优点,应用都十分广泛,诸如在人员素质评估、多方案比较、科学成果评比和工作成效评价等多领域多方面都有运用 

一般的层次分析法分为三层:

  • 目标层(分析目的)
  • 准则层(分析因素)
  • 方案层(分析种类)

 注意:一致性检验的含义用于确定构建构建的判断矩阵是否存在逻辑问题

      类似于A对于B是3,就说明A比B重要,A对于C是1/3,就说明C比A重要,那么如果B对于C是2的话,就说明B比C重要,但是根据上述的逻辑,这样就犯了逻辑性的错误,理应是C比B重要

 4.1 构建层次评价模型

我们应该在分析前先确认整个决策事件的目标层、准则层、方案层

4.2构造判断矩阵

构造判断矩阵就是通过各要素之间相互两两比较,并确定各准则层对目标的权重

标度含义
1表示两个元素相比,具有同样的重要性
3表示两个元素相比,前者比后者稍重要
5表示两个元素相比,前者比后者明显重要
7表示两个元素相比,前者比后者极其重要
9表示两个元素相比,前者比后者强烈重要
2,4,6,8表示上述相邻判断的中间值
1~9的倒数表示相应两因素交换次序比较的重要性

判断矩阵满足:

 我们可以对于准则A,可以构造一个:A=(a_{ij})_{mn}

  • a_{ij}>0
  • a_{ij}=\frac{1}{a_{ji}}
  • a_{ii}=1

我们就可以根据我们对这些因素的一个客观认识去得到这个完整的判断矩阵

4.3 层次单排序与一致性检验

4.3.1层次单排序

 所谓的层次排序法就是根据我们构成的判别矩阵,求解各个指标的权重

方法一:方根法

  1. 计算每行乘积得到m次方,得到一个m维向量\bar{w}_{i}=\sqrt[m]{\prod_{j=1}^{m}a_{ij}}
  2. 将向量标准即为权重向量,即得到权重 w_{i}=\frac{\bar{w_{i}}}{\sum_{j=1}^{m}\bar{w_{j}}}

方法二:和法

  1. 先将矩阵的每列进行标准化
  2. 将标准化后的各元素按行求和
  3. 将求和结果进行标准化

4.3.2 求解最大特征值与CI值

设 n 阶判断矩阵为 B,则可用以下方法求出其最大的特征根 :BW=λW,其中,W 是 B 的特征向量。 在层次分析法中, 我们用以下的一致性指标 CI 来检验判断的一致性指标 (Consistency Index):

CI=\frac{\lambda _(max)-n}{n-1}         CI=0表示判断矩阵完全一致,CI越大,判断矩阵的不一致性程度越严重

当得出权重矩阵后,我们可以计算最大特征根,其公式为:

\lambda _{max}=\frac{1}{n}\sum_{i=1}^{n}\frac{(AW)_{i}}{W_{i}}

其中n为维度数,AW为判断矩阵标准化后的权重,然后按行的累加值

4.3.3 根据CI、RI值求解CR值,判断其一致性是否通过

CR=\frac{CI}{RI}   情况如下:

  • CR<0.1时,矩阵A的一致性程度被认为在容许的范围内
  • CR>=0.1时,我们应该考虑对矩阵A进行修正

4.3.4 层次总排序与一致性检验

计算某一层所有因素对于最高层(目标层)相对重要性的权值,称为层次总排序

案例分析:

 matlab源码:

%层次分析法
%P是指标评分 B是判别矩阵
function level(P,A)
%求出判别矩阵的行列数
[n,~]=size(A);
%求出该矩阵的特征向量与特征值
[V,D]=eig(A)
tzz=max(max(D))%找出最大的特征值
c1=D(1,:)==tzz%找出最大的特征值的位置
tzx=V(:,c1)%最大特征值对应的特征向量
%赋权重
quan=zeros(n,1)
%得到权重向量
for i=1:nquan(i,1)=tzx(i,1)/sum(tzx);
end
Q=quan
%--------------------------------一致性检验---------------------------------
%计算一致性指标CI
CI=(tzz-n)/(n-1)
%平均随机一致性指标RI
RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
%判断是否通过一致性
CR=CI/RI(1,n)
if CR>=0.1fprintf('没有通过一致性\n');
elsefprintf('通过一致性检验\n');
end
%显示出所有评分对象的评分值
score=P*Q;
for i=1:length(score)name=['object_score',num2str(i)];eval([name,'=score(i)'])
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101081.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

带纽扣电池产品出口澳洲安全标准,纽扣电池IEC 60086认证

澳大利亚政府公布了《消费品&#xff08;纽扣/硬币电池&#xff09;安全标准》和《消费品&#xff08;纽扣/硬币电池&#xff09;信息标准》。届时出口纽扣/硬币电池以及含有纽扣/硬币电池产品到澳大利亚的供应商&#xff0c;必须遵守这些标准中的要求。 一、 安全标准及信息标…

从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)

泛型及set集合扩展 1.泛型1.1泛型概述 2.Set集合2.1Set集合概述和特点【应用】2.2Set集合的使用【应用】 3.TreeSet集合3.1TreeSet集合概述和特点【应用】3.2TreeSet集合基本使用【应用】3.3自然排序Comparable的使用【应用】3.4比较器排序Comparator的使用【应用】3.5两种比较…

stable diffusion实践操作-大模型介绍

本文专门开一节写大模型相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 模型下载网站 国内的是&#xff1a;https://www.liblibai.com 国外的是&#xff1a;https://civitai.com&#xff08;科学上网&#xff09; 一、发展历…

git submodule 子模块的基本使用

常用命令 命令说明git submodule add <url> <本地路径>添加子模块git submodule update --init --recursive添加子模块后&#xff0c;同步子模块内容git clone <url> --recurse-submodules克隆带有子模块的项目git submodule init初始化子模块git submodule…

怎么做手机App测试?app测试详细流程和方法介绍

APP测试 1、手机APP测试怎么做&#xff1f; 手机APP测试&#xff0c;主要针对的是android和ios两大主流操作系统&#xff0c;主要考虑的就是功能性、兼容性、稳定性、易用性&#xff08;也就是人机交互&#xff09;、性能。 手机APP测试前的准备&#xff1a; 1.使用同类型的…

百度百科词条怎么更新?怎么能顺利更新百科词条?

企业和个人百度百科词条的更新对于他们来说都具有重要的意义&#xff0c;具体如下&#xff1a; 对企业来说&#xff1a; 塑造品牌形象&#xff1a;百度百科是一个常被用户信任并参考的知识平台&#xff0c;通过更新企业词条可以提供准确、全面的企业信息&#xff0c;帮助企业塑…

C# | DBSCAN聚类算法实现 —— 对直角坐标系中临近点的点进行聚类

C# | DBSCAN聚类算法实现 聚类算法是一种常见的数据分析技术&#xff0c;用于将相似的数据对象归类到同一组或簇中。其中&#xff0c;DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;是一种基于密度的聚类算法&#xff0c;能够有效…

iOS 设置下载部分文件,如何获取完整文件的大小

在视频的需求中&#xff0c;遇到这样一个需求&#xff0c;播放一视频的时候&#xff0c;要预下载 后面10条视频&#xff0c;但是只下载后面十条视频的前面1M 实现方法 1 创建请求时设置cacheLength resource [[IdiotResource alloc] init];resource.requestURL task.request…

stm32---用外部中断实现红外接收器

一、红外遥控的原理 红外遥控是一种无线、非接触控制技术&#xff0c;具有抗干扰能力强&#xff0c;信息传 输可靠&#xff0c;功耗低&#xff0c;成本低&#xff0c;易实现等显著优点&#xff0c;被诸多电子设备特别是 家用电器广泛采用&#xff0c;并越来越多的应用到计算机系…

Redis项目实战——优惠券秒杀

目录 Redis自增功能解决全局唯一IDRedis实现优惠券秒杀的主要思路实现过程中出现的问题及解决方法超卖问题方案1 悲观锁方案2 乐观锁 一人一单问题分布式锁如何用Redis实现分布式锁&#xff1f; Redis优化秒杀消息队列实现异步秒杀List发布订阅模式Stream Redis自增功能解决全局…

显示本地 IP 地址和相应的 QR 码,方便用户共享和访问网络信息

这段代码使用了 wxPython、socket、qrcode 和 PIL&#xff08;Python Imaging Library&#xff09;模块来生成一个具有本地 IP 地址和相应 QR 码的窗口应用程序。 C:\pythoncode\new\showipgenqrcode.py 让我们逐行解释代码的功能&#xff1a; import wx&#xff1a;导入 wx…

数学建模--Subplot绘图的Python实现

目录 1.Subplot函数简介 2.Subplot绘图范例1:绘制规则子图 3.Subplot绘图范例2:绘制不规则子图 4.Subplot绘图范例3:gridspec辅助实战1 5.Subplot绘图范例4:gridspec辅助实战2 1.Subplot函数简介 """ 最近在数学建模种需要绘制多张子图,发现对于subplot函…