五、数学建模之层次分析法

news/2024/10/23 9:27:07/

1.概念
2.例题

一、概念

1.提出

  层次分析法(Analytic Hierarchy Process,AHP)是一种多标准决策分析方法,用于帮助人们在面对复杂的决策问题时进行定量和定性的比较和评估。它最初由美国运筹学家和管理学家托马斯·萨蒙(Thomas L. Saaty)于20世纪70年代提出,并在后来得到广泛应用。层次分析法在项目选择、供应链管理、风险评估、资源分配等各种决策问题中都有广泛的应用

2.步骤

  层次分析法的主要思想是将一个复杂的决策问题分解成多个层次,从总体目标到具体的决策方案,然后通过两两比较不同层次的元素,以确定它们相对于彼此的重要性权重。这些比较通常通过专家判断或调查问卷来完成,然后使用数学方法来计算出最终的权重。

层次分析法的基本步骤

(1)建立层次结构:首先,明确定义决策问题,然后构建一个层次结构,包括目标、准则(criteria)和备选方案(alternatives)等不同层次。

(2)两两比较:专家或决策者需要对每个层次内的元素进行两两比较,以确定它们之间的相对重要性。这些比较通常使用一对一的比较矩阵来表示,其中数值表示相对重要性,例如1代表相等重要性,3代表一个元素比另一个元素重要3倍,以此类推。

(3)构建权重矩阵:基于两两比较的数据,可以构建权重矩阵,用于计算每个元素相对于其他元素的权重。

(4)一致性检验:进行一致性检验,以确保专家的两两比较是一致的。如果比较不一致,需要对比较矩阵进行调整。

(5)计算权重:使用一致性检验通过的权重矩阵来计算每个元素的权重。

(6)**综合评估:**将各个层次的权重综合起来,以得出最终的评估结果,通常是在备选方案层次上。

(7)敏感性分析:进行敏感性分析,评估权重的变化对最终结果的影响,以确定决策的稳定性。

二、例题

例 1 假期旅游有 P1、 P2 、 P3 3 个旅游胜地供你选择,试确定一个最佳地点。

根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反复比较 3 个侯选地点。可以建立如图 1 的层次结构模型。

在这里插入图片描述

例 2 挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生。
根据已有信息建立了一个层次结构模型,如图 2 所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解一 Matlab 程序如下


clc,clear 
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),'=[];']); str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1); 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]; %一致性指标
[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纯文本文件txt3.txt中的数据格式如下:
1 1 1 4 1 1/2 
1 1 2 4 1 1/2 
1 1/2 1 5 3 1/2 
1/4 1/4 1/5 1 1/3 1/3 
1 1 1/3 3 1 1 
2 2 2 3 3 1 
1 1/4 1/2 
4 1 3 
2 1/3 1 
1 1/4 1/5 
4 1 1/2 
5 2 1 
1 3 1/3 
1/3 1 1/7 
3 7 1 
1 1/3 5 
3 1 7 
1/5 1/7 1 
1 1 7 
1 1 7 
1/7 1/7 1 
1 7 9 
1/7 1 1 
1/9 1 1 

解法二 python

import pandas as pd
df = pd.DataFrame({'A': [ 1,1,1,4,1,1/2 ], 
'B': [1,1,2,4,1,1/2],'C': [1,1/2,1,5,3,1/2],
'D': [1/4,1/4,1/5,1,1/3,1/3],
'E': [1,1,1/3,3,1,1],
'F':[2,2,2,3,3,1 ],'})
print(df.corr(method='pearson'))

http://www.ppmy.cn/news/1123298.html

相关文章

PyCharm 手动下载插件

插件模块一直加载失败,报错信息: Marketplace plugins are not loaded. Check the internet connection and refresh. 尝试了以下方法,均告失败: pip 换源Manage Plugin Repositories...HTTP 代理设置...关闭三个防火墙 最后选…

go sync.Map包装过的对象nil值的判断

被sync.Map包装过的nil 对象,是不能直接用if xxx nil的方式来判断的 func testnil() *interface{} {return nil }func main() {var ptr *interface{}test : testnil()//p &Person{}fmt.Printf("ptr 的值为 : %v\n", ptr)fmt.Printf("ptr 的值…

LeetCode 75-02:字符串的最大公因子

前置知识:使用欧几里得算法求出最大公约数 func gcdOfStrings(str1 string, str2 string) string {if str1str2 ! str2str1 {return ""}return str1[:gcd(len(str1), len(str2))] }func gcd(a, b int)int{if b 0{return a}return gcd(b, a%b) }

前端面试题记录

vue2响应式原理 vue2主要是采用了数据劫持结合发布者-订阅者模式来实现数据的响应式,vue在初始化的时候,会遍历data中的数据,使用object.defineProperty为data中的每一个数据绑定setter和getter,当获取数据的时候会触发getter&am…

php食堂点餐系统hsg5815ABA2程序-计算机毕业设计源码+数据库+lw文档+系统+部署

php食堂点餐系统hsg5815ABA2程序-(毕业设计毕设项目源代码课程设计程序设计指导xz2023) php食堂点餐系统hsg5815ABA2程序-计算机毕业设计源码数据库lw文档系统部署

错误异常处理与面向对象

文章目录 1. 错误和异常1.1 基本概念1.1.1 Python 异常1.2 检测(捕获)异常1.2.1 try except 语句1.2.2 捕获多种异常1.2.3 捕获所有异常1.3 处理异常1.4 特殊场景1.4.1 with 语句 2. 内网主机存活检测程序2.1 scapy 模块2.1.1 主要功能2.1.2 scapy 安装2…

杀毒软件如何识别病毒43.240.74.X

计算机病毒最早出现在20世纪80年代,当时只存在与实验室中,未广泛传播。病毒的滋生与萌芽期是在80年代末。那一时期病毒攻击也比较单一,主要是感染磁盘引导扇区,或者是感染可执行文件。特征也比较明显。后续随着互联网的发展&#…

使用EasyExcel后端导出excel

官方文档:关于Easyexcel | Easy Excel 这里进行简单记录,方便确定是不是适用此方式: 零:实体类中注解用法 一:读excel /*** 强制读取第三个 这里不建议 index 和 name 同时用,要么一个对象只用index&…