龙源期刊网 http://www.qikan.com.cn
模糊层次分析法的Matlab实现
作者:黎延海
来源:《硅谷》2009年第17期
[摘要]讨论运用模糊层次法解决实际问题的过程,并运用迭代法求解精度更高的排序向量。为简化求解过程,给出模糊层次分析法的Matlab程序,最后通过实例说明程序的应用和效果。 [关键词]模糊层次分析 幂法 Matlab
中图分类号:TP-9文献标识码:A文章编号:1671-7597(2009)0910002-01 一、引言
层析分析法是将定量与定性相结合的多目标决策法,是一种使用频率很高的方法,在经济管理、城市规划等许多领域得到了广泛应用。由于其结果受主观思维的影响较大,许多科研工作者对其进行了深入的研究,将模糊理论与层次分析法相结合,提出了模糊层次分析法。为克服层次分析法中判断矩阵的一致性与人类思维的一致性存在的显著差异,文献[1-2]引入了模糊一致矩阵。为解决解的精度及收敛问题,文献[3-4]引入幂法来求排序向量。运用模糊层次分析法研究实际问题时,常采用迭代法来得到精度更高的排序向量,这就要求选择合适的初始值并通过大量的计算,为此,文中利用三种方法计算了初始排序向量,并给出了算法的Matlab程序,最后通过实例说明。
二、模糊层次分析法
为解决AHP种所存在的问题,模糊层次分析法引入模糊一致矩阵,无需再进行一致性检验,同时使用幂法来计算排序向量,可以减少迭代齿数,提高收敛速度,满足计算精度的要求.具体步骤: 1.构造优先关系矩阵
采用0.1~0.9标度[2],建立优先判断矩阵 2.将优先关系矩阵转化为模糊一致矩阵
龙源期刊网 http://www.qikan.com.cn
3.计算排序向量 (1)和行归一法: (2)方根法: (3)利用排序法:
(4)利用幂法[5-6]求精度更高的排序向量: 否则,继续迭代。
三、模糊层次分析法的程序实现
给出模糊层次分析法的Matlab程序。 clear; clc;
E=input('输入计算精度e:')
Max=input('输入最大迭代次数Max:') F=input('输入优先关系矩阵F:'); %计算模糊一致矩阵 N=size(F); r=sum(F'); for i=1:N(1) for j=1:N(2)
R(i,j)=(r(i)-r(j))/(2*N(1))+0.5; end
龙源期刊网 http://www.qikan.com.cn
end E=R./R';
% 计算初始向量 ----------
% W=sum(R')./sum(sum(R)); % 和行归一法 %--------------------------------------------------------- for i=1:N(1) S(i)=R(i,1); for j=2:N(2) S(i)=S(i)*R(i,j); end end
S=S^(1/N(1));
W = S./sum(S);%方根法 %-------------------------------------------------------- % a=input('参数a=?');
%W=sum(R')/(N(1)*a)-1/(2*a)+1/N(1); %排序法
% 利用幂法计算排序向量----V(:,1)=W'/max(abs(W)); %归一化 for i=1:Max V(:,i+1)=E*V(:,i);
V(:,i+1)=V(:,i+1)/max(abs(V(:,i+1))); if max(abs(V(:,i+1)-V(:,i))) k=i;
A=V(:,i+1)./sum(V(:,i+1));