当前位置: 首页 > news >正文

数学建模:层次分析法

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛

层次分析法

步骤描述

  1. 将问题条理化,层次化,构建出一个有层次的结构模型。层次分为三类:目标层,准则(指标)层,方案层
  2. 比较指标层中不同指标之间的相对重要程度,并且构建一个成对比较矩阵
    1. 自行判断两个不同指标的相对重要程度。
    2. 如果指标1重要程度大于指标2,并且赋予一个重要程度为3,因此得到其指标1的值为3,
    3. 同理指标2的重要程度小于指标1(不能存在矛盾),因此相对的指标2的值为 1 3 \frac{1}{3} 31
    4. 因此任意两个指标重要度之间存在的关系为: a i j > 0 , a i j = 1 a j i , i , j ∈ ( 1 , 2 , 3 , . . . n ) a_{ij}>0,a_{ij} = \frac{1}{a_{ji}},i,j\in(1,2,3,...n) aij>0aij=aji1i,j(1,2,3,...n)
    5. 接着构建出所有两个指标的这种关系,就可以得到一个关于所有指标两两之间的成对比较矩阵 A n n A_{nn} Ann,其中 n n n 为指标的数量。
  3. 在单一准则下计算指标相对排序的权重,以及进行判断矩阵(成对比较矩阵)的一致性检验
  4. 计算方案层中对于目标层的总排序权重,从而得到评价后的结果。

算法流程

  1. 通过分层与条理化后,我们得到了两两指标之间的成对比较矩阵(判断矩阵):

∣ 1 3 1 1 / 3 1 / 3 1 1 / 2 1 / 5 1 2 1 1 / 3 3 5 5 1 ∣ \left|\begin{array}{cccc}1 & 3 & 1 & 1 / 3 \\1 / 3 & 1 & 1 / 2 & 1 / 5 \\1 & 2 & 1 & 1 / 3 \\3 & 5 & 5 & 1\end{array}\right| 11/313312511/2151/31/51/31

  1. 首先得到判断矩阵的最大特征值对应的特征向量T:

T = [ t 1 t 2 ⋯ t n ] T=\begin{bmatrix}t_1&t_2&\cdots&t_n\end{bmatrix} T=[t1t2tn]

  1. 得到权重向量W:

W = [ w 1 w 2 ⋯ w n ] w i = t i ∑ i = 1 n t i \begin{gathered}W=\begin{bmatrix}w_1&w_2&\cdots&w_n\end{bmatrix}\\\\w_i=\frac{t_i}{\sum_{i=1}^nt_i}\end{gathered} W=[w1w2wn]wi=i=1ntiti

  1. 计算一致性指标 C I CI CI

C I = λ max ⁡ − n n − 1 C I=\frac{\lambda_{\max }-n}{n-1} CI=n1λmaxn

  1. 查找相应的随机平均一致性指标 R I RI RI:如果 n = 5 n = 5 n=5 则表示有五个指标,则 R I = R I ( 1 , 5 ) = 1.12 RI = RI(1,5) = 1.12 RI=RI(1,5)=1.12

请添加图片描述

  1. 计算**一致性比例CR:**当 C R < 0.10 CR<0.10 CR<0.10 时,一致性接受,否则改矩阵应该适当修改参数。

C R = C I R I CR = \frac{CI}{RI} CR=RICI

  1. 计算评价对象的得分:其中 P P P 为归一化后的原始数据, W W W为权重向量

S c o r e = P ⋅ W Score = P \cdot W Score=PW


完整代码

function [Score,W] = mfunc_levelAnalysis(A,data)% 层次分析法:求解每个评价对象的综合得分与对应权重% paramts: %      A: 两两指标之间的自定义的成对对角矩阵 Shape: (n,n)%      data: 原始数据矩阵,(m,n) m为评价对象,n为评价指标% returns:%      Score:每个评价对象的综合得分%      W: 所有指标的权重% 成对对角矩阵:A判别矩阵% A=[1,3,1,1/3;%     1/3,1,1/2,1/5;%     1,2,1,1/3;%     3,5,3,1];[n,~]=size(data);%Z=zscore(X);Z = data ./ repmat(sum(data.*data) .^ 0.5, n, 1); %矩阵归一化[n,~]=size(A);%求特征值特征向量,找到最大特征值对应的特征向量[V,D]=eig(A);tzz=max(max(D));     %找到最大的特征值c1=find(D(1,:)==tzz);%找到最大的特征值位置T=V(:,c1);%最大特征值对应的特征向量%赋权重W=zeros(n,1);for i=1:nW(i,1)=T(i,1)/sum(T);end%一致性检验CI=(tzz-n)/(n-1);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');endscore=Z*W;Score=100*score/max(score);
end

