【Matlab数学建模】模糊综合评价

二、模糊集

1.模糊集的概念

  对于一些指标,只有属于和不属于。例如数学命题,只要属于真命题he不属于真命题两种状态。这种情况下,我们可以用集合表示。比如某集合包含所有真命题,某集合包含所有整数。

  但对于有些指标,则是模糊的。比如帅和丑、好和坏、高和低。他们不具有“非此即彼”的排中律,而具有“亦此亦彼”的模糊性

  为了研究这种模糊关系,我们引入模糊集的概念。

  给定域论 U U U,对于某个模糊集 A A A和任意 x ∈ U x\in U xU,都能确定一个整数 μ A ( x ) ∈ [ 0 , 1 ] \mu_A(x)\in [0, 1] μA(x)[0,1]用来表示 x x x属于 A A A的程度。映射:

x ∈ U → μ A ( x ) ∈ [ 0 , 1 ] x\in U\rightarrow\mu_A(x)\in[0,1] xUμA(x)[0,1]

  称 A A A隶属函数,函数 μ A ( x ) \mu_A(x) μA(x) x x x A A A隶属度

  例如集合 U U U为全体人类,集合 A A A代表全体好人,这是一个模糊的概念。若 μ A ( 我 ) = 0.75 \mu_A(我) = 0.75 μA()=0.75,就说明全世界有 75 % 75\% 75%的人认为我是好人。

2.模糊集的运算

( 1 ) 包 含 : A ⊂ B    ⟺    μ A ( x ) ≤ μ B ( x ) (1)包含:A\subset B\iff\mu_A(x)\leq\mu_B(x) (1)ABμA(x)μB(x) ( 2 ) 相 等 : A = B    ⟺    μ A ( x ) = μ B ( x ) (2)相等:A = B\iff\mu_A(x) = \mu_B(x) (2)A=BμA(x)=μB(x) ( 3 ) 相 交 : C = A ∩ B    ⟺    μ C ( x ) = μ A ( x ) ∧ μ B ( x ) (3)相交:C=A\cap B\iff\mu_C(x)=\mu_A(x)\land\mu_B(x) (3)C=ABμC(x)=μA(x)μB(x) ( 4 ) 相 并 : C = A ∪ B    ⟺    μ C ( x ) = μ A ( x ) ∨ μ B ( x ) (4)相并:C=A\cup B\iff\mu_C(x)=\mu_A(x)\lor\mu_B(x) (4)C=ABμC(x)=μA(x)μB(x) ( 5 ) 补 集 : A C    ⟺    μ A C ( x ) = 1 − μ A ( x ) (5)补集:A^C\iff \mu_{A^C}(x)=1-\mu_{A}(x) (5)ACμAC(x)=1μA(x) ( 6 ) 内 积 : A ⊙ B    ⟺    ∨ x ∈ U ( μ A ( x ) ∧ μ B ( x ) ) (6)内积:A\odot B\iff\lor_{x\in U}(\mu_A(x)\land\mu_B(x)) (6)ABxU(μA(x)μB(x)) ( 7 ) 外 积 : A ⊗ B    ⟺    ∧ x ∈ U ( μ A ( x ) ∨ μ B ( x ) ) (7)外积:A\otimes B\iff\land_{x\in U}(\mu_A(x)\lor\mu_B(x)) (7)ABxU(μA(x)μB(x))

  其中 ∧ \land ∨ \lor 分别代表取最小和取最大运算。

3.隶属函数的确定

  确定隶属函数常用的是模糊分布法,下面简要介绍模糊分布法的常用梯形分布。

【Matlab数学建模】模糊综合评价_第1张图片
【Matlab数学建模】模糊综合评价_第2张图片
【Matlab数学建模】模糊综合评价_第3张图片

二、模糊综合评价

1.确定评价指标和评价等级

  设 U = { u 1 , u 2 , ⋯   , u m } U=\{u_1, u_2, \cdots, u_m\} U={u1,u2,,um}是被评价对象的m个因素,即评价指标。而 V = { v 1 , v 2 , ⋯   , v m } V=\{v_1, v_2, \cdots, v_m\} V={v1,v2,,vm}为每一因素所处的n种评语,即评价等级。评价等级一般只划分3~5个。

  例如评价采用模糊评价了解原批们对八重神子的喜欢程度。 U = { 强 度 , 人 气 , x p , 人 设 } , V = { 很 喜 欢 , 喜 欢 , 一 般 , 不 喜 欢 } U=\{强度,人气,xp,人设\},V=\{很喜欢, 喜欢, 一般, 不喜欢\} U={,,xp,},V={,,,}

