引言
在复杂决策场景中,评价对象往往涉及多个相互关联的模糊因素。模糊综合评价法通过建立模糊关系矩阵,结合权重分配与合成算子,实现对多因素系统的科学评价。本文详细讲解模糊综合评价法的数学原理、操作步骤,并辅以MATLAB代码实现。
一、模糊综合评价法的数学原理
1.1 基本概念
模糊综合评价基于模糊集合理论,将定性评价转化为定量分析。其核心是通过隶属度函数描述各因素对评价等级的隶属程度,再通过模糊合成运算得到综合评价结果。
设:
- 因素集: U = { u 1 , u 2 , ⋯ , u n } U = \{u_1, u_2, \cdots, u_n\} U={u1,u2,⋯,un}
- 评语集: V = { v 1 , v 2 , ⋯ , v m } V = \{v_1, v_2, \cdots, v_m\} V={v1,v2,⋯,vm}
- 权重向量: A = ( a 1 , a 2 , ⋯ , a n ) A = (a_1, a_2, \cdots, a_n) A=(a1,a2,⋯,an),满足 ∑ i = 1 n a i = 1 \sum_{i=1}^n a_i = 1 ∑i=1nai=1
1.2 模糊关系矩阵
单因素评判矩阵
R
R
R 表示各因素对评语的隶属度:
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{pmatrix} r_{11} & r_{12} & \cdots & r_{1m} \\ r_{21} & r_{22} & \cdots & r_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ r_{n1} & r_{n2} & \cdots & r_{nm} \end{pmatrix}
R=
r11r21⋮rn1r12r22⋮rn2⋯⋯⋱⋯r1mr2m⋮rnm
其中
r
i
j
∈
[
0
,
1
]
r_{ij} \in [0,1]
rij∈[0,1] 表示因素
u
i
u_i
ui 对评语
v
j
v_j
vj 的隶属度。
二、模糊综合评价法的实施步骤
2.1 确定因素集与评语集
因素集需覆盖所有评价指标,例如科研成果评价可选:
U
=
{
技术水平
,
经济效益
,
社会效益
,
创新性
,
成熟度
}
U = \{\text{技术水平}, \text{经济效益}, \text{社会效益}, \text{创新性}, \text{成熟度}\}
U={技术水平,经济效益,社会效益,创新性,成熟度}
评语集通常分为5级:
V
=
{
优秀
,
良好
,
中等
,
合格
,
差
}
V = \{\text{优秀}, \text{良好}, \text{中等}, \text{合格}, \text{差}\}
V={优秀,良好,中等,合格,差}
2.2 构建模糊关系矩阵
通过专家打分或数据统计确定隶属度。例如10位专家对"技术水平"的评价为:3人评优秀,4人评良好,2人评中等,1人评合格,0人评差,则:
r
1
j
=
(
0.3
,
0.4
,
0.2
,
0.1
,
0
)
r_{1j} = (0.3, 0.4, 0.2, 0.1, 0)
r1j=(0.3,0.4,0.2,0.1,0)
2.3 确定权重向量
权重反映各因素的重要性,常用方法包括:
- 层次分析法(AHP)
- 熵权法
- 专家打分法
例如某评价权重分配:
A
=
(
0.25
,
0.20
,
0.20
,
0.10
,
0.25
)
A = (0.25, 0.20, 0.20, 0.10, 0.25)
A=(0.25,0.20,0.20,0.10,0.25)
2.4 选择合成算子
常见的模糊合成算子:
算子类型 | 定义 |
---|---|
M ( ∧ , ∨ ) M(\wedge, \vee) M(∧,∨) | b j = max 1 ≤ i ≤ n { a i ∧ r i j } b_j = \max\limits_{1 \leq i \leq n} \{a_i \wedge r_{ij}\} bj=1≤i≤nmax{ai∧rij} |
M ( ⋅ , ∨ ) M(\cdot, \vee) M(⋅,∨) | b j = max 1 ≤ i ≤ n { a i ⋅ r i j } b_j = \max\limits_{1 \leq i \leq n} \{a_i \cdot r_{ij}\} bj=1≤i≤nmax{ai⋅rij} |
M ( ∧ , ⊕ ) M(\wedge, \oplus) M(∧,⊕) | b j = min ( 1 , ∑ i = 1 n ( a i ∧ r i j ) ) b_j = \min\left(1, \sum_{i=1}^n (a_i \wedge r_{ij})\right) bj=min(1,∑i=1n(ai∧rij)) |
M ( ⋅ , ⊕ ) M(\cdot, \oplus) M(⋅,⊕) | b j = min ( 1 , ∑ i = 1 n ( a i ⋅ r i j ) ) b_j = \min\left(1, \sum_{i=1}^n (a_i \cdot r_{ij})\right) bj=min(1,∑i=1n(ai⋅rij))(推荐使用) |
2.5 计算综合评价结果
B
=
A
∘
R
=
(
b
1
,
b
2
,
⋯
,
b
m
)
B = A \circ R = (b_1, b_2, \cdots, b_m)
B=A∘R=(b1,b2,⋯,bm)
归一化处理:
B
norm
=
(
b
1
∑
b
i
,
b
2
∑
b
i
,
⋯
,
b
m
∑
b
i
)
B_{\text{norm}} = \left( \frac{b_1}{\sum b_i}, \frac{b_2}{\sum b_i}, \cdots, \frac{b_m}{\sum b_i} \right)
Bnorm=(∑bib1,∑bib2,⋯,∑bibm)
三、实例分析:科技成果评价
3.1 问题描述
某科研成果从5个指标评价:技术水平、经济效益、社会效益、创新性、成熟度。专家评分矩阵为:
R
=
(
0.35
0.39
0.22
0.04
0.17
0.35
0.39
0.09
0
0.30
0.44
0.26
0.09
0.22
0.30
0.39
0.43
0.35
0.22
0
)
R = \begin{pmatrix} 0.35 & 0.39 & 0.22 & 0.04 \\ 0.17 & 0.35 & 0.39 & 0.09 \\ 0 & 0.30 & 0.44 & 0.26 \\ 0.09 & 0.22 & 0.30 & 0.39 \\ 0.43 & 0.35 & 0.22 & 0 \end{pmatrix}
R=
0.350.1700.090.430.390.350.300.220.350.220.390.440.300.220.040.090.260.390
权重向量:
A
=
(
0.35
,
0.35
,
0.1
,
0.1
,
0.1
)
A = (0.35, 0.35, 0.1, 0.1, 0.1)
A=(0.35,0.35,0.1,0.1,0.1)
3.2 计算过程
使用 M ( ⋅ , ⊕ ) M(\cdot, \oplus) M(⋅,⊕) 算子:
-
计算各评语分量
b 1 = 0.35 × 0.35 + 0.35 × 0.17 + 0.1 × 0 + 0.1 × 0.09 + 0.1 × 0.43 = 0.23 b_1 = 0.35 \times 0.35 + 0.35 \times 0.17 + 0.1 \times 0 + 0.1 \times 0.09 + 0.1 \times 0.43 = 0.23 b1=0.35×0.35+0.35×0.17+0.1×0+0.1×0.09+0.1×0.43=0.23
同理得:
B = ( 0.23 , 0.35 , 0.31 , 0.11 ) B = (0.23, 0.35, 0.31, 0.11) B=(0.23,0.35,0.31,0.11) -
归一化处理
B norm = ( 0.23 0.9 , 0.35 0.9 , 0.31 0.9 , 0.11 0.9 ) = ( 0.256 , 0.389 , 0.344 , 0.122 ) B_{\text{norm}} = \left( \frac{0.23}{0.9}, \frac{0.35}{0.9}, \frac{0.31}{0.9}, \frac{0.11}{0.9} \right) = (0.256, 0.389, 0.344, 0.122) Bnorm=(0.90.23,0.90.35,0.90.31,0.90.11)=(0.256,0.389,0.344,0.122) -
结果分析
- 优秀:25.6%
- 良好:38.9%
- 中等:34.4%
- 合格:12.2%
根据最大隶属度原则,该成果应评为良好等级。
四、MATLAB代码实现
4.1 矩阵合成函数
function B = fuzzy_eval(A, R, method)
[n, m] = size(R);
B = zeros(1, m);
for j = 1:m
if strcmp(method, 'product_sum')
B(j) = sum(A .* R(:,j)');
elseif strcmp(method, 'max_min')
B(j) = max(min(A, R(:,j)'));
end
end
B = B / sum(B); % 归一化
end
4.2 实例计算
% 输入数据
A = [0.35, 0.35, 0.1, 0.1, 0.1];
R = [0.35 0.39 0.22 0.04;
0.17 0.35 0.39 0.09;
0 0.30 0.44 0.26;
0.09 0.22 0.30 0.39;
0.43 0.35 0.22 0];
% 计算综合评价
B = fuzzy_eval(A, R, 'product_sum');
disp('综合评价结果:');
disp(B);
4.3 输出结果
综合评价结果:
0.256 0.389 0.344 0.122
五、关键问题讨论
5.1 权重分配敏感性
权重轻微变化可能导致评价结果显著改变。例如将"技术水平"权重从0.35调整为0.4,重新计算:
A_new = [0.4, 0.3, 0.1, 0.1, 0.1];
B_new = fuzzy_eval(A_new, R, 'product_sum');
结果变为:
B
new
=
(
0.273
,
0.364
,
0.327
,
0.136
)
B_{\text{new}} = (0.273, 0.364, 0.327, 0.136)
Bnew=(0.273,0.364,0.327,0.136)
评价结论仍为"良好",但具体分布发生变化。
5.2 算子选择影响
不同合成算子对比:
算子类型 | 评价结果 | 结论 |
---|---|---|
M ( ∧ , ∨ ) M(\wedge, \vee) M(∧,∨) | (0.35, 0.35, 0.35, 0.1) | 无法分辨 |
M ( ⋅ , ⊕ ) M(\cdot, \oplus) M(⋅,⊕) | (0.256, 0.389, 0.344, 0.122) | 良好 |
表明 M ( ⋅ , ⊕ ) M(\cdot, \oplus) M(⋅,⊕) 能更好地区分评价等级。
六、扩展应用:多级模糊综合评价
当因素集 U U U 包含子集时,需采用多级评价模型:
- 一级评价:对各子因素集 U i U_i Ui 进行评价,得到 B i = A i ∘ R i B_i = A_i \circ R_i Bi=Ai∘Ri
- 二级评价:将 B i B_i Bi 作为新的因素集,计算 B = A ∘ [ B 1 ; B 2 ; ⋯ ; B s ] B = A \circ [B_1; B_2; \cdots; B_s] B=A∘[B1;B2;⋯;Bs]
6.1 数学模型
B = A ∘ ( A 1 ∘ R 1 A 2 ∘ R 2 ⋮ A s ∘ R s ) B = A \circ \begin{pmatrix} A_1 \circ R_1 \\ A_2 \circ R_2 \\ \vdots \\ A_s \circ R_s \end{pmatrix} B=A∘ A1∘R1A2∘R2⋮As∘Rs
6.2 应用场景
适用于复杂系统的层次化评价,如:
- 企业绩效评估(财务、客户、流程、创新)
- 城市可持续发展评价(经济、环境、社会)
结论
模糊综合评价法通过以下优势成为处理模糊决策问题的有力工具:
- 兼容定性/定量指标
- 灵活应对权重变化
- 支持多层次分析
实际应用中需注意:
- 隶属度函数需通过统计或德尔菲法合理确定
- 定期验证和调整权重分配
- 结合其他方法(如TOPSIS)进行结果验证