【数学建模】模糊综合评价代码

来源:互联网 发布:金融网络销售是诈骗吗 编辑:程序博客网 时间:2024/05/04 02:07

模糊综合评价

适用情况

社会生活中,经常需要对人、事、物的模糊属性做评价。

MATLAB代码

以下是需要用到的库函数和主函数:
fuzz_zhpj.m

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 B=gui_yi_hua(B) 

gui_yi_hua.m

function B=gui_yi_hua(A)[m,n]=size(A);B=zeros(m,n);for i=1:m    for j=1:n        B(i,j)=A(i,j)/sum(A(i,:));    endend

接下来是主函数:

A=[0.1 0.1 0.3 0.15 0.35]%首先是从一类到五类五方面评价的权重R=[0.2 0.5 0.3 0;   0.1 0.3 0.5 0.1;   0 0.4 0.5 0.1;   0 0.1 0.6 0.3;   0.5 0.3 0.2 0]%接下来是五行向量中四个“选手”在五方面分别比较的评分B=fuzzy_zhpj(1,A,R)%运行评价语句

这时MATLAB回显

B =    0.3182    0.2727    0.2727    0.1364

最后根据得分从评语集U={很受欢迎,较受欢迎,不太受欢迎,不受欢迎}中分别判断四名“选手”

0 0