数学建模———层次分析法及其matlab语法,函数和代码实现

news2024/11/24 20:33:50

  1. 层次分析法思想登场

建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择那种方案最好,哪位运动员或者员工表现的更优秀。)

评价类问题字眼:

  1. 评价的目标是什么?
  2. 达到这个目标有那几种方案?
  3. 评价准则或指标是什么?

确定权重的方方法——分而治之

(两两比较推算出权重)

比较的标度:

 

例子引用(本文引用的例子及博主跟的课中举的例子)

旅游景点的选择

 正互反矩阵/判断矩阵:
根据标度所填的矩阵有着一定的规律矩阵中坐标[I,j]与坐标[j,i]的两个元素相乘为1且坐标i==j的元素为1.

 一个不成问题的问题:

在填入矩阵的时候我们填入的数值可能会出现矛盾,此时需要做出修改

 

一致矩阵:

特点:各行/各列成倍数关系且一定是正互反矩阵

 

一致性矩阵的定义:

 

一致性矩阵的检验:

 

 

计算CI中λmax 是最大特征值(后面将特征值求权重时会解释),n是方形矩阵的行/列(因为为方形矩阵所以行=列)

RI是课中给出的

计算权重:

(由于计算权重方法的原理文字或口头叙述过于枯燥,晦涩,我们直接告诉方法,后面在代码实现的时候我们会详细讲解。)

 

 

 

  1. 算数平均法求权重

 

 

 

2.几何平均法求权重

  1. 3.特征值法求权重

 

 

                                        

  1. MATLAB基本语法函数以及层次分析法的实现

(博主是计算机专业所以很多语法函数会与c/cpp中的语法做比较方便计算机专业的理解)

  1. Matlab中的每个语句不需要必须加 ‘ ;’ ,若加上分号表示在执行中此语句执行但不显示出来,若不加分号则执行后语句结果会在命令行窗口(c中的控制台)显示

 

(两个语句都执行了却只显示了a=20)

