用Matlab实现AHP的算法
1.MATLAB的基本内容 MATLAB(MATrix LABoratory,矩阵实验室的缩写)是一种特殊用途的计算机程序优化执行工程和科学计算。它开始为旨在执行矩阵数学程式的生活,但多年来它已发展成为一个灵活的计算系统基本上能够解决任何技术问题。MATLAB具有编程语言的基本特征,使用MATLAB也可以使用像BASIC、FORTRAN、C等传统编程语言一样,进行程序设计,而且简单易学、编程效率高。 正因为MATLAB的强大的功能,使得它在许多领域得到广泛应用。在科研与工程应用领域,MATLAB已被广泛地用于科学研究和解决各种具体的实际问题。许多科技工作者选用MATLAB做为计算工具,避免了繁琐的底层编程,从而可以把主要精力和时间花在科学研究和解决实际问题是上,提高了工作效率。 1.1 MATLAB矩阵 矩阵是MATLAB的基本处理对象,因此根据本文所需,简单介绍所涉及MATLAB矩阵内容。 1.1.1 MATLAB矩阵的建立 1、直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。例如: A=[1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 也可以用回车键代替分号,按下列方式输入: A=[1 2 3 4 5 6 7 8 9 ] 2、利用M文件建立矩阵 比较大且复杂的矩阵,可以为它专门建立一个M文件,如同下例。 利用M文件建立矩阵。 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵: MYMAT=[ 111 ,112,113,114,115,116,117,118,119; 211,212,213,214,215,216,217,218,219]; 把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。 在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。 1.1.2 矩阵的特征值与特征向量 特征值和特征向量在科学研究和工程计算中都有非常广泛地应用。在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种[14]: E = eig( A ) :求矩阵A的全部特征值,构成向量E。 [V,D]=eig(A):求矩阵A的全部特征值,构成对角矩阵D,并求A得特征向量构成V的列向量。 [V,D]=eig(A,’nobablance’):与第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。 例如: A=[1,1,0.5;1,1,0.25;0.5,0.25,2]; [V,D]=eig(A) V = 0.7212 0.4443 0.5315 -0.6863 0.5621 0.4615 -0.0937 -0.6976 0.7103 D = -0.0166 0 0 0 1.4801 0 0 0 2.5365 求得的3个特征值是-0.0166、1.4801和2.5365,各特征值对应的特征向量为V的各列构成的向量。 1.2 MATLAB的M文件 用MATLAB语言编写的程序称为M文件。M文件是由若干MATLAB命令组成在一起构成的,它可以完成某些操作,也可以实现某种算法。 M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。它们的扩展名均为.m。 函数文件由function语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 我们通过举例说明如下: 例2-2 分别建立命令文件和函数文件,将求矩阵的一致性指标CI:CI=(λmax-n)/(n-1) 程序1 建立命令文件并以文件名CI.m存盘: max=( please max: ); n=( please n: ); CI=(max-n)/(n-1) 然后在MATLAB的命令窗口中输入CI即可。 程序 2 建立函数文件CI.m。 function c=CI(max,n) c=(max-n)/(n-1) 然后在MATLAB的命令窗口调用该函数文件。 max=( please max: ); n=( please n: ); c=CI(max,n) 2.基于MATLAB的AHP实现 2.1 AHP的MATLAB的计算流程框图 根据层次分析法的一般步骤我们得到在MATLAB工具上实现的计算程序流程框图,如图2所示[16] 输 入 准 则 层 层 数 输 入 准 则 层 对 目 标 层 判 断 矩 阵 元 素 判 断 矩 阵 归 一 化 计 算 C R < 0 . 1 输 入 准 则 层 第 j 个 准 则 包 含 的 方 案 数 量 n 判 断 矩 阵 归 一 化 计 算 输 入 方 案 层 第 j 个 准 则 层 的 判 断 矩 阵 元 素 b i j C R < 0 . 1 另 m = 1 ; n = 1 输 入 方 案 层 第 m 个 准 则 层 的 相 关 矩 阵 元 素 计 算 权 值 矩 阵 权 值 的 计 算 总 C R 计 算 开 始 结 束 C R 0 (2) ·= l (3) =l 按照事物逻辑要求,该矩阵还应具备一致性,即满足: ·= 前面已经给出由于客观事物的复杂性与决策者的认识的多样性,实际问题的成对比较矩阵不可能做到严格上的一致性,因而,借助平均随机一致性指标RI来相对判定其一致性程