层次分析法程序代码

更新时间:2024-06-14 09:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

层次分析法

1)建立层次结构模型:

决策目标 准则C1 准则C2 准则C3 准则C4 P1 P2 P3 P4 P5 P6

(2)构造判断矩阵

判断矩阵A?aij应为正互反矩阵,而且aij的判断如下(1~9尺度法):

??标度aij 1 3 5 7 9 2,4,6,8 11,...... 29(3)单层排序及一致性检验

1、单层排序

含义 C与C的影响相同 ijC比C的影响稍强 ijC比C的影响强 ijC比C的影响明显的强 ijC比C的影响绝对的强 ijC与C的影响之比在上述两个相邻的等ij级之间 C与C的影响之比为上面aijij的复反数 求解判断矩阵A的最大特征值?max,再由最大特征值求出对应的特征向量

??A???max??,并将?标准化,即为同一层相对于上一层某一因素的权重,根据此

权重的大小,便可确定该层因素的排序。 2、一致性检验

取一致性指标CI??max?nn?1,(n为A的阶数)

n RI 取随机性指标RI如下: 1 2 3 4 0 令CR?0 0.58 0.9 5 1.12 6 1.24 7 1.32 8 1.41 9 1.45 …… …… CI,若CR?0.1,则认为A具有一致性。 RI否则,需要对A进行调整,直到具有满意的一致性为止。

(4)层次总排序及一致性检验

假定准则层C1,C2,?,Cn排序完成,其权重分别为a1,a2,?,an,方案层P包含m个方案:P,2,?,n?对方案层P中的m个方案进行单1,P2,?,Pm。其相对于上一层的Cj?j?1层排序,其排序权重记为b1j,b2j,?,bmj 排序权重为

?j?1,2,?,n?,则方案层P中第i个方案Pi的总

?abj?1njij,见下表:

C1 层次C a1 层次P P1 b11 C2 ? ? ? Cn P层总排序权重 a2 b12 an b1n ?abj?1nnj1j P2 ? b21 ? b22 ? ? ? ? b2n ? ?abj?1j2j ? Pn bm1 bm2 bmn ?abj?1njmj 从而确定P层的排序。

例:

纯文本文件txt3.txt中的数据格式如下:

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 1 1/4 1/2 4 1 3 2 1/3 1 1 1/4 1/5 4 1 1/2 5 2 1 1 3 1/3 1/3 1 1/7 3 7 1 1 1/3 5 3 1 7 1/5 1/7 1 1 1 7 1 1 7 1/7 1/7 1 1 7 9 1/7 1 1 1/9 1 1 matlab程序:

>> fid=fopen('txt3.txt','r'); n1=6;n2=3; a=[];

for i=1:n1

tmp=str2num(fgetl(fid)); a=[a;tmp]; %读准则层判断矩阵 end

for i=1:n1

str1=char(['b',int2str(i),'=[];']);

str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1); for j=1:n2

tmp=str2num(fgetl(fid));

eval(str2); %读方案层的判断矩阵 end end

ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标 [x,y]=eig(a);

lamda=max(diag(y));

num=find(diag(y)==lamda); w0=x(:,num)/sum(x(:,num)); cr0=(lamda-n1)/(n1-1)/ri(n1) for i=1:n1

[x,y]=eig(eval(char(['b',int2str(i)])));

lamda=max(diag(y));

num=find(diag(y)==lamda);

w1(:,i)=x(:,num)/sum(x(:,num)); cr1(i)=(lamda-n2)/(n2-1)/ri(n2); end

cr1, ts=w1*w0, cr=cr1*w0

本文来源:https://www.bwwdw.com/article/qfu6.html

Top