数学建模|数学建模学习笔记(清风)——层次分析法

目录
基础部分:
适用范围:
【数学建模|数学建模学习笔记(清风)——层次分析法】步骤:
局限性:
matlab相关代码:(判断矩阵转换为权重的算法)
matlab学习部分:
基础部分: 适用范围: 解决评价类、决策类问题(尤其是没有相关数据)
三个考虑因素:1、评价的目标2、可选的方案3、评价的准则
步骤: 1、建立系统的层次结构(目标层、准则层、方案层)
2、构建两两判断矩阵(准则层、方案层)进行一致性检验
3、三种方法计算权重(算数平均、几何平均、特征值法)
局限性: n不能太多,最多是15;
不能利用题目中的数据;
matlab相关代码:(判断矩阵转换为权重的算法)

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, 判断矩阵一致性不可接受'); endSumA = 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

matlab学习部分: 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); 得到各行的累乘;

    推荐阅读