发布时间:2023-12-22 09:30
目录
基础部分:
适用范围:
步骤:
局限性:
matlab相关代码:(判断矩阵转换为权重的算法)
matlab学习部分:
解决评价类、决策类问题(尤其是没有相关数据)
三个考虑因素:1、评价的目标2、可选的方案3、评价的准则
1、建立系统的层次结构(目标层、准则层、方案层)
2、构建两两判断矩阵(准则层、方案层)进行一致性检验
3、三种方法计算权重(算数平均、几何平均、特征值法)
n不能太多,最多是15;
不能利用题目中的数据;
A = [];
[n,n] = size(A);
if n>15
disp('n>15,该矩阵规模超出限度!')
else
[EVe, EVa] = eig(A);
MaxEVa=max(max(EVa)); %矩阵的特征向量:Eve(matrix eigenvectors) 特征值:EVa(eigenvalues) 最大特征值:MaxEVa
CI = (MaxEVa - 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);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.1
disp('CR < 0.10, 判断矩阵一致性可接受');
else
disp('CR > 0.10, 判断矩阵一致性不可接受');
end
SumA = sum(A);
SUMA = repmat(SumA,n,1);
StandA = A ./ SUMA;
sum(StandA,2);
disp('算术平均法求权重的结果为:');
disp(sum(StandA,2) / n);
PrductA = prod(A,2);
PrductnA = PrductA .^ (1/n);
disp('几何平均法求权重的结果为:');
disp(PrductnA ./ sum(PrductnA));
[r,c] = find(EVa == MaxEVa , 1);
EVe(:,c);
disp('特征值法求权重的结果为:');
disp( EVe(:,c) ./ sum(EVe(:,c)) );
end
disp函数的用法:disp('想要展示的内容'); (这里的分号不表示隐藏结果,只表示分隔)
size函数的用法:[row,column] = size(一个矩阵名); 得到两个参数,分别是行数和列数
eig函数的用法:[Vector, Value] = eig(一个矩阵名); 两个参数分别是特征向量和特征值
sum函数的用法:sum(一个矩阵); 得到矩阵按列求和,如果是列或行向量,求得各数之和
find函数的用法:[row, column] = find(一个矩阵); 得到的是最大特征值的行和列
max函数的用法:
得到的是每一列最大的一个数,相当于n维坐标系中离原点最远的点(每一列相当于一个维度)
repmat函数的用法:repmat(一个矩阵, m, n); 扩展到m行n列;
prod函数的用法:Prduct = prod(A, 2); 得到各行的累乘;