层次分析法matlab求权重
时间: 2023-07-20 18:44:34 浏览: 56
使用Matlab求解层次分析法的权重可以参考以下步骤:
1. 构建层次结构模型,确定准则层、因素层、方案层。
2. 构建判断矩阵,将两两比较得出的判断转化为矩阵形式。
3. 计算一致性指标CR,判断矩阵是否具有一致性。如果CR值小于0.1,则认为判断矩阵具有一致性,可以进行下一步计算。否则需要重新调整比较矩阵。
4. 计算权重向量,通过判断矩阵的特征向量和对应的最大特征值来计算权重向量。
以下是一个示例代码,供参考:
```matlab
% 构建判断矩阵
A = [1 2 3; 1/2 1 2; 1/3 1/2 1];
% 计算一致性指标CR
[n, ~] = size(A);
RI = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49];
[~, lambda] = eig(A);
lambda = diag(lambda);
max_lambda = max(lambda);
CI = (max_lambda - n) / (n - 1);
CR = CI / RI(n);
% 计算权重向量
[V, D] = eig(A);
eig_value = diag(D);
[~, max_idx] = max(eig_value);
weight_vector = V(:, max_idx) / sum(V(:, max_idx));
```
其中,判断矩阵A为一个3*3的矩阵,一致性指标CR的计算采用常用的随机一致性指标RI,权重向量的计算采用特征向量法。
相关问题
matlab层次分析法求权重
关于使用MATLAB进行层次分析法求取权重的问题,有以下两种方法可以使用:
方法一:算术平均法
根据算术平均法,可以通过以下步骤计算得到权重:
1. 将判断矩阵中每一列的元素除以该列元素之和,得到一个新的矩阵。
2. 对新矩阵的每一行进行求和,并将结果除以矩阵的行数,得到一个权重向量。
方法二:层次分析法
层次分析法需要通过编写MATLAB函数来计算权重。下面是一段示例代码,可以用于计算判断矩阵的权重:
function [w,CR] = cengci(A)
[~, n] = size(A);
x = ones(n,100);
y = ones(n,100);
m = zeros(1,100);
m(1) = max(x(:,1));
y(:,1) = x(:,1);
x(:,2) = A*y(:,1);
m(2) = max(x(:,2));
y(:,2) = x(:,2)/m(2);
p = 0.0001;
i = 2;
k = abs(m(2)-m(1));
while k>p
i = i + 1;
x(:,i) = A*y(:,i-1);
m(i) = max(x(:,i));
y(:,i) = x(:,i)/m(i);
k = abs(m(i)-m(i-1));
end
a = sum(y(:,i));
w = y(:,i)/a;
t = m(i);
CI = (t-n)/(n-1);
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];
CR = CI/RI(n);
if CR >= 0.1
disp('CR=');
disp(CR);
disp('一致性检验不通过,继续修改判断矩阵');
else
disp('CR=');
disp(CR);
disp('判断矩阵的一致性可以接受');
disp(w);
end
你可以根据自己的判断矩阵A调用以上函数进行权重计算。
matlab层次分析法计算权重
层次分析法(Analytic Hierarchy Process,AHP)是一种多准则决策方法,可以用于计算权重。在MATLAB中,可以通过编写相应的函数来实现层次分析法计算权重。
首先,需要定义一个计算权重的函数。这个函数可以根据判断矩阵A来计算权重w。函数的名称可以是"cengci"。
在这个函数中,首先定义变量x和y,它们分别表示计算过程中的中间变量。然后,定义变量m来存储每一次计算得到的最大特征值。接下来,通过迭代计算的方式,不断更新x和y,并计算出每一次的最大特征值m。最后,将每一次计算得到的y进行归一化处理,并计算出最终的权重w。
在计算过程中,还需要进行一致性检验。计算一致性指标CI,然后与预先定义好的一致性随机指标RI进行比较,从而判断判断矩阵的一致性是否可以接受。
如果一致性检验通过,即CR小于0.1,那么就可以得到权重w,并输出结果。否则,需要继续修改判断矩阵,直到一致性检验通过为止。
这样,就可以通过调用函数"cengci"来计算判断矩阵的权重。