层次分析法(MATLAB)

这篇具有很好参考价值的文章主要介绍了层次分析法(MATLAB)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对之前的学习进行总结,整个比赛下来好像就用到了这个方法,最后也不知道对不对,反正最后还有点赶,就是很懵的那种,对于层次分析话的还是有点了解了,由于是纯小白,有错误的地方希望各位大佬能够指出。

目录

数据提取

归一化处理

判断矩阵

一致性检验

 算术平均法求权重

加权求和

过程体会


数据提取

有些题目就会自己提供数据,数据是存储在Excel里面的,要导入的话我是用xlsread来实现的,因为是只用到了数值部分,所以另外两个参数就用~替代了。假设就是要提取“数学建模.xls”里面sheet1表中的内容,前面跟着的文件的绝对路径,用相对路径应该也可以吧,我这里没尝试了。

%[num, txt, raw] = xlsread(filename, sheet, range)
[num,~,~]=xlsread('C:\Users\25496\Desktop\数学建模.xls','sheet1');

一般这种数据也是有规律的,集中在一块上面,直接就可以截取出来存在一个矩阵里面。如截取num中的1到10行,且5到14列的数据。如果有多组相同指标的数据,看是通过直接相加还是什么变成一组数据。

data=num(1:10,5:14);

这里有一个要注意的地方,因为不同指标之间的数量级不同,如果直接放在同一个矩阵里面,很小的数和一个更小的数放在一起,可能就会导致更小的整个指标的数据直接变成0,这显然是不被允许的,我当时的处理是把他们没个指标的数据放在集合中,因为后面要归一化处理,等处理之后在放在同一个矩阵里面,现在的话可以直接给他们整体乘以一个倍数,就可以让他们不至于被忽略了。

层次分析法(MATLAB),matlab,开发语言,数学建模

 层次分析法(MATLAB),matlab,开发语言,数学建模

归一化处理

因为不同指标之间的数量级可以不用,指标内部的单位一致,但是指标和指标之后的值不同,这肯定是要进行归一化处理的,不然一个很大的数但是这个指标的权重却比较小,这不归一化处理这整个的误差就很大了。这里采用的是通过先求得整个指标数据的总和,再用每一个指标的数据除以整个总和,假设指标是一列一列的,就是用这一个数据除以这一列的总和得到一个数值。这样处理之后不同指标数量级一致,指标内部之间的排名没有发生改变。

这个计算的话,我比较担心的就是精度的问题了,然后可以直接通过循环来完成整个过程。这个除数的话习惯写还是用./,用/也行。

matlab中乘法“*”和点乘“.*”;除法“/”和点除“./”的联系和区别。_matlab 矩阵乘法_xiaotao_1的博客-CSDN博客https://blog.csdn.net/xiaotao_1/article/details/79026406

%归一化处理
[mm,nn]=size(data);%数据行数和列数

for j=1:nn    %针对每一列
    msum=sum(data(:,j));    %求这一列元素之和
    for i=1:mm
        data(i,j)=data(i,j)./msum;    %每一个元素的值都除以这行的和
    end
end

 我当时是转换成元胞数组了,然后运算之后要变成矩阵的形式。

%归一化处理
[~,nn]=size(ingredient);
[mm,~]=size(ingredient{1});

for j=1:nn
    msum=sum(ingredient1{j});
    for i=1:mm
        ingredient{j}(i)=ingredient{j}(i)./msum;
    end
end

%元胞数组转矩阵
ing=cell2mat(ingredient);

判断矩阵

因为不同指标之间的含义不同,所以侧重点也不同,所以一般是通过指标数值乘以权重再相加来区分重要性的,指标我们之前已经统一在同一个数量级了,现在我们要求的就是权重了。

首先就要人为设定一个判断矩阵,来表示指标之间的重要性,那么可以随便设定吗,这显然是不可以的,但是为什么不可以呢,因为我们对指标的重要性进行两两比较构造的判断矩阵,这可能就会导致出现不一致的情况,所以矩阵是否满足要求,就是要看他是否可以通过一致性检验。

一致性检验

计算一致性比例CR,CR=CI/RI,其中CI=(λmax-n)/(n-1),λmax为判断矩阵的最大特征值,n为指标数(判断矩阵行数),RI为平均随机一致性指标,通过查表可得到不同n对应的RI。

