matlab如何求指标的权向量_【Matlab】案例讲解层次分析法的Matlab实现

本文介绍了如何在Matlab中简单实现层次分析法(AHP),通过创建自定义函数AHP,处理单层次结构的计算,包括权重向量、最大特征值、一致性指标和一致性比率的计算。并通过实例详细展示了如何应用该函数来评估旅游景点的选择,最终确定最优选项。
摘要由CSDN通过智能技术生成

我写过层次分析法的Matlab实现:张敬信:【评价算法】层次分析法​zhuanlan.zhihu.com

其中的ahp函数是来自《吴鹏. Matlab高效编程技巧与应用:25个案例分析》,我只是增加或改写了注释说明。但是该函数对大家使用不太友好,非常复杂难用,倒不是函数定义的不好,只是因为它是将整个多层次的层次结构模型,一次代入该函数,一次完成全部的计算,所以就变得很复杂和难用。

这次重写一个简单易用的,一次只解决一个层次结构的层次分析法计算,多个结构多用几次就好了。层次分析法原理见上篇文章,这里不再赘述。

以么焕民老师在智慧树平台的数学建模课程中的,层次分析法案例为基础,来具体阐述。

问题描述:某人要出去旅游,有 3 个备选景点,需要从景色、费用、居住条件、饮食、旅途共5 个因素来考量。

一. 构建层次结构

二. 构造成对比较矩阵

5个因素分别记为X1,X2,X3,X4,X5

某人根据自己的考量,给出的成对比较矩阵:

为例,表示在某人看来费用比景色的相对重要程度是

,即认为费用是景色的

倍重要,其它矩阵元素的解释类似。

A = [ 1 1/2 4 3 3;

2 1 7 5 5;

1/4 1/7 1 1/2 1/3;

1/3 1/5 2 1 1;

1/3 1/5 3 1 1];

三. 计算权向量及一致性检验

么老师是用方根法近似计算的,实际上完全没有必要,直接用eig()函数算精确的就行了。两种方法我都实现一下。方根法近似计算

W = prod(A, 2) % 计算每一行乘积

n = size(A, 1); % 矩阵行数

W = nthroot(W, n) % 计算n次方根

W = W / sum(W) % 归一化处理, 计算特征

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值