用Maab实现AHP的算法_第1页
用Maab实现AHP的算法_第2页
用Maab实现AHP的算法_第3页
用Maab实现AHP的算法_第4页
用Maab实现AHP的算法_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1MATLAB的基本内容MATLAB(MATrixLABoratory,矩阵实验室的缩写)是一种特别用途的计算机程序优化履行工程和科学计算。它开始为旨在履行矩阵数学程式的生活,但多年来它已发展成为一个灵巧的计算系统基本上能够解决任何技术问题。MATLAB拥有编程语言的基本特点,使用MATLAB也能够使用像BASIC、FORTRAN、C等传统编程语言同样,进行程序设计,并且简单易学、编程效率高。正因为MATLAB的强盛的功能,使得它在很多领域获得宽泛应用。在科研与工程应用领域,MATLAB已被宽泛地用于科学研究和解决各样详细的实质问题。很多科技工作者采纳MATLAB做为计算工具,防止了繁琐的基层

2、编程,进而能够把主要精力和时间花在科学研究和解决实质问题是上,提升了工作效率。MATLAB矩阵矩阵是MATLAB的基本办理对象,所以依据本文所需,简单介绍所波及MATLAB矩阵内容。MATLAB矩阵的成立1、直接输入法最简单的成立矩阵的方法是从键盘直接输入矩阵的元素。比如:A=123;456;789A=123456789也能够用回车键取代分号,按以下方式输入:A=1234567892、利用M文件成立矩阵比较大且复杂的矩阵,能够为它特意成立一个M文件,好像下例。利用M文件成立矩阵。启动有关编写程序或MATLAB文本编写器,并输入待建矩阵:MYMAT=111,112,113,114,115,116

3、,117,118,119;211,212,213,214,215,216,217,218,219;把输入的内容以纯文本方式存盘(设文件名为)。在MATLAB命令窗口中输入mymatrix,即运转该M文件,就会自动成立一个名为MYMAT的矩阵,可供此后使用。矩阵的特点值与特点向量特点值和特点向量在科学研究和工程计算中都有特别宽泛地应用。在MATLAB14E=eig(A):求矩阵A的所有特点值,构成向量E。V,D=eig(A):求矩阵A的所有特点值,构成对角矩阵D,并求A得特点向量构成V的列向量。V,D=eig(A,nobablance):与第2种格式中先对A作相像变换后求矩阵A的特点值和特点向量

4、,而格式3直接求矩阵A的特点值和特点向量。比如:A=1,1,;1,1,;,2;V,D=eig(A)=D=000000求得的3个特点值是、和,各特点值对应的特点向量为V的各列构成的向量。MATLAB的M文件用MATLAB语言编写的程序称为M文件。M文件是由若干MATLAB命令构成在一同构成的,它能够达成某些操作,也能够实现某种算法。M文件能够依据调用方式的不一样分为两类:命令文件(ScriptFile)和函数文件FunctionFile)。它们的扩展名均为.m。函数文件由function语句指引,其基本结构为:function输出形参表=函数名(输入形参表)说明说明部分函数体语句我们经过举例说明

5、以下:例2-2分别成立命令文件和函数文件,将求矩阵的一致性指标CI:CI=(max-n)/(n-1)程序1成立命令文件并以文件名存盘:max=input(pleaseinputmax:);n=input(pleaseinputn:);CI=(max-n)/(n-1)而后在MATLAB的命令窗口中输入CI即可。程序2成立函数文件。functionc=CI(max,n)c=(max-n)/(n-1)而后在MATLAB的命令窗口调用该函数文件。max=input(pleaseinputmax:);n=input(pleaseinputn:);c=CI(max,n)2鉴于MATLAB的AHP实现21A

6、HP的MATLAB的计算流程框图依据层次剖析法的一般步骤我们获得在MATLAB工具上实现的计算程序流程框16图,如图2所示开始输入准则层层数输入准则层对目标层判断矩阵元素判断矩阵归一化计算CR0.1输入准则层第j个准则包括的方案数目n输入方案层第j个准则层的判断矩阵元素bij判断矩阵归一化计算CR0.1结束CR0(2)aijaji=l(3)aii=l依据事物逻辑要求,该矩阵还应具备一致性,即知足:aijajk=aik前面已经给出因为客观事物的复杂性与决议者的认识的多样性,实质问题的成对照较矩阵不行能做到严格上的一致性,因此,借助均匀随机一致性指标RI来相对判断其一致性程度。此中表1-4是已经计

