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

目录

基础部分:

适用范围:

步骤:

局限性:

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

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);  得到各行的累乘;

你可能感兴趣的:(数学建模,matlab,数学建模)