% 《数学建模与数学实验》 Example8_5
function Example8_5
A1=[0.2 0.5 0.1 0.2]; % 权重矩阵1
A2=[0.2 0.1 0.5 0.2]; % 权重矩阵2
R=[0.57 0.29 0.14 0 0;
0.86 0.14 0 0 0;
0 0 0.71 0.14 0.14;
0.29 0.29 0.14 0.14 0.14];
fuzzy_zhpj(1,A1,R) %取1为主因素决定型
fuzzy_zhpj(1,A2,R)
end
%%
function[B]=fuzzy_zhpj(model,A,R) %模糊综合评判
B=[];
[m,s1]=size(A);
[s2,n]=size(R);
if(s1~=s2)
disp('A的列不等于R的行');
else
if(model==1) %主因素决定型
for(i=1:m)
for(j=1:n)
B(i,j)=0;
for(k=1:s1)
x=0;
if(A(i,k)<R(k,j))
x=A(i,k);
else
x=R(k,j);
end
if(B(i,j)<x)
B(i,j)=x;
end
end
end
end
elseif(model==2) %主因素突出型
for(i=1:m)
for(j=1:n)
B(i,j)=0;
for(k=1:s1)
x=A(i,k)*R(k,j);
if(B(i,j)<x)
B(i,j)=x;
end
end
end
end
elseif(model==3) %加权平均型
for(i=1:m)
for(j=1:n)
B(i,j)=0;
for(k=1:s1)
B(i,j)=B(i,j)+A(i,k)*R(k,j);
end
end
end
elseif(model==4) %取小上界和型
for(i=1:m)
for(j=1:n)
B(i,j)=0;
for(k=1:s1)
x=0;
x=min(A(i,k),R(k,j));
B(i,j)=B(i,j)+x;
end
B(i,j)=min(B(i,j),1);
end
end
elseif(model==5) %均衡平均型
C=[];
C=sum(R);
for(j=1:n)
for(i=1:s2)
R(i,j)=R(i,j)/C(j);
end
end
for(i=1:m)
for(j=1:n)
B(i,j)=0;
for(k=1:s1)
x=0;
x=min(A(i,k),R(k,j));
B(i,j)=B(i,j)+x;
end
end
end
else
disp('模型赋值不当');
end
end
end
%%