7、算好的115阶矩阵的RI值表,但未给出其实现过程,且各文件的RI值表不完整同样。究其原由除没有太大必需介绍外,真实去实现它却有以下三个难度:随机两两判断矩阵中的元素要求是19和它们对应的倒数共17个整数与小数的均匀散布很难办理。一般高级编程语言实现成对照较矩阵及有关计算,特别复杂,且占用内存巨大,耗时多。随机种子源不可以控制。本文使用数学软件包MATLAB对其进行计算。其设计解决思路为:先用软件包中随机函数产生数117的均匀散布的n阶矩阵,而后在软件包中采纳不一样技巧将它转变为成对照较矩阵,最后用循环语句计算出RI值。结果以下表:表3-1计算的RI值阶数123456789RI00以n=4为例,

8、过程详见以下程序清单,此中随机成对照较矩阵的实现见相应说明部分。15MATLAB的程序M文件:functionri%计算RI值的命令文件n=4;ri=0;m=100;rand(seed,21)%控制随机发生器fori=1:ma=ceil(17*rand(n);%产生n阶l17的随机阵a(find(a=8)=;%除去0为分母b=1./(a-8);%产生一个协助阵a(find(a9)=b(find(a9);%借助b,将917分别转变为11a(find(a=)=8;29e=eye(n);%产生一个4阶单位阵c=1./a;c=c;c=tril(c,-1);%将a中每个元素换成相应倒数将c转置抽取c的下

9、三角(不含主对角线)a=triu(a,1);%a=a+c+e;%k=size(a,1);ri=ri+(max(abs(eig(a)-k)/(k-1);endri/m%抽取a的上三角(不含主对角线)实现随机成对照较阵a计算a的行维数计算100次RI值计算均匀RI值23AHP各环节的MATLAB实现135135以目标矩阵A=1313,准则层矩阵为P1=12,P2=1313,1513112113115P3=12为例,运用MATLAB进行数据办理。121特点向量及其归一化的MATLAB实现MATLAB中求矩阵特点值和特点向量的函数是eig,其调用的格式为V,D=eig(A),此中,V为特点向量矩阵,D

10、为特点值矩阵。层次剖析法中需要求得是最大特点值及对应的归一化特点向量,并且考虑到eig函数在求得的特点值中可能会存在复数。所以,运用直接输入程序代码会产生必定的偏差。在此需要对求得的V、D进行适入选择,定义一个M-file来实现。functionmaxeigval,w=maxeigvalvec(A)%求最大特点值及对应的归一化特点向量%A为判断矩阵eigvec,eigval=eig(A);eigval=diag(eigval);%特点向量eigvalmag=imag(eigval);realind=find(eigvalmag=disp(input(矩阵没经过一致性查验,请从头调整判断矩阵)e

11、lsedisp(input(矩阵经过一致性查验);end在MATLAB中键入以下指令:RIA,CIA=sglsortexamine(max(1),A);RIP1,CIP1=sglsortexamine(max(2),P1);RIP2,CIP2=sglsortexamine(max(3),P2);RIP3,CIP3=sglsortexamine(max(4),P3);运转结果以下:矩阵经过一致性查验矩阵经过一致性查验矩阵经过一致性查验矩阵经过一致性查验一致性查验及总排序的MATLAB实现经过层次单排序(权重)计算后,进行层次合成计算,在此本订婚义函数计算层次总排序的权重并进行一致性查验。func

12、tiontw=tolsortvec(utw,dw,CIC,RIC)求层次总排序权重并进行一致性查验utw为上一层要素的总排序权重行向量dw为下一层要素有关于上一层各要素的层次单排序权重矩阵CIC为一致性指标列向量RIC为随机一致性指标列向量tw=dw*utwCR=utw*CIC/(utw*RIC);ifCR=disp(input(层次总排序没经过一致性查验,请从头调整判断矩阵);elsedisp(input(层次总排序经过一致性查验);end在MATLAB中输入以下指令:dw=zeros(7,3);dw=(1:2,1)=wP1;dw=(3:5,2)=Wp2;dw=(6:7,3)=wP3;CIC

13、=CIP1;CIP2;CIP3;RIC=RIP1;RIP2;RIP3;tw=tolsortvec(wA,dw,CIC,RIC);运转结果以下:tw=层次总排序经过一致性查验此中tw是层次总排序结果。所以,依据数据成立以下的层次总排序表。表3-3层次总排序表(权重)AA层次P的P注总排序结果P10000P2000000P00300注:按概率乘法,P层次总排序指标的权重值为NP层次指标的权重与相应上一层次指标AN层权重的积,且总排序权重值的和为1。选择最优排序计算出层次总排序后,为了使决议者能快速得出结果,本文对层次总排序进行最优排序。运用MATLAB键入以下指令:n=length(tw);for

14、i=1:nt=max(tw);b(i)=t;mn=find(a=t);tw(n)=;endb运转结果以下:b=利用MATLAB大大缩短了计算复杂矩阵的时间,为决议者节俭了可贵的时间,进而有更多的精力投入其余事务。3鉴于MATLAB的AHP应用31精选适合工作问题某毕业生选择工作,经两方恳谈,假定已有三个单位C1,C2,C3表示愿意录取他。该生对三个单位进行认识后,选用了一些中间指标进行观察,比如单位的研究课题,发展前程,待遇,同事状况,地理地点,单位名气等。依据层次剖析法,试求该生工作优先排序(给出权值、计算程序),并给出最后选择决议。现以A、B、C表示选择工作的三个层次,成立以下结构模型:图

15、3选择单位层次结构图依据成对照较法,获得相应判断矩阵以下表:表4-1A-B判断矩阵B1B2B3B4B5B6B1111411/2B112411/22B311/21531/2B41/41/41/511/31/3B5111/3311B6222331表4-2B1C判断矩阵11/41/241321/31表4-3B2C判断矩阵C1C2C3C11/41/51C2411/2C5213表4-4B3C判断矩阵C1C2C31131/3CC21/311/7C3713表4-5B4C判断矩阵C1C2C3C11/351C2317C31/51/71表4-6BC判断矩阵5CCC123C11172117CC31/71/71表4-

16、7BC判断矩阵6C1C2C3C1179C21/71131/911C此刻在MATLAB中分别用直接输入程序法和M文件方法求解。1)、直接输入代码法:在MATLAB中输入以下程序:A=1,1,1,4,1,1/2;1,1,2,4,1,1/2;1,1/2,1,5,3,1/2;1/4,1/4,1/5,1,1/3,1/3;1,1,1/3,3,1,1;2,2,2,3,3,1;B1=1,1/4,1/2;4,1,3;2,1/3,1;B2=1,1/4,1/5;4,1,1/2;5,2,1;B3=1,3,1/3;1/3,1,1/7;3,7,1;B4=1,1/3,5;3,1,7;1/5,1/7,1;B5=1,1,7;1

17、,1,7;1/7,1/7,1;B6=1,7,9;1/7,1,1;1/9,1,1;BS=B1,B2,B3,B4,B5,B6;m=length(B1);n=length(A);%随机一致性指标RIRI=0,0,;Wa,LA=eig(A)%求A的特点向量WA和特点根LAMaxn=input(pleaseinputlargesteigenvalue:);%输入最大特点根CIn=(Maxn-n)/(n-1);CRn=CIn/RI(n);%A的一致性比率CRnWA=Wa(:,1)/sum(Wa(:,1);%特点向量归一化ifCRnfprintf(A的CR%f经过一致性查验!n,CRn);%控制文本格式el

18、sefprintf(A的CR%f未经过一致性查验!n,CRn);endfork=1:n%求B的特点向量WK和特点根LKWB,LK=eig(BS(1:3,(k-1)*m+1:(k-1)*m+3)Max(k)=input(pleaseinputlargesteigenvalue:);CIm(k)=(Max(k)-m)/(m-1);RIm(k)=RI(m);CRm(k)=CIm(k)/RIm(k);WK(:,k)=WB(:,1)/sum(WB(:,1);%B的一致性比率CRmendfork=1:nifCRm(k)fprintf(B%d的CR%f经过一致性检验!n,k,CRm(1,k);%控制文本格式

19、elsefprintf(B%d的CR%f未经过一致性查验!n,k,CRm(1,k);endenddisp(准则层对目标层权向量);disp(WA);disp(方案层瞄准则层权向量);disp(WK);E=WK*WAdisp(方案层组合权向量);disp(E);CI=CIm*WA;RI=RIm*WA;CR=CI/RI;%组合一致性比率CRifCRfprintf(组合一致性比率CR%f经过一致性查验!n,CRn);elsefprintf(组合一致性比率CR%f未经过一致性查验!n,CRn);endMAX,CHOICE=max(E);%最正确选择CHOICEMATLAB运转结果以下:Wa=-+-+-

20、+-+-+-+LA=000000+000000-000000000000+000000-pleaseinputlargesteigenvalue:A的CR经过一致性查验!WB=-+LK=000+000-pleaseinputlargesteigenvalue:WB=-+LK=000+000-pleaseinputlargesteigenvalue:WB=-+LK=000+000-pleaseinputlargesteigenvalue:WB=-+LK=000+000-pleaseinputlargesteigenvalue:WB=LK=000000pleaseinputlargesteigen

21、value:WB=+-LK=000+000-pleaseinputlargesteigenvalue:B1的CR经过一致性查验!B2的CR经过一致性查验!B3的CR经过一致性查验!B4的CR经过一致性查验!B5的CR经过一致性查验!B6的CR经过一致性查验!准则层对目标层权向量方案层瞄准则层权向量E=方案层组合权向量组合一致性比率CR经过一致性查验!CHOICE=12)、M文件法:依据第三章节的层次剖析法各环节的MATLAB实现定义以下三个函数:(1)定义来实现最大特点根及对应的归一化特点向量。functionmaxeigval,w=maxeigvalvec(A)%求最大特点值及对应的归一化特

22、点向量%A为判断矩阵eigvec,eigval=eig(A);eigval=diag(eigval);%特点向量eigvalmag=imag(eigval);realind=find(eigvalmag=disp(input(矩阵没经过一致性查验,请从头调整判断矩阵)elsedisp(input(矩阵经过一致性查验);end(3)定义函数计算层次总排序的权重并进行一致性查验。functiontw=tolsortvec(utw,dw,CIC,RIC)求层次总排序权重并进行一致性查验utw为上一层要素的总排序权重行向量dw为下一层要素有关于上一层各要素的层次单排序权重矩阵CIC为一致性指标列向量R

23、IC为随机一致性指标列向量tw=dw*utw;CR=utw*CIC/(utw*RIC);ifCR=disp(input(层次总排序没经过一致性查验,请从头调整判断矩阵);elsedisp(input(层次总排序经过一致性查验);end%主程序clear;A=1,1,1,4,1,1/2;1,1,2,4,1,1/2;1,1/2,1,5,3,1/2;1/4,1/4,1/5,1,1/3,1/3;1,1,1/3,3,1,1;2,2,2,3,3,1;B1=1,1/4,1/2;4,1,3;2,1/3,1;B2=1,1/4,1/5;4,1,1/2;5,2,1;B3=1,3,1/3;1/3,1,1/7;3,7,

24、1;B4=1,1/3,5;3,1,7;1/5,1/7,1;B5=1,1,7;1,1,7;1/7,1/7,1;B6=1,7,9;1/7,1,1;1/9,1,1;max(1),wA=maxeigvalvec(A);max(2),wB1=maxeigvalvec(B1);max(3),wB2=maxeigvalvec(B2);max(4),wB4=maxeigvalvec(B4);max(5),wB3=maxeigvalvec(B3);max(6),wB5=maxeigvalvec(B5);max(7),wB6=maxeigvalvec(B6);RIA,CIA=sglsortexamine(max(1),A);RIB1,CIB1=sglsortexamine(max(2),B1);RIB2,CIB2=sglsortexamine(max(3),B2);RIB3,CIB3=sglsortexamine(max(4),B3);RIB4,CIB4=sglsortexamine(max(5),B4);RIB5,CIB5=sglsortexamine(max(6),B5);RIB6,CIB6=sglsortexa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论