2.构造模糊综合评价矩阵

  设 r i j r_{ij} rij代表指标 u i u_i ui对等级 v j v_j vj的隶属度,通常要将 r i j r_{ij} rij归一化处理。

  则可以构建矩阵:

R = ( r i j ) m × n = ( r 11 r 12 ⋯ r 1 n r 21 r 22 ⋯ r 2 n ⋮ ⋮ ⋱ ⋮ r m 1 r m 2 ⋯ r m n ) R=(r_{ij})_{m\times n}= \begin{pmatrix} r_{11} & r_{12} & \cdots & r_{1n}\\ r_{21} & r_{22} & \cdots & r_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ r_{m1} & r_{m2} & \cdots & r_{mn}\\ \end{pmatrix} R=(rij)m×n=r11r21rm1r12r22rm2r1nr2nrmn

  称为各指标的模糊综合评价矩阵

  例如对于八重神子的强度——强度,5%的人很喜欢、10%的人喜欢、20%的人一般、65%的人不喜欢。(八重大人别打我)

  那么 R 1 = ( 0.05 , 0.10 , 0.20 , 0.65 ) R_1=(0.05, 0.10, 0.20, 0.65) R1=(0.05,0.10,0.20,0.65)

3.评价指标的确定

  通常引入一个模糊向量 A = ( a 1 , a 2 , ⋯   , a n ) A=(a_1, a_2, \cdots, a_n) A=(a1,a2,,an)来表示个评价指标的权重,称之为权重向量 A A A中的每一项需满足大于零,且它们的和为一。

  确定权重通常有主观和客观两类方法。主观法的代表是层次分析法。客观法是根据各指标间的联系,利用数学方法计算出各指标的权重,如质量分数法、变异系数法等。

  这里主要介绍变异系数法。其设计原理是:若某项指标的数值差异较大,能明确区分开各被评价对象,说明该指标的分辨信息丰富,因而应给该指标以较大的权重;反之,若各个被评价对象在某项指标上的数值差异较小,那么这项指标区分各评价对象的能力较弱,因而应给该指标较小的权重。

  定义分辨能力为:

v i = s i ∣ x i ˉ ∣ v_i = \frac{s_i}{|\bar{x_i}|} vi=xiˉsi

  权重值 ω i \omega_i ωi则是对分辨能力 v i v_i vi进行归一化:

ω i = v i ∑ v i \omega_i = \frac{v_i}{\sum v_i} ωi=vivi

  代码:

function omega = func(mat)
	[~, n] = size(mat);
	x = mean(mat, 2);
	v = sqrt(sum((mat - x) .^ 2, 2) ./ (n - 1)) ./ abs(x);
	omega = v / sum(v);
end

  需要指出的是,用变异系数法求出的某指标的权重与该指标在评价体系中的重要性是两个概念

4.模糊合成与综合评价

  模糊合成的概念是将评价矩阵 R R R和权向量 A A A进行某种适当运算,将二者合成为一个模糊向 B = b 1 , b 2 2 , ⋯   , b n B={b_1, b_22, \cdots, b_n} B=b1,b22,,bn,然后对 B B B按照一定的法则进行综合分析后得出最终的模糊综合评价结果。

  常用合成算子有:
M ( ∧ , ∨ )    ⟺    b j = ∨ ( a i ∧ r i j ) M(\land, \lor)\iff b_j = \lor (a_i\land r_{ij}) M(,)bj=(airij) M ( ⋅ , ∨ )    ⟺    b j = ∨ ( a i ⋅ r i j ) M(\cdot, \lor)\iff b_j = \lor (a_i\cdot r_{ij}) M(,)bj=(airij) M ( ∧ , + )    ⟺    b j = ∑ ( a i ∧ r i j ) M(\land, +)\iff b_j = \sum (a_i\land r_{ij}) M(,+)bj=(airij) M ( ⋅ , + )    ⟺    b j = ∑ ( a i ⋅ r i j ) M(\cdot, +)\iff b_j = \sum (a_i\cdot r_{ij}) M(,+)bj=(airij)
【Matlab数学建模】模糊综合评价_第4张图片
  在上表的最后一列中,主因素突出型适用于模糊矩阵中数据相差很悬殊的情形,而加权平均型则常用于因素很多的情形,可以避免信息丢失。

   B B B称为综合评价向量,各项大于零,且需要进行归一化。 b j b_j bj可理解为被评价对象对第 j j j等级的隶属程度。对 B B B分析处理后才能得到最终的评价结果。常用的方法有最大隶属度法加权平均法

