AHP层次分析法——matlab

%参数设定

disp("请输入判断矩阵")
A = input("A=");
Error = 0;%报错参数
[r,c] = size(A);%判断矩阵A的行列数
RI=[0 0.00001 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];

%常见错误提醒
%防止输入矩阵错误
if r ~= c
    Error = 1;
end
%检验矩阵A是否为正互反矩阵
for i = 1:r
    for j = 1:c
        if A(i,j) <= 0 || A(i,j)*A(j,i) ~= 1
            Error = 2;
        end
    end
end
%检验矩阵一致性指标范围
if r >= 15
    Error = 3
end
%检验矩阵一致性
if Error == 0
    E = eig(A)
    max_E = max(max(E))
    CI = (max_E - r)/(r - 1)
    CR = CI/(RI(1,r))
    if CR >= 0.1
        Error = 4
    end
end
%常见错误分析
if Error == 1
    disp("输入错误,请检查输入判断矩阵")
elseif Error == 2
    disp("输入判断矩阵不为正互反矩阵")
elseif Error == 3
    disp("超出一致性检验指标范围,不建议使用层次分析法,请更改分析方法!")
elseif Error == 4
    disp("矩阵一致性不同过,需要更换判断矩阵")
else 
    Error = 5
    disp("判断矩阵符合要求")
end


%计算
if Error == 5
    %算术平均法
    sum_sh = sum(A)
    A_sum_sh = repmat(sum_sh,r,1)
    A_sum_sh_zb = A ./ (A_sum_sh)
    A_sum_sh_zb_av = (sum(A_sum_sh_zb,2))/r
    disp("矩阵的算术平均数为:")
    disp(A_sum_sh_zb_av)
    %几何平均法
    A_jh = prod(A,2)
    A_jh_kf = A_jh.^(1/r)
    A_jh_kf_av = A_jh_kf/sum(A_jh_kf)
    disp("矩阵的几何平均数为:")
    disp(A_jh_kf_av)
    %特征值平均法
    [X,Y] = eig(A)%X是特征向量矩阵,Y是特征值矩阵
    [x,y] = find(max(max(Y)))%找到Y中最大元素的位置
    A_tz_max = X(:,y)%X的第y列矩阵
    A_tz_max_zb_ch = sum(A_tz_max)
    A_tz_max_av = A_tz_max./A_tz_max_zb_ch
    disp("矩阵的最大特征值权重为:")
    disp(A_tz_max_av)
end

%总结
disp("矩阵的最大特征值权重为:")
disp(A_tz_max_av)
disp("矩阵的几何平均数为:")
disp(A_jh_kf_av)
disp("矩阵的算术平均数为:")
disp(A_sum_sh_zb_av)
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AHP层次分析法)是一种用于决策分析的方法,用于识别和解决多准则决策问题。AHP方法使用层次结构来帮助决策者对各个准则和方案进行比较和评估,最终得出一个相对重要性的排序。以下是一个简化的AHP方法在MATLAB中的代码示例: % 输入准则和方案的权重矩阵 criteria_weights = [1, 2, 3]; options_weights = [4, 5, 6; 7, 8, 9; 10, 11, 12]; % 计算准则权重的正则化矩阵 criteria_normalized_weights = criteria_weights / sum(criteria_weights); % 计算权重矩阵的行向量合计 options_row_sums = sum(options_weights, 2); % 计算归一化的权重矩阵 options_normalized_weights = options_weights ./ options_row_sums; % 计算准则权重与方案权重的乘积 weighted_matrix = repmat(criteria_normalized_weights, size(options_normalized_weights, 1), 1) .* options_normalized_weights; % 计算方案的总权重 options_total_weight = sum(weighted_matrix, 2); % 打印结果 disp("准则权重:"); disp(criteria_normalized_weights); disp("方案权重:"); disp(options_total_weight); 这段代码首先定义了准则和方案的权重矩阵,然后计算了准则权重的正则化矩阵以及权重矩阵的行向量合计。接下来,代码通过除以行向量合计来计算权重矩阵的归一化矩阵。然后,将准则权重与方案权重的乘积计算为加权矩阵。最后,代码计算了方案的总权重,并将结果打印出来。 需要注意的是,这只是一个简化版的AHP方法的MATLAB代码示例,实际应用中可能涉及更复杂的计算和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值