评价模型:层次分析法

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.mzph.cn/news/79391.shtml

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

相关文章

【多线程】死锁 详解

死锁 一. 死锁是什么二. 死锁的场景1. 一个线程一把锁2. 两个线程两把锁3. N 个线程 M 把锁 三. 死锁产生的四个必要条件四. 如何避免死锁 一. 死锁是什么 死锁是这样一种情形&#xff1a; 多个线程同时被阻塞&#xff0c;因为每个进程都在等其他线程释放某些资源&#xff0c;…

Postman应用——初步了解postman

Postman 是一个用于构建和使用 API 的 API 平台&#xff0c;Postman 简化了 API 生命周期的每个步骤并简化了协作&#xff0c;可以更快地创建更好的 API。 Postman 包含一个基于Node.js的强大的运行时&#xff0c;允许您向请求&#xff08;request&#xff09;和分组&#xff…

UE4/UE5 动画控制

工程下载​ ​​​​​​​​​​​​​https://mbd.pub/o/bread/ZJ2cm5pu 蓝图控制sequence播放/倒播动画&#xff1a; 设置开启鼠标指针&#xff0c;开启鼠标事件 在场景中进行过场动画制作 设置控制事件

APP自动化之weditor工具

由于最近事情颇多&#xff0c;许久未更新文章。大家在做APP自动化测试过程中&#xff0c;可能使用的是Appium官方提供的inspect进行元素定位&#xff0c;但此工具调试不方便&#xff0c;于是今天给大家分享一款更好用的APP定位元素工具&#xff1a;weditor weditor基于web网页…

C# Onnx Yolov8 Seg 分割

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…

合宙Air724UG LuatOS-Air LVGL API控件-开关 (Switch)

开关 (Switch) 示例代码 function event_handler(obj, event)if event lvgl.EVENT_VALUE_CHANGED thenprint("State", lvgl.switch_get_state(obj))end endsw1 lvgl.switch_create(lvgl.scr_act(), nil) lvgl.obj_align(sw1, nil, lvgl.ALIGN_CENTER, 0, -50) lvg…

Docker核心原理与实操

第一章、Docker基本概念 1、概念&#xff1a;Docker是一种容器技术&#xff0c;可以解决软件跨环境迁移问题。 2、实现原理&#xff1a;是一个分层复用的文件系统&#xff1b;每一层都是一个独立的软件&#xff1b; …

java:逆序排序的三种方法

// 逆序第一种方法 public static void main(String[] args) {int arr[] {11, 22, 33, 44, 55, 66};for (int i arr.length-1; i > 0; i--) {System.out.print("\t"arr[i]);}}缺点&#xff1a;这个是直接逆转&#xff0c;如果里面是随机数没办法比较 逆序第二种…

小技巧!Python生成excel文件的三种方式!

在我们做平常工作中都会遇到操作excel&#xff0c;那么今天写一篇&#xff0c;如何通过python操作excel。当然python操作excel的库有很多&#xff0c;比如pandas&#xff0c;xlwt/xlrd&#xff0c;openpyxl等&#xff0c;每个库都有不同的区别&#xff0c;具体的区别&#xff0…

5.9.Webrtc线程事件处理

在前面的课程中呢&#xff0c;我已经向你介绍了事件处理的一些基础知识&#xff0c;那今天呢&#xff0c;我们再来看一下外边儿rtc下事件处理的基本逻辑是什么&#xff1f; 那首先呢&#xff0c;我们来看一下事件是如何协调线程工作的&#xff0c;那就如果这张图所展示的有两个…

ArcGIS标注的各种用法和示例

标注是将描述性文本放置在地图中的要素上或要素旁的过程。 本文整理了ArcGIS中的各种标注方法、可能遇到的问题和细节,内容比较杂,想到哪写到哪。 一、正常标注某一字段值的内容 右键点击【属性】,在【标注】选项卡下勾选【标注此图层中的的要素】,在【文本字符串】栏中…

【SpringBoot集成Redis + Session持久化存储到Redis】

目录 SpringBoot集成Redis 1.添加 redis 依赖 2.配置 redis 3.手动操作 redis Session持久化存储到Redis 1.添加依赖 2.修改redis配置 3.存储和读取String类型的代码 4.存储和读取对象类型的代码 5.序列化细节 SpringBoot集成Redis 1.添加 redis 依赖 …

指针进阶(2)

6.函数指针数组 数组是一个存放相同类型数据的存储空间&#xff0c;那我们已经学习了指针数组&#xff0c; 比如: int *arr[10]; //数组的每个元素是int* 那要把函数的地址存到一个数组中&#xff0c;那这个数组就叫函数指针数组&#xff0c;那函数指针的数组如何定义呢&…

dart项目规范

​ dart项目结构 假设有一个名称为 enchilada 的完整的包目录&#xff08;基本用到了所有的子目录&#xff09;&#xff0c;那么它的目录结构看起来像下面这样&#xff1a; enchilada/ .dart_tool/ * .packages * pubspec.yaml pubspec.lock ** LICENSE README.md CHANGELOG…

【LeetCode每日一题】——面试题10.11.峰与谷

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 排序 二【题目难度】 中等 三【题目编号】 面试题10.11.峰与谷 四【题目描述】 在一个整数…

灰度变换原理//test later

灰度变换原理 图像灰度变换变换原理&#xff1a;通过变换函数T将原图像像素灰度值r映射为灰度值s&#xff1a; 2、灰度反转 2.1原理 灰度反转&#xff1a;将图像亮暗对调&#xff0c;可以增强图像中暗色区域细节 &#xfffd;&#xfffd;(&#xfffd;)&#xfffd;−1−…

【C++】哈希表的实现

哈希是什么理解哈希哈希所用的容器计算key值方法哈希的插入和查找解决哈希冲突闭散列也叫开放寻址法开散列 哈希闭散列实现闭散列结构闭散列结构插入闭散列查找闭散列删除 哈希开散列实现&#xff08;链表式&#xff09;开散列结构开散列结构插入开散列结构查找开散列结构删除 …

Map和Set及其实现类详解

目录 一, 搜索 1,传统搜索 2,Map和Set模型 二, Map的使用 1,Map接口的继承及实现图 2,Map接口的使用 3,TreeMap和HashMap的使用和对比 1,TreeMap 代码示例 map中插入的数据按照key进行排序 map中插入的数据必须具有可比较性(或者实现了比较器相关接口) ​map中插入…

Echarts 折线图的详细配置过程

文章目录 折线图 简介配置步骤简易示例 折线图 简介 Echarts是一款基于JavaScript的开源可视化库&#xff0c;由百度开发和维护。它提供了丰富多样的图表类型&#xff0c;其中折线图是其中一种常用的图表类型。 折线图通过连接数据点所形成的折线来展示数据的变化趋势。在折线…

互联网3.0 数字原生——数物虚实多维细粒度泛在融合

随着计算机、宽带网、通信技术的飞速发展&#xff0c;互联网技术和软硬件系统也不断演进&#xff0c;催生了一场前所未有的数字化革命。从Web1.0到Web3.0&#xff0c;以及虚拟现实、人工智能和数字孪生等领域的崛起&#xff0c;每一步都勾画出了一个崭新的数字未来&#xff0c;…