求用MATLAB编写的层次分析法程序

求用MATLAB编写的层次分析法程序,第1张

%层次分析法的matlab程序

1、disp('请输入判断矩阵A(n阶)')

A=input('A=')

[n,n]=size(A)

x=ones(n,100)

y=ones(n,100)

m=zeros(1,100)

m(1)=max(x(:,1))

y(:,1)=x(:,1)

x(:,2)=A*y(:,1)

m(2)=max(x(:,2))

y(:,2)=x(:,2)/m(2)

p=0.0001i=2k=abs(m(2)-m(1))

while k>p

i=i+1

x(:,i)=A*y(:,i-1)

m(i)=max(x(:,i))

y(:,i)=x(:,i)/m(i)

k=abs(m(i)-m(i-1))

disp('权向量')disp(w)

disp('最大特征值')disp(t)

2、y(:,i)=x(:,i)/m(i)

k=abs(m(i)-m(i-1))

end

a=sum(y(:,i))

w=y(:,i)/a

t=m(i)

disp('权向量')disp(w)

disp('最大特征值')disp(t)

%以下是一致性检验

扩展资料:

Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

参考资料来源:百度百科-MATLAB

预备知识点

层次分析法AHP(Analytic Hierarchy Process)根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同的层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。

将评价问题分为三个层次,目标层、准则层和方案层。通过判断矩阵得到准则层的各评价因素的比重,同理得到方案层的每个方案的各评价因素的比重。评价比重和方案比重相乘后得到每个方案的评分。

运用层次分析法构造系统模型时,大体可以分为以下四个步骤:

1.建立层次结构模型;

2.构造判断(成对比较)矩阵;

3.层次单排序及其一致性检验;

4.层次总排序及其一致性检验;

最高层(目标层):决策的目的、要解决的问题;

中间层(准则层或指标层):考虑的因素、决策的准则;

最低层(方案层):决策时的备选方案;

构造判断(成对比较)矩阵时,为了避免直接确定各层次元素之间的比重,采用一致矩阵法,即两两对比确定相对重要性。

得到最终判断矩阵如下:

计算分为三种方法:算数平均数法、几何平均数法和特征值法(常用)

计算得到的特征向量可以作为判断矩阵的权重向量。一致矩阵的特征向量就是任意列向量,简化后的一致性较好的判断矩阵的特征向量求法是可以取列向量的算数平均。

根据最大特征值求出特征向量

计算得到矩阵的特征值和特征向量,通过特征值计算一致性指标

当矩阵为一致矩阵时,特征值n最小,矩阵越不一致,最大特征值与n相差越大,通过差值判断一致程度。

为了衡量CI的大小,引入随机一致性指标RI

随机一致性指标可以通过查表获取,也可以通过matlab进行计算

最终得到

为什么要构造CI以及为什么要以0.1为划分依据?这是作者通过多次蒙特卡洛模拟得到的最佳的方案。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11070470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存