评价模型:层次分析法

1. 模型建立

1.1 建立层次结构模型

  在深入分析实际问题的基础上,将有关的各个因素按照不同属性自上而下地分解成若干层次,同一层的诸因素从属于上一层的因素或对上层因素有影响,同时又支配下一层的因素或受到下层因素的作用。最上层为目标层,通常只有1个因素,最下层通常为方案或对象层,中间可以有一个或几个层次,通常为准则或指标层,当准则过多时(一般为9个时)应进一步分解出子准则层。
  利用层次分析法,对大学生毕业后的选择进行排序:
层次结构图

1.2 构造判断矩阵

  层次结构反映了因素之间的关系,但准则层中的各准则在目标衡量中所占的比重 并不一定相同。设 x i x_i xi y i y_i yi z z z的影响之比为 a i j a_{ij} aij,则 x i x_i xi y i y_i yi z z z的影响之比 a j i = 1 / a i j a_{ji}=1/a_{ij} aji=1/aij
若矩阵 A = ( a i j ) m × n A=\left(a_{i j}\right)_{m\times n} A=(aij)m×n满足
( 1 ) a i j > 0 , ( 2 ) a j i = 1 a i j (1)\ a_{i j}>0, \quad (2)\ a_{j i}=\frac{1}{a_{i j}} (1) aij>0,(2) aji=aij1
则称之为正互反矩阵
若矩阵A还满足
a i j a j k = a i k , ∀ i , j , k = 1 , 2 , ⋯ , n a_{i j} a_{j k}=a_{i k}, \forall i, j, k=1,2, \cdots, n aijajk=aik,i,j,k=1,2,,n
则称之为一致矩阵。
n阶正互反矩阵A为一致矩阵当且仅当其最大特征根 λ max ⁡ = n \lambda_{\max }=n λmax=n ,且当正互反矩阵A非一致时,必有 λ max ⁡ > n \lambda_{\max }>n λmax>n
关于如何确定 a i j a_{ij} aij的值,建议引用数字 1-9 及其倒数作为标度。下表列出了 1-9 标度的含义。
在这里插入图片描述
现构造准则层的判断矩阵如下:

表 2 准则层的判断矩阵
AB1B2B3B4B5
B1121/215
B21/211/41/22
B324123
B4121/214
B51/51/21/31/41

接着构造方案层的判断矩阵如下:

表 3 方案层的判断矩阵

在这里插入图片描述

1.3 判断矩阵的一致性检验

对判断矩阵的一致性检验的步骤如下:
(1)计算一致性指标CI。
C I = λ max ⁡ − n n − 1 C I=\frac{\lambda_{\max }-n}{n-1} CI=n1λmaxn
(2) 查找相应的平均随机一致性指标 RI,对于 n = 1 , 2 , ⋯ , 9 n=1,2, \cdots, 9 n=1,2,,9,对应的RI值如下
在这里插入图片描述
(3) 计算一致性比例CR。
C R = C I R I C R=\frac{C I}{R I} CR=RICI
当CR < 0.10 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。

1.4 层次总排序及一致性检验

  首先确定准则层对于目标层的权向量 ω 0 \omega_{0} ω0,由于目标层的数量是一个,所以准则层对于目标层的权向量也是一个。先找到准则层的判断矩阵的最大特征值对应的特征向量,然后将此特征向量标准化,使其中的值分布在0和1之间,得到的结果就是准则层对于目标层的权向量;然后确定方案层对于准则层的权向量 ω 1 \omega_{1} ω1,由于准则层有5个指标,所以方案层对于准则层的权向量也是5个,使用同样的方法即可确定方案层对于准则层的5个权向量 ω 11 , ω 12 , ω 13 , ω 14 , ω 15 \omega_{11}, \omega_{12}, \omega_{13}, \omega_{14}, \omega_{15} ω11,ω12,ω13,ω14,ω15,即 ω 1 = [ ω 11 , ω 12 , ω 13 , ω 14 , ω 15 ] \omega_{1}=[\omega_{11}, \omega_{12}, \omega_{13}, \omega_{14}, \omega_{15}] ω1=[ω11,ω12,ω13,ω14,ω15];最后使用方案层对于准则层的权向量 与准则层对于目标层的权向量 加权平均,即可得到方案层4个方案的得分。
  对层次总排序也需作一致性检验,总排序随机一致性比例为
