数学评价模型(二):模糊综合评判

模糊综合评判

1. 一级模糊综合评判

模型Ⅰ:  

模型Ⅱ: 

模型Ⅲ: 

模型Ⅳ: 

【典例】

Matlab代码实现

2. 多级模糊综合评判

【典例】

Matlab代码实现


综合评判就是对受多个因素制约的事物或对象作出一个总的评价,这是在日常生活和科研工作中经常遇到的问题,例如对学生的评价应该考虑到各门功课的成绩,但绝不能忽略品行和健康。在歌手大赛中,也不能只考虑艺术水平而忽略了歌手的文化素质。由于从多方面对事物进行评价难免带有模糊性和主观性,采用模糊数学的方法进行综合评判将使结果尽量客观,从而取得更好的实际效果。

模糊综合评判的数学模型可分为一级模型多级模型。下面就常用基本的模型进行介绍。


1. 一级模糊综合评判


综合评判有三要素:
(ⅰ) 因素集U=\left \{ u_{1} ,u_{2} ,u_{3} ,...,u_{n} \right \}——被评判对象的各因素组成的集合;
(ⅱ) 评判集V=\left \{ v_{1} ,v_{2} ,v_{3} ,...,v_{m} \right \}——评语组成的集合;
(ⅲ) 建立单因素判断,即对单个因素u_{i}(i=1,2,...,n)的评判,得到V上的模糊集(r_{i1},r_{i2},r_{i3},...,r_{im}),所以它是从U到V的一个模糊映射:

f:U\rightarrow F(V)

u_{i}\rightarrow (r_{i1},r_{i2},r_{i3},...,r_{im})


由模糊映射f可以确定一个模糊关系R:R=(r_{ij})_{nm},称为评判矩阵,它是由所有对单因素评判的模糊集组成的。


由于各因素地位未必相等,所以需对各因素加权,用U上的模糊集A=(a_{1},a_{2},a_{3},...,a_{n},)表示各因素的权重分配,将它与评判矩阵R进行合成,即得到模糊综合评判集,采用最大隶属度原则对各因素进行综合评判。下面四种综合评判模型则是根据合成运算的不同而得出的。



模型Ⅰ: M(\vee ,\wedge ) 

这里b_{j}(r_{i1},r_{i2},r_{i3},...,r_{im})的函数,也就是评判函数。这种方法通过取小与取大两种运算,因此,称该模型为M(\vee ,\wedge )模型。此模型的特点是一种“主因素突出法”的综合评判。由于权重系数的作用体现较弱,有时会导致评价结果的不理想,这时需要将进行修正并进行归一化处理。



模型Ⅱ: M(\cdot ,\vee )


该模型采用两种运算:一种是普通乘法运算,用·表示;另一种是取大运算,用\vee表示。

利用此模型计算为 

其中乘法运算不会丢失有用的信息,而取大运算会丢失有用信息。该模型优点是较好地反映了单因素评价结果的重要程度


模型Ⅲ: M(+ ,\wedge )

该模型采用两种运算:一种是普通加法运算,用+表示;另一种是取小运算,用\wedge表示。

利用此模型计算为 


此模型的特点是对每个评语v_{j}都同时考虑各种因素的综合评判。


模型Ⅳ: M(+ ,\cdot )

该模型采用两种运算:一种是普通加法运算,用“+”表示,另一种是乘法运算,用“·”表示。

利用此模型计算为

此模型的特点是:在确定评语v_{j}对模糊综合评判集的隶属度b_{j}时,考虑了所有因素u_{i}(i=1,2,...,n)的影响;由于同时考虑到所有因素的影响,所以各a_{i}的大小具有刻画各因素重要程度的权系数意义。


在上述各种评价模型中,因为运算的定义不同,所以对同一评价对象求出的评价结果也会不一样。


【典例】

服装评判问题

设U={花色式样,耐穿程度,价格费用},V={很欢迎,比较欢迎,不太欢迎,不欢迎},对某一种服装,请若干专门人员进行单因素评价。


单考虑花色式样,若有70%的人很欢迎,有20%的人比较欢迎,10%的人不太欢迎便可得出

花色式样→(0.7,0.2,0.1,0)
类似地,可以得到耐穿程度和价格费用的数值,如下:
耐穿程度→(0.2,0.3,0.4,0.1)
价格费用→(0.3,0.4,0.2,0.1)
将上述的所有单因素评判组成评判矩阵,可以得到模糊综合评判矩阵,如下:

不同的顾客,由于职业、性别、年龄、爱好、经济状况等等的不同,对服装的三要素所给予的权数也不同。假若设某类顾客所给的权重为:A=(0.5,0.3,0.2),采用模型Ⅳ可得此类顾客对这种服装的综合评判为:

