matlab,迭代法计算层次分析法代码

该代码实现了一种基于Matlab的模糊AHP(Analytic Hierarchy Process)算法,用于计算特征值和权向量,并进行一致性检验。通过迭代计算法,对输入的判断矩阵A和初始权重向量w0进行处理,当达到预设精度a时停止迭代。最终输出归一化的权值向量W,特征值K,以及一致性指标CI和随机一致性指标RI的比值CR。如果CR小于0.1,则认为满足一致性要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理及方法
一致性指标原理
在这里插入图片描述
matlab代码
公式代码

%计算特征值和特征向量,并进行一致性检验
%计算方法原理参看“模糊数据及其应用”这本书
function [W,CR,ouput] = AHP(A,w0,a)
%A表示输入的判断举证,W0为任取向量正规Fuzzy向量(输入为行向量),a为事先给定的精度
%输出为归一化的权值向量W和对应的特征值K
W1(:,1)=w0';     %将得到原始向量转存在W1矩阵中,迭代算出的权向量全部存在W1矩阵中;
k(1)=0;          %将每个权向量对应的特征值存在k数组中
k(2)=max(A*W1(:,1));        
W1(:,2)=A*W1(:,1)./max(A*W1(:,1));      %第一次迭代公式
b=max(abs(W1(:,2)-W1(:,1)));
i=2;
while b>a
    k(i+1)=max(A*W1(:,i));
    W1(:,i+1)=A*W1(:,i)./max(A*W1(:,i));        %迭代公式
    b=max(abs(W1(:,i+1)-W1(:,i)));
    i=i+1;
end
%W1矩阵中最后一列为最终的结果,对最后一列进行归一化处理
W=W1(:,size(W1,2))./sum(W1(:,size(W1,2)));
K=k(length(k));
%判断是否归一化
%计算一致性指标CI
CI=(K-size(A,1))/(size(A,1)-1);
%计算随机一致性指标RI,RI取值表
RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59 1.5943 1.6064 ...
    1.6133 1.6207 1.6292 1.6385 1.6403 1.6462 1.6497 1.6556 1.6587 1.6631 1.667 1.6693 1.6724];
%计算一致性指标CR
CR=CI/RI(size(A,1));
if CR<0.1
    ouput='满足一致性要求';
else
    output='不满足一致性要求';
end

调用代码

%计算方法参看模糊数据及其应用这本书
%方法一:迭代计算法
clc;clear;
A=[1 1/2 4 3 3;2 1 7 5 5;1/4 1/7 1 1/2 1/2;1/3 1/5 2 1 1;1/3 1/5 3 1 1];
w0=[0 1 0 0 0];
a=0.00001;
[W,CR,ouput] = AHP(A,w0,a)

输出结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值