层次分析法(多准则决策方法)

2023-11-05

这是介于定量分析与定性分析的一种方法。
运用层次分析法建模,大体上可按下面四个步骤进行:

  1. 建立递阶层次结构模型;
  2. 构造出各层次中的所有判断矩阵;
  3. 层次单排序及一致性检验;
  4. 层次总排序及一致性检验。

建立递阶层次结构模型

(每一层次中各元素所支配的元素一般不要超过 9 个。)
在这里插入图片描述

由判断矩阵得到比例关系->特征值和特征向量

构建判断矩阵

实验表明,采用1-9的标度最为合适。
在这里插入图片描述
在这里插入图片描述
满足已上关系式的正互反矩阵称为一致矩阵.
若 A 为一致矩阵,则A 的最大特征值λmax = n ,其中n为矩阵 A 的阶。
A 的其余特征根均为零.正互反矩阵 A 非一致时,必有 n>λmax.
判断矩阵的一致性检验的步骤:
(CI自己计算得到,RI根据资料,不用计算。)
在这里插入图片描述

层次单排序

  • 准则层:
    构造准则层的判断矩阵,即每两两准则进行比较,给出标度,然后进行一致性检验,用matlab算出每个矩阵的特征值,构成一个向量。

  • 方案层:
    选定单一准则后,方案层的每两两个元素进行比较,得到判断矩阵。若总共有n个准则,则有n个矩阵。

层次总排序

将准则层得到的特征权重组合,构成一个列向量,与方案层进行相乘,得到最终的得分结果。

matlab代码

fid=fopen('txt3.txt','r');   %打开文件
n1=6;n2=3;                   %矩阵的行数
a=[];
for i=1:n1
    tmp=str2num(fgetl(fid));
    a=[a;tmp];        %读准则层判断矩阵
end
for i=1:n1
    str1=char(['b',int2str(i),'=[];']);           %等价于‘b=[ ]’
    str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); 
    %等价于'[b=[b;tmp]]'
    eval(str1);    %可理解成执行‘b=[]’
    for j=1:n2
         tmp=str2num(fgetl(fid));
         eval(str2);          %读方案层的判断矩阵
    end
end
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
 % 求判断矩阵的特征值组成的对角矩阵 y
 % x是与特征值对应的特征矢量组成的矩阵。
[x,y]=eig(a);        
lamda=max(diag(y));    %最大特征值
 %找出在y对角矩阵中的位置(竖着数)
num=find(diag(y)==lamda);  
w0=x(:,num)/sum(x(:,num));  %w0已经变成一个列向量了
%计算检验的标准
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
%ts就是最终的结果打分
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