它表示的评价是:“很欢迎”的程度为47%;“比较欢迎” 的程度为27%;“不太欢迎” 的程度为21%;“不欢迎” 的程度为5%。按最大隶属原则,结论是“很欢迎”。
这个结果是归一化的。如果采用模型“\vee”,“\wedge”Ⅰ的,运算,得出的综合评判结果不一定是归一化的,因此需将结果归一化处理。

Matlab代码实现

%% 模糊评判矩阵
R = [0.7 0.2 0.1 0 
     0.2 0.3 0.4 0.1
     0.3 0.4 0.2 0.1]
%% 各因素的权重
A = [0.5 0.3 0.2]
%% 隶属度计算
B = A*R


2. 多级模糊综合评判


如果评判对象的有关因素很多,很难合理地定出权数分配,即难以真实地反应各因素在整体的地位,这是需采取多级评判。


多因素多层次系统的综合评判方法是:首先按最低层次的各因素进行综合评价,然后再按上一层次的各因素进行综合评判;依次向更高一层评判,一直评定到最高层次得出总的评价结果。


下面给出多级模糊综合评判的数学模型的一般描述。
假设因素集U=\left \{ U_{1}, U_{2}, U_{3}, ...,U_{n}\right \}为,对其中的U_{i}(i=1,2,...,n)细划分为U_{i}=\left \{ U_{i1},U_{i2},U_{i3},...,U_{im} \right \}

对其中的U_{ij}(i=1,2,...,n;j=1,2,...,m)再进一步细划分为U_{ij}=\left \{ U_{ij1},U_{ij2},U_{ij3},...,U_{ijp} \right \}

如此划分下去,就反映了影响因素的层次性。而评判时,应从最后一次划分最底层的因素开始,一级一级往上评判,直到评定到最高层。
下图给出三级模糊综合评判模型示意,更多级的评判过程依次类推。


【典例】

产品质量的综合评判


对同一个产品质量问题先使用单层模糊综合评判,再使用双层模糊综合评判。
(1)单层模糊综合评判
因素集:U=\left \{ u_{1},u_{2},u_{3},u_{4},u_{5},u_{6},u_{7},u_{8},u_{9} \right \}
评判集:V=\left \{ v_{1},v_{2},v_{3},v_{4}\right \}    式中v_{1}表一级,  v_{2}二级, v_{3}等外, v_{4}表废品。
权重向量:A=(0.1,0.12,0.07,0.07,0.16,0.1,0.1,0.1,0.18)
评判矩阵:由专家、客户、质量检查员组成的评判小组,先打分并做简单处理得到如下的综合评判矩阵:

利用模型Ⅰ计算综合评判

结果显示,无论是一级、二级、等外、废品的隶属度都是0.18,对这个具体问题而言模糊变换无法给出答案。可以采用其他方法,例如加权平均,也可以采用双层模糊综合评判。


(2)双层模糊综合评判
因素集:

评判集:V=\left \{ v_{1},v_{2},v_{3},v_{4}\right \}   式中v_{1}表一级,  v_{2}二级, v_{3}等外, v_{4}表废品。
第一层权重向量:

第一层评价矩阵:

第一层评判,使用模型Ⅰ,有

第二层评判矩阵:将一层评判结果组合起来形成二级评判矩阵。

第二层权重分配:因素集U=\left \{ U_{1},U_{2}, U_{3} \right \}的权重分配为A=(0.2,0.35,0.45)。
第二层评判,仍然使用模型Ⅰ,有

按最大隶属度原则,此产品属一级品。

Matlab代码实现

模糊综合评价的函数:fuzzy_zhpp.m

function[B]=fuzzy_zhpp(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

主函数:main.m

function main
A1=[0.30 0.42 0.28];
A2=[0.20 0.50 0.30];
A3=[0.30 0.30 0.40];

R=[0.30 0.32 0.26 0.27;
    0.26 0.36 0.20 0.20;
    0.40 0.28 0.30 0.20];
fuzzy_zhpp(1,A1,R)
fuzzy_zhpp(1,A2,R)
fuzzy_zhpp(1,A3,R)
end

有帮助的话各位小伙伴们来个三连击,鼓励鼓励一下我这只小白!!!

有帮助的话各位小伙伴们来个三连击,鼓励鼓励一下我这只小白!!!

有帮助的话各位小伙伴们来个三连击,鼓励鼓励一下我这只小白!!!

发布了47 篇原创文章 · 获赞 92 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ywsydwsbn/article/details/105430575