C R = ∑ j = 1 m C I ( j ) ω 0 ( j ) ∑ j = 1 m R I ( j ) ω 0 ( j ) , j = 1 , ⋯ m C R=\frac{\sum_{j=1}^{m} C I(j) \omega_{0}(j)}{\sum_{j=1}^{m} R I(j) \omega_{0}(j)}, j=1, \cdots m CR=j=1mRI(j)ω0(j)j=1mCI(j)ω0(j),j=1,m
  其中m为准则层的个数。

2. 模型求解

利用Matlab编程求解得到准则层对于目标层的权向量 ω 0 \omega_{0} ω0

0.2320,0.1094,0.3721,0.2189,0.0675

方案层对于准则层的权向量 ω 1 \omega_{1} ω1

w1 = 4×5

0.4379    0.2437    0.3890    0.4385    0.34520.2437    0.2190    0.3609    0.1096    0.18500.0994    0.4379    0.1323    0.2652    0.09970.2190    0.0994    0.1177    0.1866    0.3701

准则层各指标的一致性检验结果为
cr1 = 1×5

0.0076    0.0076    0.0727    0.0225    0.0038

均小于0.1,认为判断矩阵的一致性是可以接受的。
  层次总排序得分为0.3923,0.2513,0.1850,0.1850,总排序一致性检验结果为0.0349<0.1,认为层次总排序结果具有较满意的一致性并接受该分析结果。
  Matlab程序如下:

clc,clear 
fid=fopen('ahp.txt','r'); 
n1=5;n2=4; 
a=[]; 
for i=1:n1 tmp=str2num(fgetl(fid));a=[a;tmp]; %读准则层判断矩阵
end 
for i=1:n1 str1=char(['b',int2str(i),'=[];']);str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']);eval(str1);for j=1:n2 tmp=str2num(fgetl(fid));eval(str2); %读方案层的判断矩阵endend 
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
[x,y]=eig(a) %求特征值
lamda=max(diag(y))
num=find(diag(y)==lamda)
w0=x(:,num)/sum(x(:,num))
cr0=(lamda-n1)/(n1-1)/ri(n1); 
for i=1:n1 [x,y]=eig(eval(char(['b',int2str(i)]))); lamda=max(diag(y)); num=find(diag(y)==lamda); %最大特征值w1(:,i)=x(:,num)/sum(x(:,num))%准则层权值 cr1(i)=(lamda-n2)/(n2-1)/ri(n2); %准则层一致性比例
end 
cr1, ts=w1*w0, cr=cr1*w0

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

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

相关文章

python集合

集合set set_python1.集合的创建2.集合的相关操作3.集合间的关系4.集合的数学操作5.集合生成式 set_python 集合(set)是一个可变的数据类型&#xff0c;它用于存储一组唯一的元素。集合中的元素是无序的&#xff0c;并且不能重复。可以使用大括号{}或者set()函数来创建一个集合…

C# OpenVino Yolov8 Pose 姿态识别

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenVino_Yolov8_Demo {public…

API原理概念篇(六)玩转正则表达式等常用API

一 玩转正则表达式等常用API ① 正则 1、openresty存在两套正则表达式规范1) lua自身独有的正则规范 备注&#xff1a;大约有5%&#xff5e;15%性能损耗损耗原因&#xff1a;表达式compile成pattern,并不会被缓存,每次都会被重新compile编译2) nginx的符合POSIX规范的PCR…

IJK源码分析-android篇