如果一致性比例CR=0,说明判断矩阵是一致矩阵,不会出现任何矛盾的情况。

如果一致性比例CR<0.1,可以认为判断矩阵一致举证的“差异”不大,通过一致性检验。

如果一致性比例CR>=0.1,需要修改判断矩阵,直到CR<0.1。

这个当时的话我一直不知道RI是什么意思,查表?到哪里查表,后面发现这个就是一个固定的东西。

RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49];

然后对于判断矩阵的话,当时我们选了九个指标吧,可以想象当时的难度多大,不过还好通过一些特殊手段是直接得到了一个判断矩阵。缺点就是忽略的重要性那个东西,就是求出这个判断矩阵,通过判断矩阵来得到他们之间的重要性,调节指标在程序中的位置。

A=[1  3/2  3/4  1/5  1/4  3/2  2    3/4  1
  2/3 1    1/2  1/4  1/6  1    3/2  1    1/2
  4/3 2    1    1/3  1/2  2    3/2  1    3/2
  5   4    3    1    2    4    5    2    4
  4   6    2    1/2  1    3    4    2    5
  2/3 1    1/2  1/4  1/3  1    3/2  1    1/2
  1/2 2/3  2/3  1/5  1/4  2/3  1    1/3  2/3
  4/3 1    1    1/2  1/2  2    3/2  1    3/2
  1   2    2/3  1/4  1/5  2    3/2  2/3  1];

那么怎么判断他对不对呢,就是要看一致性检验了。不得不说MATLAB是真的方便,最大特征值就求出来了。

A=[1  3/2  3/4  1/5  1/4  3/2  2    3/4  1
  2/3 1    1/2  1/4  1/6  1    3/2  1    1/2
  4/3 2    1    1/3  1/2  2    3/2  1    3/2
  5   4    3    1    2    4    5    2    4
  4   6    2    1/2  1    3    4    2    5
  2/3 1    1/2  1/4  1/3  1    3/2  1    1/2
  1/2 2/3  2/3  1/5  1/4  2/3  1    1/3  2/3
  4/3 1    1    1/2  1/2  2    3/2  1    3/2
  1   2    2/3  1/4  1/5  2    3/2  2/3  1];

%一致性检验
%求矩阵特征值
maxlam=max(eig(A));
[~,n]=size(A);

RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49];

CI=(maxlam-n)/(n-1);
CR=CI/RI(n);

if CR<0.10
    disp("通过一致性检测")
else
    disp("没有通过一致性检测")
    return %终止运行
end

层次分析法(MATLAB),matlab,开发语言,数学建模

 算术平均法求权重

这个我最终就是要求权重,那么每一个指标对应的权重怎么求呢?这里是通过算术平均法来求解的。

  • 将通过一致性检验的判断矩阵按列归一化
  • 每一列分别求和,求和的结果除以n,得到列向量就是权重向量。
%算数平均法求权重
[n,~]=size(A);
Asum=sum(A,1);%按列求和
Aprogress=A./(ones(n,1)*Asum);

%求权重向量
W=sum(Aprogress,2)./n;

这里要注意的就是sum函数,sum(A,1)是按列求和,sum(Aprogress,2)是按行求和的。默认是按列求和的。

matlab中sum函数的用法_matlab sum函数_一只佳佳怪的博客-CSDN博客https://blog.csdn.net/iii66yy/article/details/128474643

层次分析法(MATLAB),matlab,开发语言,数学建模

加权求和

最后就是对所有的指标进行加权求和了,得到最后的总评分。

gred=ing*W;

层次分析法(MATLAB),matlab,开发语言,数学建模

 当时我们是14个人,选了9个指标吧,也不知道是不是这样写的,最后就得到了这最后的一组数据,就是他们14个人的综合打分了,数值越大的就越优秀了。

过程体会

不太知道是否正确,就记录了整个的过程,下面是我自己对问题的理解:

为什么要对原始的指标进行归一化处理?

因为不同指标之间的数量级不同。

为什么要设定判断矩阵?

因为不同指标之间的侧重不同,假设指标A比指标B更加能够说明问题,那指标A肯定就比指标B更加重要一些。整个的设定过程本身就是主观的,好比一道菜肴,有人认为营养更加重要,也有人认为味道更加重要,所以这个设定就是看个人的倾向,能通过一致性检验的矩阵就是满足的矩阵。

为什么要用算术平均法求权重?