层次分析法(多准则决策方法) 的相关文章

  • qt中qwt的安装的方式

    参考大神博客 https blog csdn net imkelt article details 51234230 utm medium distribute pc relevant none task blog BlogCommendF
  • Error in nextTick “TypeError Cannot read property ‘xxx‘ of undefined“

    报这个错主要是因为子组件还没加载完成就对子组件进行赋值 推荐使用第一个 this nextTick gt 修改子组件的内容 或 setTimeout gt 修改子组件的内容 50 父组件传值给子组件 子组件不能直接修改 会报错 子组件修改父
  • JavaScript中的endsWith

    如何在JavaScript中检查字符串是否以特定字符结尾 示例 我有一个字符串 var str mystring 我想知道该字符串是否以 结尾 我该如何检查 JavaScript中是否有endsWith 方法 我有一个解决方案是获取字符串的
  • 嘴说手画一文搞懂Spark的Join

    Spark Sql的Join和关系型数据库Sql的Join有很多相同点 比如inner join left join right join full join 这是二者都有的概念 并且含义相同 但是 Spark Sql是分布式执行 面对的是
  • ADB命令开启和关闭飞行模式,两段式操作方式!!!!

    开启飞行模式 必须要先执行1 再执行2 执行1 adb shell settings put global airplane mode on 1 执行2 adb shell am broadcast a android intent act
  • Docker部署Elasticsearch集群

    编写docker compose yml version 3 7 services es01 image elasticsearch 7 10 1 container name es01 ports 9200 9200 9300 9300
  • dc-1 靶机渗透学习

    环境 Vmware 虚拟机软件 dc 1 靶机ip地址 192 168 202 130 kali攻击机ip地址 192 168 202 129 本次渗透过程kali攻击机和dc靶机都采取NAT模式 信息收集 首先用ipconfig查看当前k
  • 初始化k8s踩过的坑

    问题一 error execution phase preflight couldn t validate the identity of the API Server abort connecting 这个问题网上有很多的解决方法 大致有
  • 【OpenCV】分离多通道图像RGB的值

    原文地址 http blog csdn net xiaowei cqu article details 7558657 1 计算图像ROI区域RGB的平均值 cvAvg函数 2 通道分离 合并的时候要特别的注意 分离之后的图像时单通道的灰度
  • RabbitMQ:使用Java进行操作

    使用Java操作消息队列 现在我们来看看如何通过Java连接到RabbitMQ服务器并使用消息队列进行消息发送 这里一起讲解 包括Java基础版本和SpringBoot版本 首先我们使用最基本的Java客户端连接方式
  • shell脚本的发送消息

    我们可以利用 Linux 自带的 mesg 和 write 工具 向其它用户发送消息 需求 实现一个向某个用户快速发送消息的脚本 输入用户名作为第一个参数 后面直 接跟要发送的消息 脚本需要检测用户是否登录在系统中 是否打开消息功能 以及当
  • 基于 LLM 的知识图谱另类实践

    本文整理自社区用户陈卓见在 夜谈 LLM 主题分享上的演讲 主要包括以下内容 利用大模型构建知识图谱 利用大模型操作结构化数据 利用大模型使用工具 利用大模型构建知识图谱 上图是之前 我基于大语言模型构建知识图谱的成品图 主要是将金融相关的
  • Go交叉编译

    交叉编译是指在一个硬件平台生成另一个硬件平台的可执行文件 而Go提供了非常方便的交叉编译方式 如何编译 Go交叉编译 涉及到几个环境变量的设置 GOARCH GOOS和CGO ENABLED GOARCH 编译目标平台的硬件体系架构 amd
  • 单元测试框架-Junit

    JUnit作为Java单元测试中的首选框架 在Java开发中使用最为广泛 JUnit 在测试驱动的开发方面有很重要的发展 教程 jUnit 教程 w3cschool BeforeAll修饰的 可以作为整个Class的初始化操作 前置操作 J
  • IDEA的run maven方式启动

    安装jetty插件 1 找到Plugins 查找jetty插件 安装 IDEA Jetty Runner 安装好后重启IDEA 安装插件 Maven Helper 方法同Jetty pom xml添加
  • cocos笔记——如何读取json表

    创建json表 1 将所需数据录入excel表格 或其他可转换为json表的文档 2 复制表中需要的文字 用在线json表转换工具 如 在线json校验格式化工具 中的Excel转json功能 将表格转化为json表的格式 3 复制转化好的
  • Chrome/Edge/Firefox浏览器离线安装包下载地址总汇

    Google Chrome谷歌浏览器离完整离线安装包下载地址整理总汇 每次重装系统 都要为安装 Chrome 而烦恼 虽然现在可以直接从谷歌浏览器官网下载在线安装包进行安装 但是在线安装包安装的版本不可控 大概率是 x86 版本 而且在断网
  • maven切换镜像源

    今天像往常一样准备构建项目时报错 原因是中央仓库暂停更新 导致很多jar包都没有 1 打开settings xml文件 settings xml文件一般在maven的安装目录conf文件夹下 2 切换镜像源 定位到