2.注释:matlab中的注释符号是%(类似c中的//)

 

3.matlab中的命令行窗户(c中的控制台)和工作区(c中监视区的监视变量)每次执行后都会有保存,不会清空,所以使用clear(清楚工作区)clc(清除命令行窗口)

clear;clc  平时都会这样两个连用清楚所有:起到了初始化的作用,防止之前的结果对新的脚本产生干扰

4输入函数disp()

()中为要输出的内容,若为字符串需要用“”/’’引起来(类似c/cpp中的printf,cout)

注意:disp后面加不加;都会输出

5.向量(c中数组)一般赋值矩阵使用,为了方便理解我们成为矩阵。

矩阵中间列的符号是“ ,”(英文逗号)“ ”(空格)

间隔行的符号是“;”(分号)

Eg:

 

6.合1并字符串

a.strcat函数   strcat(‘str1’,’str2’)

b. [‘str1’,’str2’](看成一个数组)

7.num2str()将数字转换成字符串(因为直接把数字当字符串输出会根据ASCII码转换成对应的字符如:97对应‘a’)

如果使用disp()函数输出的时候在disp括号中直接把数字转换成字符串且与已有字符串相连接

8.输入函数 intput()(类似与c中的scanf)

9.求和函数sum(),若括号中为矩阵,默认只输入矩阵是按列求和,最后得到一个一列n行的向量。Sum(A,1)后面加1是按列求和sum(A,2)后面加2是按行求和

10.提取矩阵中指定位置元素

a.取指定行和列A(行,列)

b.取某一行A(行,:)加冒号

c.取某一列A(:,列)

d取某写全部元素A([2,5],:)取第二行和第五行

补充matlab中的等差数列 a1 : d : max(max是数列能取到的最大范围)

如果不加d则默认d为1。

e.取全部元素A( :)

11.size()函数求矩阵的行和列

Size(A,1)返回行size(A,2)返回列

12.repmat()函数复制矩阵函数

B=remat(A,2,1)将A矩阵赋值两行A,一列A成为一个新的矩阵B

13.矩阵之间的运算

* /是矩阵的* /。.*  ./是矩阵中对应的每个元素相互*/。

14.开方 ^    a^n意味a的n次方(同样应用于矩阵,若相对矩阵中每个元素开方应用  .^)

15.eig(A)求矩阵的特征值和特征向量的函数

[V,D]=eig(A)  V表示特征向量   D表示特征值(若只有一个接收则只返回特征值)

16.find()函数  返回向量或矩阵中不为0的元素的下标

若后面加数字n则表示返回前n个不为0的元素。

若x为矩阵:

[r,c]=find(x) 

r:位置不为0的元素的行坐标

c:位置不为0的元素的列坐标

17.矩阵中判断大小关系:

>  <  ==  ~=(对应c中的> ,< ,== ,!=)

返回一个logical数组(其中元素为1代表符合条件,为0不符合)

18.判断语句

 

19.for循环(一定要以end结尾)

For i=1:10(等同于c中的for(int i=1;i<=10;i++))

~~

~~

End

20.相乘函数prod()后面加1为按列相乘,加2为按行相乘

21.ones与zeros函数

 层次分析法matlab代码的实现

算数平均法求权重

%填入方形矩阵
A=[1,1,4,1/3,3;
1,1,4,1/3,3;
1/4,1/4,1,1/3,1/2;
3,3,3,1,3;
1/3,1/3,2,1/3,1]
%求出矩阵每列的和 
SUM_A=sum(A)
%求出矩阵的行数
n=size(A,1)
%将求出来的每列的和扩大n行倍,方便归一化(每个元素除以其所在列的和)
SUM_cA=repmat(SUM_A,n,1)
%第一步归一化处理
A_guiyi=A./SUM_cA
%第二部将归一化元素各列相加(按行求和得到一个列向量)
SUM_guiyiA=sum(A_guiyi,2)
LAST_A=SUM_guiyiA./n

几何平均法求权重

%填入方形矩阵
A=[1,1,4,1/3,3;
1,1,4,1/3,3;
1/4,1/4,1,1/3,1/2;
3,3,3,1,3;
1/3,1/3,2,1/3,1]
%第一步将A元素各行相乘得到一个列向量
Prod_A=prod(A,2)
%第二部将新向量中每个元素开n次方(成1/n次方)
Prod_nA=Prod_A.^(1/n)
%将开n次方后的向量归一化处理得到权重(归一化就是将向量中的每个元素除向量和)
disp('几何平均法求权重结果:')
disp(Prod_nA/sum(Prod_nA))

特征值法求权重

%填入方形矩阵
A=[1,1,4,1/3,3;
1,1,4,1/3,3;
1/4,1/4,1,1/3,1/2;
3,3,3,1,3;
1/3,1/3,2,1/3,1]
%第一步求出A的最大特征值,以及其对应的特征向量(V向量,Val值)
[V,val]=eig(A)
%求最大特征值
MAX_val=max(max(val))%第一个max求每列的最大特征值第二个求真个矩阵最大特征值
%求最大特征值对应的特征向量
% 1.找到最大特征值的位置,并保存它的位置
[r,c]=find(val==MAX_val,1)
%2.(***)求出列所在那一行的向量就是最大特征值向量
V(:,c)
%第二步对求出的特征向量进行归一化处理(让最大特征向量的每个元素除其和)得到我们的权重
disp('特征值法求权重的结果为')
disp(V(:,c)./sum(V(:,c)))

博主主要跟着清风数学建模的课程学习,其中里面的一些图片都来源于上课视频的截图。

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

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

相关文章

flutter开发实战-dio文件下载实现

flutter开发实战-dio文件下载实现 在开发中&#xff0c;需要下载文件&#xff0c;这里使用的是dio dio 是一个强大的 Dart HTTP 请求库&#xff0c;支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 一、引入d…

apache下载

Apache VS17 binaries and modules download php下载地址 PHP For Windows: Home windows.php.net - /downloads/releases/archives/ 历史版本下载 php下载 https://windows.php.net/downloads/releases/archives/php-5.6.37-Win32-VC11-x64.zip https://www.apachehaus.com/…

代码随想录day14

这里推荐这三道题先熟悉二叉树的三种遍历方式 144. 二叉树的前序遍历&#xff08;中->左->右) 根左右。前序遍历首先访问根结点然后遍历左子树&#xff0c;最后遍历右子树。在遍历左、右子树时&#xff0c;仍然先访问根节点&#xff0c;然后遍历左子树&#xff0c;最后…

如何在云中实现安全与合规的规模化?亚马逊云科技给出了答案

在亚马逊云科技&#xff0c;为满足客户不断变化的需求&#xff0c;亚马逊云科技持续创新与迭代&#xff0c;设计的服务能帮助客户满足最严格的安全和合规性要求。针对安全相关工作&#xff0c;亚马逊云科技服务团队与Amazon Security Guardians云守护者项目密切配合&#xff0c…

【计算机视觉】80 TB!58.5 亿!世界第一大规模公开图文数据集 LAION-5B 解读

文章目录 一、导读二、数据集背景信息2.1 图文对数据集2.2 图像数据集 三、LAION-5B有什么3.1 子集3.2 开源模型3.3 KNN index/web界面 四、LAION可以做什么任务4.1 图文匹配及多模态预训练4.2 生成任务4.3 分类任务4.4 其他任务 五、总结 一、导读 继去年 LAION-400M 这个史上…

Android Jetpack Compose多平台用于Android和IOS

Android Jetpack Compose多平台用于Android和IOS JetBrains和外部开源贡献者已经努力工作了几年时间来开发Compose Multiplatform&#xff0c;并最近发布了适用于iOS的Alpha版本。自然地&#xff0c;我们对其功能进行了测试&#xff0c;并决定通过使用该框架在iOS上运行我们的…

leetcode47. 全排列 II 回溯剪枝的细节问题

题目描述&#xff1a; 1、思路 作为回溯算法的经典问题&#xff0c;常用的方法是&#xff0c;每次dfs前先判断是否达到临界条件&#xff0c;满足条件则加入结果集并return。通过循环和dfs来构建树&#xff0c;查找出全部满足条件的集合。 例如本题&#xff0c;如1&…

dp动态规划详解下

dp动态规划详解上&#xff1a;https://blog.csdn.net/weixin_73936404/article/details/131527247?spm1001.2014.3001.5501 目录 dp动态规划详解上&#xff1a;https://blog.csdn.net/weixin_73936404/article/details/131527247?spm1001.2014.3001.5501 【案例1】 【题目描…

强度(极限强度、屈服强度)、韧性材料与脆性材料(韧性材料与脆性材料的强度、为什么脆性材料在压缩时比在拉伸时更坚固?)、材料的延展性、韧性、弹性

1.强度 强度&#xff08;Strength&#xff09;是材料可以承受的应力的量度&#xff0c;通常使用极限强度&#xff08;Ultimate strength&#xff09;和屈服强度&#xff08;Yield strength&#xff09;来定义材料的强度-极限。 材料的极限抗拉强度定义为在拉伸试验过程中达到的…

windows 编译libyuv

一、libyuv下载 git clone https://chromium.googlesource.com/external/libyuv 二、libjpeg-turbo下 git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git 三、编译可以参考 BUILDING.md 需要环境&#xff1a; VS2019 CMake YASM 启动vs工具 编译&#xff1…

js模块化开发

◼ 到底什么是模块化、模块化开发呢&#xff1f;  事实上模块化开发最终的目的是将程序划分成一个个小的结构&#xff1b;  这个结构中编写属于自己的逻辑代码&#xff0c;有自己的作用域&#xff0c;定义变量名词时不会影响到其他的结构&#xff1b;  这个结构可以将自己…

SAP S4 Hana 下面ACDOCA 凭证行字段增强创建过程

网上找到这个类下面是可以新增增强的 现在需要在如下位置建立四代增强点 保存以后会出现下面的增强项 保存激活后&#xff0c;完成在源程序中增加了一个4代显式增强点.上面步骤只是在程序中建立了一个增强点&#xff0c;并没有执行什么动作&#xff0c;就相当于建立一个容器。如…

Python将Excel数字对应列的字母写成字典(json)

在日常的办公中&#xff0c;我们经常需要利用python去读写Excel类型的文件&#xff0c;有时候我们需要将每个数字代表的列的字母表现出来&#xff0c;那么我们可以利用Python实现&#xff0c;而且今天的代码可以根据自己的需求去任意的改变你想规定的长度 如,或者更长 a {1:…

1分钟搭建VPN服务器

1分钟搭建一个VPN服务器 VPN技术在保障网络通信安全和隐私上发挥着重要作用。IPsec VPN是其中一种常用的VPN模式。本文将介绍如何通过使用Docker来快速搭建IPsec VPN Server。 什么是IPsec VPN&#xff1f; IPsec即Internet Protocol Security&#xff0c;是一种用于保护互联…

「2024」预备研究生mem- 形式逻辑强化:逻辑的特殊文字表述方式(重点记忆)

一、形式逻辑强化&#xff1a;逻辑的特殊文字表述方式 二、课后题

关于torch.load报出找不到模型的错误,但路径明明正确

后来发现是因为使用 torch.save(model,save.pt) 会保存整个文件时会默认保存训练py文件的父目录&#xff0c;用torch.load导入文件时搜索路径必须有此父路径&#xff0c;否则将会提示no model named model这样的错误 解决办法是使用sys.path.apend把该父目录加入搜索路径中 …

Java开发 - 探寻Spring的秘密

前言 Spring是企业级J2EE一站式解决方案&#xff0c;提供了整个项目的表现层、业务层、持久层&#xff0c;而且&#xff0c;它的生态特别完善&#xff0c;可以和其他框架无缝对接&#xff0c;现在做Java的哪个项目里没有Spring的说出不去都不信。但往往我们开发者只重视项目是…

重定向:电商行业打败对手的杀手锏

重定向是一种在线营销策略&#xff0c;针对对产品或服务表示兴趣的潜在客户。可以追踪那些访问过您的网站、但未进行过消费的用户&#xff0c;再次向他们展示相关产品&#xff0c;激起消费欲。再营销则是可以追踪那些将商品加入网页购物车&#xff0c;但最后没有购买的用户&…

物流RFID设备一般在哪些场景应用?

随着现代物流行业的快速发展&#xff0c;传统条码技术信息量少&#xff0c;易脏污损毁&#xff0c;耐用性不高等问题很难满足物流企业多样化的需求&#xff0c;物流RFID设备的应用也越来越广泛。下面我们就跟大家一起来分析一下&#xff0c;物流RFID设备可以在哪些场景中应用。…

计算机体系结构基础知识介绍之动态调度(三)

首先回顾一下tomasulo算法&#xff0c; Tomasulo算法的第一个优点是分布式的冒险检测逻辑&#xff0c;这是通过使用预留站和公共数据总线实现的。预留站是一种存储指令和操作数的缓冲区&#xff0c;每个功能单元都有自己的预留站。公共数据总线是一种广播结果的方式&#xff0…