这个的话应该还有其他的方法,这里用的是算术平均分求的,先对判断矩阵进行归一化之后,就算术平均得到权重,当做整个指标的权重了。最后刚好行列向量相乘,得到最终的得分矩阵。文章来源地址https://www.toymoban.com/news/detail-530649.html

到了这里,关于层次分析法(MATLAB)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 层次分析法(matlab实现)

           在决策理论中,层次分析法是一种以 数学 和 心理学 为基础,组织和分析复杂决策的结构化技术,它代表了一种 量化决策标准权重 的准确方法,通过成对比较,利用个别专家的经验来估计因素的相对大小        在很多情况下,我们对事物的评价,应该多维度的进

    2024年02月09日
    浏览(47)
  • 清风学习笔记—层次分析法—matlab对判断矩阵的一致性检验

    在判断矩阵是否为正互反矩阵这块,我写了两种代码,改进前很麻烦且有错误,改进后简洁多了,改进前的代码还有错误,忽略了对角线的值必须都是1,只考虑了除开对角线的元素相乘为1。  下面是全部代码

    2024年02月06日
    浏览(49)
  • 数学建模——层次分析法

    正互反矩阵:若矩阵中每个元素a(ij)0且满足a(ij)*a(ji)=1。 层次分析法中,我们构造的判断矩阵均是正互反矩阵。 一致矩阵:若正互反矩阵满足a(ij)*a(jk)=a(ik)。 一致矩阵的秩为1。 一致矩阵有一个特征值为n,其余特征值均为0。 判断矩阵越不一致时,最大特征值与n相差越大。 一

    2024年02月16日
    浏览(41)
  • 数学建模:层次分析法

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 将问题条理化,层次化,构建出一个有层次的结构模型。层次分为三类: 目标层,准则(指标)层,方案层 。 比较指标层中不同指标之间的相对重要程度,并且构建一个 成对比较矩阵 。 自行判断两个不同指标的相对重要程

    2024年02月10日
    浏览(47)
  • 数学建模:层次分析法(AHP)

    层次分析法(Analytic Hierarchy Process,AHP)是一种多准则决策方法,用于解决复杂的决策问题。它是由美国数学家托马斯·萨亚基(Thomas L. Saaty)于20世纪70年代提出的。其基本思想是将复杂的决策问题分解为层次结构,通过对准则和方案进行定量和定性的比较,最终得出最佳决

    2024年01月17日
    浏览(58)
  • 数学建模——层次分析法(AHP)

    在人类社会生活的各个领域以及日常生活中,我们经常遇到一些决策问题,例如购物买钢笔,一般要依据质量、颜色、实用性、价格、外形等方面的因素选择某一支钢笔。买饭,则要依据色、香、味、价格等方面的因素选择某种饭菜。过去人们处理这些问题往往是凭经验,靠

    2024年02月05日
    浏览(51)
  • 【数学建模】层次分析法(AHP)

    评价类问题 ,如选择哪种方案最好,哪位运动员或者员工表现地更优秀。通常具体数据没有给出。 一道典型例题 这是典型的运用层次分析法的题目,没有给出具体数据,要求采取一定措施进行评价,选择最佳方案,其中已经高亮。 我们需要考虑三个问题: 目标、方

    2024年02月01日
    浏览(41)
  • 数学建模学习笔记||层次分析法

    解决评价类问题首先需要想到一下三个问题 我们评价的目标是什么 我们为了达到这个目标有哪几种可行方案 评价的准则或者说指标是什么 对于以上三个问题,我们可以根据题目中的背景材料,常识以及网上收集到的参考资料进行结合,从而筛选出最合适的指标 优先选择知

    2024年01月23日
    浏览(56)
  • 五、数学建模之层次分析法

    1.概念 2.例题    层次分析法 (Analytic Hierarchy Process,AHP)是一种多 标准决策分析方法 ,用于帮助人们在面对复杂的决策问题时 进行定量和定性的比较和评估 。它最初由美国运筹学家和管理学家托马斯·萨蒙(Thomas L. Saaty)于20世纪70年代提出,并在后来得到广泛应用。层

    2024年02月07日
    浏览(56)
  • 清风老师数学建模笔记——层次分析法

    1.层次分析法的概念;层次分析法(The Analytic Hierarchy Process即 AHP)是由美国运筹学家、匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解决了定性问题定量化的处理过程。 2.层次

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包