模糊综合评价法原理
基本思想
模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论 把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。
隶属度
隶属函数,也称为归属函数或模糊元函数,是模糊集合中会用到的函数,是一般集合中指示函数的一般化。指示函数可以说明一个集合中的元素是否属于特定子集合 。一元素的指示函数的值可能是0或是1,而元素的隶属函数会是0到1之间的数值 ,表示元素属于某模糊集合的“真实程度”(degree of truth)即隶属度。
基本模型
设评判对象为P: 其因素集 $ U={ u_1, u_2, \cdots , u_n } $ ,评判等级集 $ V={ v_1, v_2, \cdots ,v_m } $ 。对U中每一因素根据评判集中的等级指标进行模糊评判,得到评判矩阵:
R = [ r 11 , r 12 , ⋯ , r 1 m r 21 , r 22 , ⋯ , r 2 m r n 1 , r n 2 , ⋯ , r n m ] R=\begin{bmatrix}
r{11},r{12},\cdots,r{1m} \\
r{21},r{22},\cdots,r{2m} \\
r{n1},r{n2},\cdots,r_{nm}
\end{bmatrix}
R = ⎣ ⎢ ⎡ r 1 1 , r 1 2 , ⋯ , r 1 m r 2 1 , r 2 2 , ⋯ , r 2 m r n 1 , r n 2 , ⋯ , r n m ⎦ ⎥ ⎤
通常为了避免量纲的影响,我们还要进行去量纲操作。
其中,r i j r_{ij} r i j 表示u i u_i u i 关于v j v_j v j 的隶属度。(U,V,R) 则构成了一个模糊综合评判模型。确定各因素重要性指标(也称权数)后,记为A = { a 1 , a 2 , ⋯ , a n } A=\{ a_1,a_2, \cdots,a_n \} A = { a 1 , a 2 , ⋯ , a n } ,满足∑ i = 1 n a i = 1 \sum_{i=1}^na_i=1 ∑ i = 1 n a i = 1 ,合成得
B ‾ = A ⋅ R = ( b 1 ‾ , b 2 ‾ , ⋯ , b m ‾ ) \overline B = A\cdot R=\left(\overline {b_1}, \overline {b_2}, \cdots ,\overline {b_m} \right)
B = A ⋅ R = ( b 1 , b 2 , ⋯ , b m )
经归一化后,得 $ B= { b_i, b_2, \cdots, b_m } $ ,于是可确定对象P的评判等级。
如果想得到综合得分,那么我们还可以对B进一步打分,即以同样的方式设置权数,对B进行综合评定。
对问题进行模糊综合分析之后我们通常还要考察该模型的置信度。
权数的确定:
权数可以通过数学方法来确定,也可以由具有权威性的专家及具有代表性的人按因素的重要程度来商定。不过现在通用的做法是凭经验给出权重。
合成算法:
合成算法即加权的方式,常见算法有:
b i = max { min { a 1 , r 1 i } , min { a 2 , r 2 i } , ⋯ , min { a n , r n i } } b_i=\max \left \{ \min \left \{ a_1,r_{1i} \right\},\min \left \{ a_2,r_{2i} \right\} ,\cdots,\min \left \{ a_n,r_{ni} \right\}\right\}
b i = max { min { a 1 , r 1 i } , min { a 2 , r 2 i } , ⋯ , min { a n , r n i } }
b i = max { a 1 × r 1 i , a 2 × r 2 i , ⋯ , a n × r n i } b_i=\max \left \{ a_1\times r_{1i}, a_2\times r_{2i} ,\cdots,a_n\times r_{ni}\right\}
b i = max { a 1 × r 1 i , a 2 × r 2 i , ⋯ , a n × r n i }
b i = a 1 × r 1 i + a 2 × r 2 i + ⋯ + a n × r n i b_i=a_1\times r_{1i} + a_2\times r_{2i} +\cdots+a_n\times r_{ni}
b i = a 1 × r 1 i + a 2 × r 2 i + ⋯ + a n × r n i
加权平均型算法常用在因素集很多的情形,它可以避免信息丢失;主因素突出型算法常用在所统计的模糊矩阵中的数据相差很悬殊的情形,它可以防止特殊数据的干扰。
实例:教学质量评价
我们首先按照票数结果统计了25名学生对某位老师的教学质量评价表,统计结果如下:
好(100)
较好(85)
一般(70)
较差(55)
1. 教学计划及教学内容安排(0.10)
9
14
2
0
2. 教材及参考资料状况(0.10)
3
14
7
1
3. 教师教学态度及责任心(0.15)
5
15
5
0
4. 教师讲解能力(0.10)
1
10
11
3
5. 课堂教学形式的多样化程度(0.10)
2
11
12
0
6. 理论联系实际程度及教学案例使用情况(0.10)
5
14
6
0
7. 辅助教学环节及考核情况(0.10)
4
6
13
2
8. 教学改革与创新情况(0.10)
3
8
12
2
9. 从本课程学习中所获得的收益程度(0.15)
5
12
6
2
由于我们最终要给每项指标打分,如果直接使用票数计算那么必然会导致结果收到参评人员数量的影响,即参评人数为1000和参评人数为25的结果截然不同,所以我们使用某项指标的某个等级票数的频率来代替票数来表示隶属度 。各项因素的权数向量为:[ 0.1 , 0.1 , 0.15 , 0.10 , 0.10 , 0.10 , 0.10 , 0.10 , 0.15 ] [0.1, 0.1, 0.15, 0.10, 0.10, 0.10, 0.10,0.10, 0.15] [ 0 . 1 , 0 . 1 , 0 . 1 5 , 0 . 1 0 , 0 . 1 0 , 0 . 1 0 , 0 . 1 0 , 0 . 1 0 , 0 . 1 5 ] ,评判等级的权数向量为:[ 100 , 85 , 70 , 55 ] [100, 85,70,55] [ 1 0 0 , 8 5 , 7 0 , 5 5 ] ,其中两个权数向量之和为1。
好(100)
较好(85)
一般(70)
较差(55)
1. 教学计划及教学内容安排(0.10)
0.36
0.56
0.08
0.00
2. 教材及参考资料状况(0.10)
0.12
0.56
0.28
0.04
3. 教师教学态度及责任心(0.15)
0.20
0.60
0.2
0.00
4. 教师讲解能力(0.10)
0.04
0.4
0.44
0.12
5. 课堂教学形式的多样化程度(0.10)
0.08
0.44
0.48
0.00
6. 理论联系实际程度及教学案例使用情况(0.10)
0.20
0.56
0.24
0.00
7. 辅助教学环节及考核情况(0.10)
0.16
0.24
0.52
0.08
8. 教学改革与创新情况(0.10)
0.12
0.32
0.48
0.08
9. 从本课程学习中所获得的收益程度(0.15)
0.2
0.48
0.24
0.08
综合隶属度
0.168
0.47
0.318
0.044
综合隶属度由各项因素的权数向量和相应列的评判等级向量经过合成算法(这里使用加权平均)后的结果,
综合得分 :0.168x100 + 0.47x85 + 0.318x70 + 0.044x55=81.43
代码实现
下面代码中的fuzzy_method为主函数,fuzzy_comprehensive_evaluation为模糊综合评价法的主要逻辑。
function fuzzy_method % 模糊综合评价模型主函数 A1=[0.1 0.2 0.3 0.4]; A2=[0.4 0.35 0.15 0.1]; R=[0.2 0.5 0.2 0.1; 0.7 0.2 0.1 0; 0 0.4 0.5 0.1; 0.2 0.3 0.5 0]; fuzzy_comprehensive_evaluation(1,A1,R) fuzzy_comprehensive_evaluation(1,A2,R) end function B=fuzzy_comprehensive_evaluation(model,A,R) %模糊综合评判 % 参数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