有关成对比较矩阵两两指标之间的的相关重要性的程度参考:

在这里插入图片描述

相关文章:

数学建模:层次分析法

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 层次分析法 步骤描述 将问题条理化&#xff0c;层次化&#xff0c;构建出一个有层次的结构模型。层次分为三类&#xff1a;目标层&#xff0c;准则&#xff08;指标&#xff09;层&#xff0c;方案层。比…...

POI-TL制作word

本文相当于笔记&#xff0c;主要根据官方文档Poi-tl Documentation和poi-tl的使用&#xff08;最全详解&#xff09;_JavaSupeMan的博客-CSDN博客文章进行学习&#xff08;上班够用&#xff09; Data AllArgsConstructor NoArgsConstructor ToString EqualsAndHashCode public …...

大数据Flink(七十一):SQL的时间属性

文章目录 SQL的时间属性 一、Flink三种时间属性简介...

51单片机项目(7)——基于51单片机的温湿度测量仿真

本次做的设计&#xff0c;是利用DHT11传感器&#xff0c;测量环境的温度以及湿度&#xff0c;同时具备温度报警的功能&#xff1a;利用两个按键&#xff0c;设置温度阈值的加和减&#xff0c;当所测温度大于温度阈值的时候&#xff0c;蜂鸣器就会响起&#xff0c;进行报警提示。…...

按钮控件之1---QPushButton 标准按钮/普通按钮控件

1、父类QAbstractButton 2、QPushButton按钮&#xff0c;是Qt常用的控件之一&#xff0c;提供普通的按钮功能。 通过信号槽机制接收触发信号并执行对应动作。3、创建QPushButton 它有三个构造函数&#xff1a; // 空对象 QPushButton(QWidget *parent nullptr); // 指定QPus…...

Ae 效果:CC Light Rays

生成/CC Light Rays Generate/CC Light Rays CC Light Rays&#xff08;CC 光线&#xff09;可以创建从光源发出并能穿过图层内容的光线效果。常用于制作光线透过门窗或云层的场景&#xff0c;或者用于创建神奇或梦幻的氛围感。 本效果会被限制在源图层的大小范围之内。 ◆ ◆…...

MPI之通信模式(标准,缓存,同步,就绪)

MPI缓冲区 由MPI自行维护的一块内存区域&#xff0c;也可由用户(MPI_Bsend)自行维护&#xff1b;发送方 维护一块发送缓冲区&#xff1b; 接收方 维护一块接收缓冲区。 数据收发过程&#xff1a; 当发送端将数据拷贝到自身的数据缓冲区后(注意这里是拷贝&#xff0c;即数据到…...

面试官:说一下 MyBatis 的一级缓存和二级缓存 ?

目录 1. MyBatis 的缓存机制 2. 为什么不默认开启 MyBatis 的二级缓存 3. MyBatis 如何开启二级缓存 4. MyBatis 有哪些缓存清除策略 1. MyBatis 的缓存机制 MyBayis 中包含两级缓存&#xff1a;一级缓存和二级缓存 1. 一级缓存是 SqlSession 级别的&#xff0c;是 MyBati…...

Ajax与jQuery

目录 Ajax是一种异步无刷新的技术 Ajax的优点&#xff1a; 可以无需刷新页面与服务器端进行通信允许根据用户事件来更新部分页面内容 Ajax的缺点&#xff1a; 没有浏览历史&#xff0c;不能回退存在跨域问题&#xff08;同源&#xff09;SEO&#xff08;搜索引擎优化&#x…...