随机推荐

  • Lecture 9

    绪论 这一章节介绍的是divide and conquer multiplication divide的意思是分开 conquer的意思是占据 控制 divide and conquer直译下来就是分开后控制 其实就是分而治之的意思 mul
  • 手动可视化裁剪点云 (附open3d python代码)

    有时候 我们想要在一个比较刁钻的角度截取点云 或者想要截取一个多边形区域的点云 用代码可能不是那么方便的截取 这个时候 还是可视化的裁剪比较方便简单 代码如下 coding utf 8 import numpy as np import c
  • radare2 使用记录

    radare2 使用记录 编译 调试分析 数据结构 rasm disasm analop 反汇编 cs disasm libarch 编译 radare2 UNIX like reverse engineering framework an
  • VSCode 无法跳转C语言函数定义和变量定义的解决方案(本地端+远程服务器端)

    文章目录 前言 1 给本地端安装 C C 插件 2 给远程服务器端安装 C C 插件 小结 前言 初次使用 VSCode 编辑代码时 估计有不少小伙伴遇到过点击函数或变量无法跳转到定义处 左侧大纲栏里也没有任何内容的情况 这是缺少 C C
  • Vue项目运行报错:operty or method “xxx“ is not defined on the instance but referenced during render.

    报错原因 属性或方法 xxx未在实例上定义 但在渲染过程中被引用 解决方法 定义这个属性或者方法 1 只渲染了 没有定义 2 定义属性或方法 注意 如果定义了还是报这个错误 那么请一定检查定义的位置是不是正确的 博主偶尔也会出现这个问题 但
  • Spring cloud alibaba sentinel 实战

    Sentinel 分布式系统流量防卫兵 一 简介 二 特性 三 概念 四 安装 4 1 本地安装 4 2 docker 安装 五 实例 5 1 启动sentinel 5 2 模块配置 六 持久化配置 七 注意 6 1 SentinelRes
  • 奥拉星登陆显示网络或服务器,《奥拉星手游》进不去游戏怎么回事 无法进入游戏解决方法分享...

    导 读 奥拉星手游进不去游戏怎么办 很多玩家都卡顿在游戏外面了 那么遇到这个问题如何解决呢 下面九游小编为大家介绍奥拉星无法进入游戏解决方法 奥拉星无法进入游戏解决方法 目前测试服刚刚开服 人数在一时 奥拉星手游进不去游戏怎么办 很多玩家都
  • 二叉树(构造篇)

    二叉树 纲领篇 先复述一下前文总结的二叉树解题总纲 是否可以通过遍历一遍二叉树得到答案 如果可以 用一个 traverse 函数配合外部变量来实现 这叫 遍历 的思维模式 是否可以定义一个递归函数 通过子问题 子树 的答案推导出原问题的答案
  • 华为OD机试 - 判断一组不等式是否满足约束并输出最大差(Java)

    题目描述 给定一组不等式 判断是否成立并输出不等式的最大差 输出浮点数的整数部分 要求 不等式系数为 double类型 是一个二维数组 不等式的变量为 int类型 是一维数组 不等式的目标值为 double类型 是一维数组 不等式约束为字符
  • sublime添加直接运行语言的方法

    Tools Build system New Build System 添加新的编译文件 添加lua编译环境 cmd usr local bin lua file file regex lua t 0 9 0 9 selector sour
  • js检索关键字

    var i str indexOf 关键字 formi 查找str中formi的位置之后的下一个关键字的下标值 如果省略第二个关键字 则默认从0开始查找 如果没有找到 则返回 1 var i str lastIndexOf 关键字 form
  • title=“{{item.id}}“: Interpolation inside attributes has been removed. Use v-bind or the colon short

    title item id Interpolation inside attributes has been removed Use v bind or the colon shorthand instead v for列表渲染中给a ca
  • python中codecs模块_python自然语言编码转换模块codecs介绍

    python对多国语言的处理是支持的很好的 它可以处理现在任意编码的字符 这里深入的研究一下python对多种不同语言的处理 有一点需要清楚的是 当python要做编码转换的时候 会借助于内部的编码 转换过程是这样的 原有编码 gt 内部编
  • Linux环境下安装JDK

    安装jdk有两种方法 手动安装 yum安装 yum安装如下 1 查询要安装jdk的版本 yum y list java 2 安装jdk1 8 yum install y java 1 8 0 openjdk x86 64 3 查询jdk版本
  • Windows 系统中安装 MySQL 5.6 zip 步骤并配置 root 密码

    说明 最早我安装 MySQL 还是使用安装版的进行安装 但是作为一名程序员 MySQL 公司既然提供了 zip 版本的安装 我们当然要使用这种绿色的安装方式 MySQL 5 6 版本和 5 7 版本的安装步骤有很大不同 本文记录了 5 6
  • ultraiso制作u盘启动盘教程图文详解纯净-U盘启动教程

    制作u盘启动盘用软碟通ultraiso轻松制作纯净windows7 u盘装系统 网友们除了知道的u大师u盘启动盘制作工具 u启动 u深度 老毛桃 大白菜u盘启动盘制作工具外 还有量产 fbinstTool 我这再介绍一种u盘启动盘的制作方式
  • maven子依赖版本覆盖父依赖

    比如父依赖定义了jaskson version为2 13 3 在
  • 01-Java基础-变量

    一 变量介绍 变量就是向操作系统申请内存来存储值 也就是说 当创建变量的时候 需要在内存中申请空间 内存管理系统根据变量的类型为变量分配存储空间 分配的空间只能用来储存该类型数据 简单理解 类似数学中的 设 x 1 在程序中就表示声明了一个
  • 移动级处理芯片岁末盘点

    时间过得真快 不知不觉间又到了年关 这就说明一年一度做盘点汇总的时候也要到了 作为即将踏入这个科技行业快有三个年头的媒体人 笔者也这在这段时间内跟随新兴的移动互联网市场一起成长着 同时也看尽了这三年来行业里无情的变迁 感叹身在同一个行业里厂
  • 层次分析法(多准则决策方法)

    这是介于定量分析与定性分析的一种方法 运用层次分析法建模 大体上可按下面四个步骤进行 建立递阶层次结构模型 构造出各层次中的所有判断矩阵 层次单排序及一致性检验 层次总排序及一致性检验 建立递阶层次结构模型 每一层次中各元素所支配的元素一般