模糊层次分析法的Matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、引言
层析分析法是将定量与定性相结合的多目标决策法,是一种使用频率很高的方法,在经济管理、城市规划等许多领域得到了广泛应用。由于其结果受主观思维的影响较大,许多科研工作者对其进行了深入的研究,将模糊理论与层次分析法相结合,提出了模糊层次分析法。为克服层次分析法中判断矩阵的一致性与人类思维的一致性存在的显著差异,文献[1-2]引入了模糊一致矩阵。为解决解的精度及收敛问题,文献[3-4]引入幂法来求排序向量。运用模糊层次分析法研究实际问题时,常采用迭代法来得到精度更高的排序向量,这就要求选择合适的初始值并通过大量的计算,为此,文中利用三种方法计算了初始排序向量,并给出了算法的Matlab程序,最后通过实例说明。
二、模糊层次分析法
为解决AHP种所存在的问题,模糊层次分析法引入模糊一致矩阵,无需再进行一致性检验,同时使用幂法来计算排序向量,可以减少迭代齿数,提高收敛速度,满足计算精度的要求.具体步骤:
1.构造优先关系矩阵
采用0.1~0.9标度[2],建立优先判断矩阵
2.将优先关系矩阵转化为模糊一致矩阵
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
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));
break
Else
End
End
四、计算实例
由优先关系矩阵得到模糊一致矩阵
利用三种方法计算排序向量分别为:
五、结束语
模糊层次分析法广泛应用于许多领域,解决了判断矩阵的一致性与人类思维一致性的差异问题,同时还得到了计算精度较高的且与实际情况较吻合的排序向量,但是模糊一致矩阵的转换和排序向量的求解计算复杂,工作量大,本文运用Matlab程序实现了该方法,能够方便的解决方法的计算问题。
参考文献:
[1]姚敏、张森,模糊一致矩阵及其在决策分析中的应用[J].系统工程理论与实践,1998,18(5):78-81.
[2]周艳美、李伟华,改进模糊层次分析法及其对任务方案的评价[J].计算机工程与应用,2008,44(5):212-214.
[3]李永、胡向红、乔箭,改进的模糊层次分析法[J].西北大学学报(自然科学版),2005,35(1):11-12,16.
[4]张吉军,模糊一致判断矩阵3种排序方法的比较研究[J].系统工程与电子技术,2003,25(13):1370-1372.
[5]徐萃薇、孙绳武,计算方法引论[M].北京:高等教育出版社,2007,185-191.
[6]武汉大学、山东大学,计算方法[M].北京:高等教育出版社,1979,99-102.