【Matlab数学建模】模糊综合评价_第5张图片
【Matlab数学建模】模糊综合评价_第6张图片
【Matlab数学建模】模糊综合评价_第7张图片
  举个例子,设对于八重神子而言, U = { x p , 人 设 , 大 世 界 探 索 , 深 渊 强 度 } V = { 神 中 神 ! , 牛 , 还 行 , c j b } U=\{xp, 人设, 大世界探索, 深渊强度\}\quad V=\{神中神!, 牛, 还行, cjb\} U={xp,,,}V={,,,cjb}

  而长思七309宿舍四个原批的评价如下:

R = ( 0.4 0.5 0.1 0 0.6 0.3 0.1 0 0.1 0.2 0.6 0.1 0.1 0.2 0.5 0.2 ) R = \begin{pmatrix} 0.4 & 0.5 & 0.1 & 0 \\ 0.6 & 0.3 & 0.1 & 0 \\ 0.1 & 0.2 & 0.6 & 0.1 \\ 0.1 & 0.2 & 0.5 & 0.2 \end{pmatrix} R=0.40.60.10.10.50.30.20.20.10.10.60.5000.10.2

  而这些指标的权重值如下:

A = ( 0.5 , 0.2 , 0.2 , 0.1 ) A=(0.5, 0.2, 0.2, 0.1) A=(0.5,0.2,0.2,0.1)

  计算步骤键如下代码:

function B = func(R, A)
	
	B = [
		max(min(R, A))
		sum(min(R, A))
		max(R .* A)
		sum(R .* A)
	];					% 四种合成因子计算出来的B值

	B = B ./ sum(B, 2);	% 归一化

end

5.相对偏差模糊矩阵评价法

  设虚拟理想方案为:

u = { u 1 , u 2 , ⋯   , u n } , u=\{u_1, u_2, \cdots, u_n\}, u={u1,u2,,un}, u i = { max ⁡ j { a i j } , 效 益 型 指 标 min ⁡ j { a i j } , 成 本 型 指 标 u_i = \left\{ \begin{aligned} \max_j\{a_{ij}\},\quad效益型指标\\ \min_j\{a_{ij}\}, \quad成本型指标 \end{aligned} \right. ui=jmax{aij},jmin{aij},

  设相对偏差模糊矩阵为:

R = ( r 11 r 12 ⋯ r 1 n r 21 r 22 ⋯ r 2 n ⋮ ⋮ ⋱ ⋮ r m 1 r m 2 ⋯ r m n ) R= \begin{pmatrix} r_{11} & r_{12} & \cdots & r_{1n}\\ r_{21} & r_{22} & \cdots & r_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ r_{m1} & r_{m2} & \cdots & r_{mn}\\ \end{pmatrix} R=r11r21rm1r12r22rm2r1nr2nrmn r i j = ∣ a i j − u i ∣ max ⁡ j { a i j } − min ⁡ j { a i j } r_{ij} = \frac{|a_{ij}-u_i|}{\max_j\{a_{ij}\}-\min_j\{a_{ij}\}} rij=maxj{aij}minj{aij}aijui

  计算各个方案的偏差加权平均

F j = ∑ i = 1 m w i r i j F_j=\sum\limits^m_{i=1}w_ir_{ij} Fj=i=1mwirij

  然后对 F F F排序,若 F s < F t F_s < F_t Fs<Ft,则第s个方案排在第t个方案之前。

a = [
	1000	120	5000	1	50	1.5	1
	700		60	4000	2	40	2	2
	900		60	7000	1	70	1	4
	800		70	8000	1.5	40	0.5	6
	800		80	4000	2	30	2	5
];

%t(1)为真,表示x1是效益型,否则为成本型。
t = [
	true	false	false	false	true	false	true
];

% 计算理想方案u
maxa = max(a);
mina = min(a);
[m, n] = size(a);
u = zeros(1, n);
u(t) = maxa(:, t);
u(~t) = mina(:, ~t);

% 计算相对偏差模糊矩阵R
R = abs(a - u) ./ (maxa - mina);

% 计算权重值omega
x = mean(R);
v = std(R) ./ abs(x);
omega = v / sum(v);

% 计算加权平均偏差
F = sum(omega .* R, 2);

你可能感兴趣的:(数学建模,matlab,算法,开发语言)