整个IJK播放器框架相较于原始ffplay.c播放器,在三处进行了抽象,分别是: (1)解码器配置初始化操作,对应的数据结构是: struct IJKFF_Pipeline {SDL_Class *opaque_class;IJKFF_Pipeline_Opaque *opaque;void (*func_destroy) (IJKFF_Pipe…

合宙Air724UG LuatOS-Air LVGL API控件-微调框 (Spinbox)

微调框 (Spinbox) 微调框用于数值调整&#xff0c;有时候我们希望获取一个用户输入的数值&#xff0c;但是又不希望弹出键盘&#xff0c;可以使用微调框。 示例代码 -- 回调函数 function spinbox_increment_event_cb(obj, event)if event lvgl.EVENT_SHORT_CLICKED thenlvg…

openssl websockets

1. HTTPS通信的C实现 - 知乎

fluent python part3 一等函数

第 5 章 一等函数 5.1 把函数视作对象 >>> def factorial(n): ... """return n!""" ... return 1 if n < 2 else n * factorial(n - 1) ... >>> factorial(42) 140500611775287989854314260624451156993638400000…

【物联网】简要介绍最小二乘法—C语言实现

最小二乘法是一种常用的数学方法&#xff0c;用于拟合数据和寻找最佳拟合曲线。它的目标是找到一个函数&#xff0c;使其在数据点上的误差平方和最小化。 文章目录 基本原理最小二乘法的求解应用举例使用C语言实现最小二乘法总结 基本原理 假设我们有一组数据点 ( x 1 , y 1 …

pandas读取一个 文件夹下所有excel文件

我这边有个需求&#xff0c;是要求汇总一个文件夹所有的excel文件&#xff0c; 其中有.xls和 .xlsx文件&#xff0c;同时还excel文件中的数据可能还不一致&#xff0c;会有表头数据不一样需要一起汇总。 首先先遍历子文件夹并读取Excel文件&#xff1a; 使用os库来遍历包含子文…

LeetCode 面试题 04.09. 二叉搜索树序列

文章目录 一、题目二、C# 题解 一、题目 从左向右遍历一个数组&#xff0c;通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。 给定一个由不同节点组成的二叉搜索树 root&#xff0c;输出所有可能生成此树的数组。 点击此处跳转题目。 示例 1: 输入: root [2,1,3]…

记录:移动设备软件开发(activity组件)

目录 前言Android简介和发展Android应用的基本组件介绍Activity组件Activity简介Activity的状态和生命周期 小结 前言 移动设备软件开发是指为智能手机、平板电脑等移动设备设计和开发应用程序的过程。移动设备软件开发涉及多种技术、平台和工具&#xff0c;例如Android、iOS、…

9.14号作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 有些功能&#xff0c;不会 #include <iostream>using namespace std; //创建vector类 class Vector { private:int *data;int size;int capacity; public://无参构造Vector(){}//拷贝构造Vector(c…

一个方法用js生成随机双色球、大乐透

代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

002 Linux 权限

前言 本文将会向您介绍关于linux权限方面的内容&#xff0c;包括文件类型&#xff0c;如何切换用户、基本权限、粘滞位等等 Linux具体的用户 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的…

NDK (ndk)报错 Unity requires NDK r19 (64-bit)(19.0.05232133)

一、介绍 在 Android 添加 NDK ndk 的时候&#xff0c;出现 Unity requires NDK r19 (64-bit)(19.0.05232133)。 二、环境 1、Unity 2020.3.48f1c1 2、Android NDK 配置 三、报错信息 NDK (ndk)报错 Unity requires NDK r19 (64-bit)(19.0.05232133) 四、解决方法 1、下…

【力扣每日一题】2023.9.13 检查骑士巡视方案

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个n*n大小的矩阵&#xff0c;矩阵的元素表示骑士已经行动的次数&#xff0c;问我们骑士能不能按照矩阵里元素顺序来巡视整个…

vue前后端分离单点登录,结合长token和短token进行登录

单点登录背景 在公司发展初期&#xff0c;公司拥有的系统不多&#xff0c;通常一个两个&#xff0c;每个系统都有自己的登录模块&#xff0c;运营人员每天用自己的账号登陆&#xff0c;很方便&#xff0c;但是&#xff0c;随着企业的发展&#xff0c;用到的系统随之增加&#x…

06-Redis缓存高可用集群

上一篇&#xff1a;05-Redis高可用集群之水平扩展 1.集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c…

指引型树型组件的封装

最近&#xff0c;由于业务的需要&#xff0c;需要做一个指向形树型组件。在寻找各种文章后&#xff0c;终于有了思路。&#x1f912;&#x1f912;&#x1f912; 树型组件的思路主要是递归。谈到递归&#xff0c;我们首先要有递归的出口。递归的出口就是没有孩子节点了。这个时…

ESP32主板-MoonESP32

产品简介 Moon-ESP32主板&#xff0c;一款以双核芯片ESP32-E为主芯片的主控板&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;低功耗&#xff0c;板载LED指示灯&#xff0c;引出所有IO端口&#xff0c;并提供多个I2C端口、SPI端口、串行端口&#xff0c;方便连接&#xff0c;…