色温曲线坐标轴的选取:G/R、G/B还是R/G、B/G ?

海思色温曲线坐标 Mstar色温曲线坐标 高通色温曲线坐标 联咏色温曲线坐标 查看各家白平衡调试界面&#xff0c;比如海思、Mstart、高通等调试资料&#xff0c;白平衡模块都是以R/G B/G作为坐标系的两个坐标轴&#xff0c;也有方案是以G/R G/B作为坐标系的两个坐标轴。 以G/R G…...

maven部署

一、下载Maven 地址&#xff1a;Maven – Download Apache Maven 二、解压缩&#xff0c;设置环境变量 tar -xvf apache-maven-3.8.8-bin.tar.gz export MAVEN_HOME/opt/apache-maven-3.8.8 export PATH$MAVEN_HOME/bin:$PATH echo $MAVEN_HOME echo $PATH mvn -v...

docker进阶作业

一、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 安装Docker&#xff1a;确保已在CentOS 7.5上安装了Docker。 拉取MySQL 5.6镜像&#xff1a;使用以下命令从Docker Hub上拉取MySQL 5.6镜像。 docker pull mysql:5.6 运行MySQL容器&#xff1a;使用以下命令…...

HTML+JavaScript+CSS DIY 分隔条splitter

一、需求分析 现在电脑的屏幕越来越大&#xff0c;为了利用好宽屏&#xff0c;我们在设计系统UI时喜欢在左侧放个菜单或选项面板&#xff0c;在右边显示与菜单或选项对应的内容&#xff0c;两者之间用分隔条splitter来间隔&#xff0c;并可以通过拖动分隔条splitter来动态调研…...

Oracle-day5:新增、复制建表、表结构、表数据、删除

目录 一、insert新增数据 二、复制建表 三、表结构修改 四、查看表结构、表数据处理 五、修改表数据 六、删除语句 八、练习题 一、insert新增数据 /* ---------- 一、DML 数据操作语言-------- -- 1、增加数据 insert 语法&#xff1a;insert into 表名 (列1,列2,…...

Scratch 画画的技巧

前言 美术是一种艺术&#xff0c;且不局限于纸张&#xff0c;就像电脑绘图也属于美术。我至今已有三年多的画龄&#xff0c;经验丰富&#xff0c;尤其擅长在scratch造型编辑器上画矢量图。今天给大家分享一些实用的技巧。 1.讲解 用橡皮工具给一个圆擦出“橡皮洞” 橡皮工具&a…...

国际版阿里云/腾讯云:阿里弹性云手机正式公测

阿里弹性云手机正式公测 什么是“云手机”&#xff1f;与我们传统的手机有何区别&#xff1f;它又有什么用处呢&#xff1f;当你接触到云手机概念的时候&#xff0c;是不是也会有这一连串的疑问。本文将为你揭开云手机的奥秘面纱。 2021年12月1日&#xff0c;阿里弹性云手机正…...

服务器数据恢复- RAID5出现故障后恢复数据和操作系统的案例

服务器数据恢复环境&#xff1a; 某品牌服务器中有4块SAS硬盘组建了一组RAID5阵列&#xff0c;另外1块磁盘作为热备盘使用。上层操作系统为redhat linux&#xff0c;部署了一个数据库是oracle的OA。 服务器故障&初检&#xff1a; RAID5中一块磁盘离线后热备盘未自动激活re…...

Vue3实现可视化拖拽标签小程序

介绍 实现功能&#xff1a;可视化标签拖拽&#xff0c;双击标签可修改标签内容 HTML结构 <div class"box" v-move><div class"header">标签1</div><div dblclick"startEditing" v-if"!isEditing">{{content…...

SSM 前端使用AJAX方式,fromdata文件格式上传二进制流文件

今天在上课的时候&#xff0c;遇到了一个比较坑的问题&#xff0c;有个学生拿来了她的代码&#xff0c;让我给她看看为什么传值传不过来。 首先&#xff0c;前端是这样的&#xff1a; function upload(){var formData new FormData();formData.append(images, $(#previewImg)…...

LeetCode-455-分发饼干-贪心算法

题目描述&#xff1a; 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...