层次分析法MATLAB程序

作为一个数学人,对于层次分析法,我的评价同下:

这里写图片描述

其主观作用太强,例如,那个矩阵的由来就无根据,仅仅是由若干尺度表主观推出来的,并不是真正定量的严谨的计算推理,类似的还有模糊评价里的专家评定,虽无力吐槽,作为一个知识,还是贴一段代码。

clear
clc
a=[1 3 5;1/3 1 3;1/5 1/3 1];
b1=[1 1/3;3 1];
b2=[1 5;1/5 1];
b3=[1 3;1/3 1];
c1=[1 3;1/3 1]; 
c2=[1 1/3;3 1];
c3=[1 1/5;5 1];
c4=[1 7;1/7 1]; 
c5=[1 1/7;7 1]; 
c6=[1 1/3;3 1];
b=max(eig(a));%b为a矩阵的最大特征值
d=[];
for i=1:(length(a))
c=prod(a(i,:))^(1/length(a));%计算每一行的几何平均值
d(i)=c;
end
for i=1:length(a)
    e=d(i)/sum(d);
    w(i)=e;
end
%w为几何平均值的权重比
CI=(b-length(a))/(length(a)-1);
RI=[0 0 0.58 0.96 1.12 1.24 1.32 1.41 1.45];
CR=CI/RI(length(a))
B=[b1 b2 b3 c1 c2 c3 c4 c5 c6];
d=[];
ss=[];
for j=1:9
f=B(:,(1+(j-1)*length(b1):(j*length(b1))));
for i=1:(length(f))
c=prod(f(i,:))^(1/length(f));
d(i)=c;
end
for k=1:length(f)
    e=d(k)/sum(d);
    s(k)=e;
end
s1=s';
ss=[ss,s1];
end
%ss装的是相应个数的几何平均数的权重比
t1=[];
for i=1:length(w)
    t=w(i)*ss(:,i);
    t1=[t1,t];
end
%此步将第二层的几何权重比按顺序全部乘以一个第一层的几何平均权重比
t3=[];
for i=1:6
t2=ss(:,i+3)*t1(i);
t3=[t3,t2];
end
%同理,将上层打开往下乘
for i=1:length(t3(:,1))
    zong(i)=sum(t3(i,:));
end
zong
%将最后一行的处理后的几何权重比按行相加

一个小例子:层次分析评价交通模型

clc
clear
a=[1 1/6 1/3 1/4;6 1 5 5;3 1/5 1 2;4 1/5 1/2 1]
b1=[1 2 6 4;1/2 1 6 4;1/6 1/6 1 1/3;1/4 1/4 3 1]
b2=[1 2 5 4;1/2 1 5 4;1/5 1/5 1 1/2;1/4 1/4 2 1]
b3=[1 5 3 5;1/5 1 2 2;1/3 1/2 1 1/2;1/5 1/2 2 1]
b4=[1 1/3 1/6 1/7;3 1 1/5 1/4;6 5 1 1/3;7 4 3 1] 
b=cat(3,b1,b2,b3,b4)
lammax_a=max(eig(a));%b为a矩阵的最大特征值
CI=(lammax_a-length(a))/(length(a)-1);
RI=[0 0 0.58 0.96 1.12 1.24 1.32 1.41 1.45];
CR=CI/RI(length(a))  
for i=1:4
    lammax_b(i)=max(eig(b(:,:,i)))
    CI_b(i)=(lammax_b(i)-4)/(4-1)
    CR_b(i)=CI_b(i)/RI(4)
end
for i=1:(length(a))
c=prod(a(i,:))^(1/length(a));%计算每一行的几何平均值
d(i)=c;
end
for i=1:length(a)
    e=d(i)/sum(d);
    w(i)=e;
end
for j=1:4
    for i=1:4
c=prod(b(i,:,j))^(1/4)   %计算每一行的几何平均值
d(i)=c;
end
for i=1:4
    e=d(i)/sum(d);
    wb(j,i)=e;
end
end
m=wb'
for i=1:4
 u=m*w'
zong(i)=sum(u(i,:))
end



虽然主观性太强,奈何还有太多学管理的同学老师偏爱这个,哎……

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆嵩

有打赏才有动力,你懂的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值