1.1 属性权重完全未知情形下的直觉模糊多属性决策方法
1.1.1 问题描述
设某多属性决策问题有 m m m个方案 Y i ( i = 1 , 2 , … m ) Y_{i}\left(i=1,2,…m\right) Yi(i=1,2,…m),组成方案集 Y = { Y 1 , Y 2 , ⋯ , Y m } Y = \left\{Y_{1},Y_{2},\cdots,Y_{m}\right\} Y={Y1,Y2,⋯,Ym}评价每个方案的属性(或指标)为 G j ( j = 1 , 2 , ⋯ , n ) G_{j}\left(j=1,2,\cdots,n\right) Gj(j=1,2,⋯,n),记属性集为 G = { G 1 , G 2 , ⋯ , G n } G=\left\{G_{1},G_{2},\cdots,G_{n}\right\} G={G1,G2,⋯,Gn},属性 G j ( j = 1 , 2 ⋯ , n ) G_{j}\left(j=1,2\cdots,n\right) Gj(j=1,2⋯,n)的权重向量 ω = ( ω 1 , ω 2 , ⋯ , ω n ) T \boldsymbol{\omega} = {\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T} ω=(ω1,ω2,⋯,ωn)T 完 全 未 知 \color{blue}{完全未知} 完全未知。假设方案 Y i ∈ Y Y_{i} \in Y Yi∈Y关于属性 G j ∈ G G_{j} \in G Gj∈G的评价值可以表示为 F ~ i j = ⟨ μ i j , ν i j ⟩ ( i = 1 , 2 , ⋯ , m ; j = 1 , 2 , ⋯ , n ) \tilde{F}_{ij} = \left\langle\mu_{ij},\nu_{ij}\right\rangle\left(i=1,2,\cdots,m;j=1,2,\cdots,n\right) F~ij=⟨μij,νij⟩(i=1,2,⋯,m;j=1,2,⋯,n), F ~ i j \tilde{F}_{ij} F~ij为直觉模糊集,其中 μ i j ∈ [ 0 , 1 ] \mu_{ij} \in [0,1] μij∈[0,1]和 ν i j ∈ [ 0 , 1 ] \nu_{ij} \in [0,1] νij∈[0,1]分别表示方案 Y i ∈ Y Y_{i} \in Y Yi∈Y满足属性 G j ∈ G G_{j} \in G Gj∈G和不满足属性 G j ∈ G G_{j} \in G Gj∈G的程度,且 0 ≤ μ i j + ν i j ≤ 1 0 \leq \mu_{ij} + \nu_{ij} \leq 1 0≤μij+νij≤1。则矩阵 F = ( ⟨ μ i j , ν i j ⟩ ) m × n F = {\left(\left\langle \mu_{ij},\nu_{ij} \right\rangle\right)}_{m×n} F=(⟨μij,νij⟩)m×n为该多属性决策问题的直觉模糊决策矩阵,现在的问题是依据直觉模糊决策矩阵 F F F, 如 何 通 过 确 定 属 性 权 重 向 量 ω = ( ω 1 , ω 2 , ⋯ , ω n ) T , 得 到 一 个 有 效 的 决 策 分 析 方 法 对 所 有 方 案 进 行 优 劣 排 序 \color{red}{如何通过确定属性权重向量\boldsymbol{\omega} = {\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T},得到一个有效的决策分析方法对所有方案进行优劣排序} 如何通过确定属性权重向量ω=(ω1,ω2,⋯,ωn)T,得到一个有效的决策分析方法对所有方案进行优劣排序。
1.1.2 属性权重的确定方法
直觉模糊多属性决策分析,一般是对这些方案综合属性值的排序比较。如果所有方案在属性
G
j
(
j
=
1
,
2
,
⋯
,
n
)
G_{j}\left(j=1,2,\cdots,n\right)
Gj(j=1,2,⋯,n)下的属性值差异很小,则说明该属性对方案决策与排序所起的作用很小;反之,如果属性
G
j
(
j
=
1
,
2
,
⋯
,
n
)
G_{j}\left(j=1,2,\cdots,n\right)
Gj(j=1,2,⋯,n)能使所有方案的属性值有较大差异,则说明其对方案决策与排序起重要作用。所以,从对决策方案进行排序的角度考虑,方案属性值偏差越大的属性应该赋予越大的权重。特别地,如果所有方案在属性
G
j
(
j
=
1
,
2
,
⋯
,
n
)
G_{j}\left(j=1,2,\cdots,n\right)
Gj(j=1,2,⋯,n)下的属性值无差异,则属性
G
j
(
j
=
1
,
2.
⋯
,
n
)
G_{j}\left(j=1,2.\cdots,n\right)
Gj(j=1,2.⋯,n)对方案排序将不起作用,可令其权重为0。
对于属性
G
j
(
j
=
1
,
2
,
⋯
,
n
)
G_{j}\left(j=1,2,\cdots,n\right)
Gj(j=1,2,⋯,n),用
D
i
j
(
ω
)
D_{ij}\left(\omega\right)
Dij(ω)表示方案
Y
i
Y_{i}
Yi与其他方案
Y
k
Y_{k}
Yk之间的距离,则可定义
D
i
j
(
ω
)
=
∑
k
=
1
m
d
(
F
~
i
j
,
F
~
k
j
)
ω
j
=
1
2
∑
k
=
1
m
ω
j
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
(
i
=
1
,
2
,
⋯
,
m
;
j
=
1
,
2
,
⋯
,
n
)
(1.1)
\color{blue} { \begin{aligned} D_{ij}\left(\omega\right) &= \sum_{k=1}^{m}{d\left(\tilde{F}_{ij},\tilde{F}_{kj}\right)\omega_{j}} \\ &= \frac{1}{2}\sum_{k=1}^{m}\omega_{j}\left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right)\left(i=1,2,\cdots,m;j=1,2,\cdots,n\right) \tag{1.1}\\ \end{aligned} }
Dij(ω)=k=1∑md(F~ij,F~kj)ωj=21k=1∑mωj(∣μij−μkj∣+∣νij−νkj∣)(i=1,2,⋯,m;j=1,2,⋯,n)(1.1)
令
D
j
(
ω
)
=
∑
i
=
1
m
D
i
j
(
ω
)
=
1
2
∑
i
=
1
m
∑
k
=
1
m
ω
j
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
(
i
=
1
,
2
,
⋯
,
m
;
j
=
1
,
2
,
⋯
,
n
)
(1.2)
\color{blue} { \begin{aligned} D_{j}\left(\omega\right) &= \sum_{i=1}^{m}D_{ij}\left(\omega\right) \\ &= \frac{1}{2}\sum_{i=1}^{m}\sum_{k=1}^{m}\omega_{j}\left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right)\left(i=1,2,\cdots,m;j=1,2,\cdots,n\right) \tag{1.2} \end{aligned} }
Dj(ω)=i=1∑mDij(ω)=21i=1∑mk=1∑mωj(∣μij−μkj∣+∣νij−νkj∣)(i=1,2,⋯,m;j=1,2,⋯,n)(1.2)
则
D
j
(
ω
)
D_{j}\left(\omega\right)
Dj(ω)表示对属性
G
j
(
j
=
1
,
2
,
⋯
,
n
)
G_{j}\left(j=1,2,\cdots,n\right)
Gj(j=1,2,⋯,n)而言,所有方案与其他方案的总离差。根据上述分析,权重向量
ω
=
(
ω
1
,
ω
2
,
⋯
,
ω
n
)
T
\boldsymbol{\omega} = {\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T}
ω=(ω1,ω2,⋯,ωn)T的选择应是所有属性对所有方案的总离差最大。为此构建以下目标函数:
max
D
(
ω
)
=
∑
j
=
1
n
D
j
(
ω
)
=
1
2
∑
j
=
1
n
∑
i
=
1
m
∑
k
=
1
m
ω
j
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
(1.3)
\color{red} { \begin{aligned} \max D\left(\omega\right) &= \sum_{j=1}^{n} D_{j}\left(\omega\right) \\ &= \frac{1}{2}\sum_{j=1}^{n}\sum_{i=1}^{m}\sum_{k=1}^{m}\omega_{j}\left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right) \tag{1.3} \end{aligned} }
maxD(ω)=j=1∑nDj(ω)=21j=1∑ni=1∑mk=1∑mωj(∣μij−μkj∣+∣νij−νkj∣)(1.3)
于是,求解权重向量
ω
=
(
ω
1
,
ω
2
,
⋯
,
ω
n
)
T
\boldsymbol{\omega}={\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T}
ω=(ω1,ω2,⋯,ωn)T就等价于求解如下最优化模型:
{
max
D
(
ω
)
=
∑
j
=
1
n
D
j
(
ω
)
=
1
2
∑
j
=
1
n
∑
i
=
1
m
∑
k
=
1
m
ω
j
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
s
.
t
.
∑
j
=
1
n
ω
j
2
=
1
,
ω
j
≥
0
(
j
=
1
,
2
,
⋯
,
n
)
(1.4)
\color{blue} { \left\{ \begin{aligned} \max D\left(\omega\right) &= \sum_{j=1}^{n} D_{j}\left(\omega\right) = \frac{1}{2}\sum_{j=1}^{n}\sum_{i=1}^{m}\sum_{k=1}^{m}\omega_{j}\left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right) \\ s.t.\sum_{j=1}^{n}\omega_{j}^{2} &= 1,\omega_{j} \geq 0 \left(j=1,2,\cdots,n\right) \\ \end{aligned} \right. \tag{1.4} }
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧maxD(ω)s.t.j=1∑nωj2=j=1∑nDj(ω)=21j=1∑ni=1∑mk=1∑mωj(∣μij−μkj∣+∣νij−νkj∣)=1,ωj≥0(j=1,2,⋯,n)(1.4)
为了求解最优化模型
(
1.4
)
\left(1.4\right)
(1.4),可构造拉格朗日函数:
L
(
ω
,
λ
)
=
1
2
∑
j
=
1
n
∑
i
=
1
m
∑
k
=
1
m
ω
j
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
+
λ
4
(
∑
j
=
1
n
ω
j
2
−
1
)
(1.5)
\color{red} { \operatorname{L}\left(\omega,\lambda\right) = \frac{1}{2}\sum_{j=1}^{n} \sum_{i=1}^{m} \sum_{k=1}^{m} \omega_{j} \left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right) + \frac{\lambda}{4}\left(\sum_{j=1}^{n}\omega_{j}^{2} - 1\right) \tag{1.5} }
L(ω,λ)=21j=1∑ni=1∑mk=1∑mωj(∣μij−μkj∣+∣νij−νkj∣)+4λ(j=1∑nωj2−1)(1.5)
对其求偏导数,并令偏导数等于0,可得
{
∂
L
∂
ω
j
=
1
2
∑
i
=
1
m
∑
k
=
1
m
ω
j
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
+
1
2
λ
ω
j
=
0
∂
L
∂
λ
=
1
4
(
∑
j
=
1
n
ω
j
2
−
1
)
=
0
(1.6)
\color{blue} { \left\{ \begin{aligned} \frac{\partial L}{\partial \omega_{j}} &= \frac{1}{2} \sum_{i=1}^{m} \sum_{k=1}^{m} \omega_{j} \left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right) + \frac{1}{2}\lambda\omega_{j} = 0 \\ \frac{\partial L}{\partial \lambda} &= \frac{1}{4}\left(\sum_{j=1}^{n}\omega_{j}^{2} - 1\right) = 0 \\ \end{aligned} \right. \tag{1.6} }
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧∂ωj∂L∂λ∂L=21i=1∑mk=1∑mωj(∣μij−μkj∣+∣νij−νkj∣)+21λωj=0=41(j=1∑nωj2−1)=0(1.6)
解之可得
ω
j
∗
=
∑
i
=
1
m
∑
k
=
1
m
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
∑
j
=
1
n
[
∑
i
=
1
m
∑
k
=
1
m
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
]
2
(1.7)
\color{red} { \omega_{j}^{*} = \frac{\sum_{i=1}^{m} \sum_{k=1}^{m} \left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right)} {\sqrt{\sum_{j=1}^{n}{\left[\sum_{i=1}^{m} \sum_{k=1}^{m} \left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right)\right]}^{2}}} \tag{1.7} }
ωj∗=∑j=1n[∑i=1m∑k=1m(∣μij−μkj∣+∣νij−νkj∣)]2∑i=1m∑k=1m(∣μij−μkj∣+∣νij−νkj∣)(1.7)
对
ω
j
∗
\omega_{j}^{*}
ωj∗进行归一化处理,可得属性权重
ω
j
=
∑
i
=
1
m
∑
k
=
1
m
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
∑
j
=
1
n
∑
i
=
1
m
∑
k
=
1
m
(
∣
μ
i
j
−
μ
k
j
∣
+
∣
ν
i
j
−
ν
k
j
∣
)
(1.8)
\color{red} { \omega_{j} = \frac{\sum_{i=1}^{m} \sum_{k=1}^{m} \left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right)} {\sum_{j=1}^{n}\sum_{i=1}^{m} \sum_{k=1}^{m} \left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right)} \tag{1.8} }
ωj=∑j=1n∑i=1m∑k=1m(∣μij−μkj∣+∣νij−νkj∣)∑i=1m∑k=1m(∣μij−μkj∣+∣νij−νkj∣)(1.8)
1.1.3 属性权重完全未知情形下的直觉模糊多属性决策步骤与实例分析
根据以上分析,属性权重完全未知情形下基于离差最大化的直觉模糊多属性决策的步骤可归纳如下。
S.1 确定多属性决问题的方集 Y = { Y 1 , Y 2 , . . . , Y m } Y = \left\{Y_{1},Y_{2},...,Y_{m}\right\} Y={Y1,Y2,...,Ym}和属性集 G = { G 1 , G 2 , ⋯ , G n } G=\left\{G_{1},G_{2},\cdots,G_{n}\right\} G={G1,G2,⋯,Gn}。
S.2 获取多属性决策问题中方案 Y i ∈ Y Y_{i} \in Y Yi∈Y关于属性 G j ∈ G G_{j} \in G Gj∈G的直觉模糊特征信息,构建直觉模糊决策矩阵 F F F。
S.3 利用式 ( 1.8 ) (1.8) (1.8)确定各属性的权重,得到属性权重向量 ω = ( ω 1 , ω 2 , ⋯ , ω n ) T \boldsymbol{\omega}={\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T} ω=(ω1,ω2,⋯,ωn)T。
S.4 利用式
(
1.9
)
(1.9)
(1.9)或式
(
1.10
)
(1.10)
(1.10)计算方案的综合属性值
d
~
i
\tilde{d}_{i}
d~i:
d
~
i
=
⟨
μ
i
,
ν
i
⟩
=
IFWA
ω
(
A
~
1
,
A
~
2
,
⋯
,
A
~
n
)
=
⟨
1
−
∏
j
=
1
n
(
1
−
μ
j
)
ω
j
,
∏
j
=
1
n
(
ν
j
)
ω
j
⟩
(1.9)
\tilde{d}_{i} = \left\langle\mu_{i},\nu_{i}\right\rangle = \operatorname{IFWA}_{\omega}\left(\tilde{A}_{1},\tilde{A}_{2},\cdots,\tilde{A}_{n}\right) = \left\langle 1 - \prod_{j=1}^{n}{\left(1 - \mu_{j}\right)}^{\omega_{j}},\prod_{j=1}^{n}{\left(\nu_{j}\right)}^{\omega_{j}} \right\rangle \tag{1.9}
d~i=⟨μi,νi⟩=IFWAω(A~1,A~2,⋯,A~n)=⟨1−j=1∏n(1−μj)ωj,j=1∏n(νj)ωj⟩(1.9)
d
~
i
=
⟨
μ
i
,
ν
i
⟩
=
IFWG
ω
(
A
~
1
,
A
~
2
,
⋯
,
A
~
n
)
=
⟨
∏
j
=
1
n
(
μ
j
)
ω
j
,
1
−
∏
j
=
1
n
(
1
−
ν
j
)
ω
j
⟩
(1.10)
\tilde{d}_{i} = \left\langle\mu_{i},\nu_{i}\right\rangle = \operatorname{IFWG}_{\omega}\left(\tilde{A}_{1},\tilde{A}_{2},\cdots,\tilde{A}_{n}\right) = \left\langle \prod_{j=1}^{n}{\left(\mu_{j}\right)}^{\omega_{j}},1 - \prod_{j=1}^{n}{\left(1 - \nu_{j}\right)}^{\omega_{j}} \right\rangle \tag{1.10}
d~i=⟨μi,νi⟩=IFWGω(A~1,A~2,⋯,A~n)=⟨j=1∏n(μj)ωj,1−j=1∏n(1−νj)ωj⟩(1.10)
S.5 利用觉模糊数的得分数和精确度公式,计算方案 Y i Y_{i} Yi的综合属性值 d ~ i \tilde{d}_{i} d~i的得分值 s ( d ~ i ) \operatorname{s}\left(\tilde{d}_{i}\right) s(d~i)和精确值 h ( d ~ i ) \operatorname{h}\left(\tilde{d}_{i}\right) h(d~i),确定 d ~ i ( i = 1 , 2 , ⋯ , m ) \tilde{d}_{i}\left(i=1,2,\cdots,m\right) d~i(i=1,2,⋯,m)的不增排列顺序,并利用排序结果对方案 Y i ( i = 1 , 2 , ⋯ , m ) Y_{i}\left(i=1,2,\cdots,m\right) Yi(i=1,2,⋯,m)进行优劣排序。
示 例 1.1 \color{red}{示例1.1} 示例1.1
考虑公共投资项目绩效评问题。公共投资项目绩效评估要同时考虑公共投资的经济性、效率性、有效性和社会公平性,可以从管理绩效( G 1 G_1 G1)、经济绩效( G 2 G_2 G2)、社会绩效( G 3 G_3 G3)、生态绩效( G 4 G_4 G4)和可持续发展绩效( G 5 G_5 G5)五个方面进行绩效评估。假设通过现场调查和专家咨询可以获得五个公共投资项目 Y i ( i = 1 , 2 , 3 , 4 , 5 ) Y_i\left(i=1,2,3,4,5\right) Yi(i=1,2,3,4,5)关于属性 G j ( j = 1 , 2 , 3 , 4 , 5 ) G_j\left(j=1,2,3,4,5\right) Gj(j=1,2,3,4,5)的直觉模糊评价结果(表3-1),各属性权重完全未知。
G 1 G_{1} G1 | G 2 G_{2} G2 | G 3 G_{3} G3 | G 4 G_{4} G4 | G 5 G_{5} G5 | |
---|---|---|---|---|---|
Y 1 Y_{1} Y1 | ⟨ 0.7 , 0.3 ⟩ \left\langle0.7,0.3\right\rangle ⟨0.7,0.3⟩ | ⟨ 0.7 , 0.2 ⟩ \left\langle0.7,0.2\right\rangle ⟨0.7,0.2⟩ | ⟨ 0.4 , 0.5 ⟩ \left\langle0.4,0.5\right\rangle ⟨0.4,0.5⟩ | ⟨ 0.7 , 0.3 ⟩ \left\langle0.7,0.3\right\rangle ⟨0.7,0.3⟩ | ⟨ 0.6 , 0.2 ⟩ \left\langle0.6,0.2\right\rangle ⟨0.6,0.2⟩ |
Y 2 Y_{2} Y2 | ⟨ 0.6 , 0.2 ⟩ \left\langle0.6,0.2\right\rangle ⟨0.6,0.2⟩ | ⟨ 0.4 , 0.3 ⟩ \left\langle0.4,0.3\right\rangle ⟨0.4,0.3⟩ | ⟨ 0.5 , 0.3 ⟩ \left\langle0.5,0.3\right\rangle ⟨0.5,0.3⟩ | ⟨ 0.7 , 0.1 ⟩ \left\langle0.7,0.1\right\rangle ⟨0.7,0.1⟩ | ⟨ 0.5 , 0.2 ⟩ \left\langle0.5,0.2\right\rangle ⟨0.5,0.2⟩ |
Y 3 Y_{3} Y3 | ⟨ 0.8 , 0.1 ⟩ \left\langle0.8,0.1\right\rangle ⟨0.8,0.1⟩ | ⟨ 0.6 , 0.2 ⟩ \left\langle0.6,0.2\right\rangle ⟨0.6,0.2⟩ | ⟨ 0.4 , 0.3 ⟩ \left\langle0.4,0.3\right\rangle ⟨0.4,0.3⟩ | ⟨ 0.2 , 0.6 ⟩ \left\langle0.2,0.6\right\rangle ⟨0.2,0.6⟩ | ⟨ 0.3 , 0.4 ⟩ \left\langle0.3,0.4\right\rangle ⟨0.3,0.4⟩ |
Y 4 Y_{4} Y4 | ⟨ 0.5 , 0.4 ⟩ \left\langle0.5,0.4\right\rangle ⟨0.5,0.4⟩ | ⟨ 0.3 , 0.6 ⟩ \left\langle0.3,0.6\right\rangle ⟨0.3,0.6⟩ | ⟨ 0.6 , 0.3 ⟩ \left\langle0.6,0.3\right\rangle ⟨0.6,0.3⟩ | ⟨ 0.3 , 0.4 ⟩ \left\langle0.3,0.4\right\rangle ⟨0.3,0.4⟩ | ⟨ 0.5 , 0.3 ⟩ \left\langle0.5,0.3\right\rangle ⟨0.5,0.3⟩ |
Y 5 Y_{5} Y5 | ⟨ 0.6 , 0.4 ⟩ \left\langle0.6,0.4\right\rangle ⟨0.6,0.4⟩ | ⟨ 0.5 , 0.4 ⟩ \left\langle0.5,0.4\right\rangle ⟨0.5,0.4⟩ | ⟨ 0.6 , 0.2 ⟩ \left\langle0.6,0.2\right\rangle ⟨0.6,0.2⟩ | ⟨ 0.5 , 0.3 ⟩ \left\langle0.5,0.3\right\rangle ⟨0.5,0.3⟩ | ⟨ 0.7 , 0.2 ⟩ \left\langle0.7,0.2\right\rangle ⟨0.7,0.2⟩ |
代码如下:
import numpy as np
## 计算各属性的权重
def calculate_attributions_weight(IIFD_matrix_input):
# IIFD_matrix_input的尺寸为(m×2×n),其中m表示方案数,n表示属性数
# 按公式(3.8)计算各属性的权重
# 初始化保存结果向量
attributions_weight_vector = np.zeros((IIFD_matrix_input.shape[2]))
# 计算分母部分
denominator_part = 0
for j in range(IIFD_matrix_input.shape[2]):
for i in range(IIFD_matrix_input.shape[0]):
for k in range(IIFD_matrix_input.shape[0]):
denominator_part += np.abs(IIFD_matrix_input[i][0][j] - IIFD_matrix_input[k][0][j]) + \
np.abs(IIFD_matrix_input[i][1][j] - IIFD_matrix_input[k][1][j])
# 计算每一个属性的权重
for j in range(IIFD_matrix_input.shape[2]):
tmp_sum = 0
for i in range(IIFD_matrix_input.shape[0]):
for k in range(IIFD_matrix_input.shape[0]):
tmp_sum += (np.abs(IIFD_matrix_input[i][0][j] - IIFD_matrix_input[k][0][j]) + \
np.abs(IIFD_matrix_input[i][1][j] - IIFD_matrix_input[k][1][j]))
attributions_weight_vector[j] = tmp_sum / denominator_part
# 返回权重结果
return attributions_weight_vector
## 计算各方案的综合属性值
def calculate_comprehensive_attribute(IIFD_matrix_input, weight_matrix, type='IFHA'):
# IIFD_matrix_input: np.array, size:(m,2,n),m表示方案数,2表示直觉模糊,n表示属性数
# weight_matrixe: np.array,size:n,n表示属性数
# type: 算子类型,取值“IFHA”或“IFHG”两种情况,分别表示直觉模糊混合平均算子、直觉模糊混合几何算子
# 初始化综合属性矩阵
comprehensive_attribute = np.zeros((IIFD_matrix_input.shape[1],IIFD_matrix_input.shape[0]))
# 按type取值计算综合属性值
if type == 'IFHA':
for i in range(IIFD_matrix_input.shape[0]):
mu = 1
nu = 1
for j in range(IIFD_matrix_input.shape[2]):
mu *= np.power(1-IIFD_matrix_input[i][0][j],weight_matrix[j])
nu *= np.power(IIFD_matrix_input[i][1][j],weight_matrix[j])
comprehensive_attribute[0][i] = 1 - mu
comprehensive_attribute[1][i] = nu
elif type == 'IFHG':
for i in range(IIFD_matrix_input.shape[0]):
mu = 1
nu = 1
for j in range(IIFD_matrix_input.shape[2]):
mu *= np.power(IIFD_matrix_input[i][0][j],weight_matrix[j])
nu *= np.power(1-IIFD_matrix_input[i][1][j],weight_matrix[j])
comprehensive_attribute[0][i] = mu
comprehensive_attribute[1][i] = 1 - nu
else:
print("TypeError: type取值为IFHA或IFHG!")
# 返回结果
return comprehensive_attribute
## 计算各方案的综合得分值并按降序进行排序
def calculate_comprehensive_score_and_rank(comprehensive_attribute):
# comprehensive_attribute:综合属性矩阵,数据类型:np.array,尺寸: (2,m),m表示方案数
scores = comprehensive_attribute[0] - comprehensive_attribute[1]
index = np.argsort(-scores)
return scores,index
# S.0 输入,每一行表示一个方案的各属性评价结果[u_i,v_i]
IFD_matrix_31 = np.array([[[0.7,0.7,0.4,0.7,0.6],[0.3,0.2,0.5,0.3,0.2]],
[[0.6,0.4,0.5,0.7,0.5],[0.2,0.3,0.3,0.1,0.2]],
[[0.8,0.6,0.4,0.2,0.3],[0.1,0.2,0.3,0.6,0.4]],
[[0.5,0.3,0.6,0.3,0.5],[0.4,0.6,0.3,0.4,0.3]],
[[0.6,0.5,0.6,0.5,0.7],[0.4,0.4,0.2,0.3,0.2]]])
# S.1 计算各属性的权重
attributions_weight = calculate_attributions_weight(IIFD_matrix_31)
print('\n'+'+'*80)
print("各属性的权重结果为:\n",attributions_weight)
print('+'*80)
# S.2 计算各方案的IFHA或IFHG综合属性值
comprehensive_attribute_IFHA = calculate_comprehensive_attribute(IIFD_matrix_31, attributions_weight) # 按IFHA计算综合属性值
comprehensive_attribute_IFHG = calculate_comprehensive_attribute(IIFD_matrix_31, attributions_weight, type='IFHG') # 按IFHG计算综合属性值
print('\n'+'+'*80)
print("\n各方案的IIFA综合属性值为:\n",comprehensive_attribute_IFHA)
print("各方案的IIFG综合属性值为:\n",comprehensive_attribute_IFHG)
print('+'*80)
# S.3 计算各方案的直觉模糊数得分值并进行降序排序
comprehensive_scores_IFHA, comprehensive_index_IFHA = calculate_comprehensive_score_and_rank(comprehensive_attribute_IFHA)
comprehensive_scores_IFHG, comprehensive_index_IFHG = calculate_comprehensive_score_and_rank(comprehensive_attribute_IFHG)
print('\n'+'+'*80)
print('\n各方案的IFHA得分值:\n',comprehensive_scores_IFHA)
print('\n各方案的IFHA排序结果:\n',comprehensive_index_IFHA+1)
print('\n各方案的IFHG得分值:\n',comprehensive_scores_IFHG)
print('\n各方案的IFHG排序结果:\n',comprehensive_index_IFHG+1)
print('+'*80)
计算结果如下:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各属性的权重结果为:
[0.1744186 0.23255814 0.13953488 0.29069767 0.1627907 ]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各方案的IIFA综合属性值为:
[[0.65369058 0.56749571 0.49742754 0.42202371 0.5710271 ]
[0.27444759 0.19012692 0.28893394 0.40293897 0.29835377]]
各方案的IIFG综合属性值为:
[[0.63137508 0.54040898 0.38696269 0.39258609 0.55926484]
[0.29589873 0.21226252 0.374723 0.42794271 0.31548227]]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各方案的IFHA得分值:
[0.37924299 0.37736879 0.2084936 0.01908474 0.27267334]
各方案的IFHA排序结果:
[1 2 5 3 4]
各方案的IFHG得分值:
[ 0.33547636 0.32814645 0.01223969 -0.03535663 0.24378257]
各方案的IFHG排序结果:
[1 2 5 3 4]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.2 属性权重信息不完全情形下的直觉模糊多属性决策方法
1.2.1 问题描述
设某多属性决策问题有 m m m个方案 Y i ( i = 1 , 2 , ⋯ , m ) Y_{i}\left(i=1,2,\cdots,m\right) Yi(i=1,2,⋯,m),组成方案集 Y = { Y 1 , Y 2 , ⋯ , Y m } Y = \left\{Y_{1},Y_{2},\cdots,Y_{m}\right\} Y={Y1,Y2,⋯,Ym}评价每个方案的属性(或指标)为 G j ( j = 1 , 2 , ⋯ , n ) G_{j}\left(j=1,2,\cdots,n\right) Gj(j=1,2,⋯,n),记属性集为 G = { G 1 , G 2 , ⋯ , G n } G=\left\{G_{1},G_{2},\cdots,G_{n}\right\} G={G1,G2,⋯,Gn},属性 G j ( j = 1 , 2 , ⋯ , n ) G_{j}\left(j=1,2,\cdots,n\right) Gj(j=1,2,⋯,n)的权重向量 ω = ( ω 1 , ω 2 , ⋯ , ω n ) T \boldsymbol{\omega} = {\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T} ω=(ω1,ω2,⋯,ωn)T, 权 重 信 息 不 完 全 \color{blue}{权重信息不完全} 权重信息不完全,其中 ω ‾ j ≤ ω j ≤ ω ‾ j ( j = 1 , 2 , ⋯ , n ) {\underline{\omega}_{j} \leq \omega_{j} \leq {\overline{\omega}_{j}}}\left(j=1,2,\cdots,n\right) ωj≤ωj≤ωj(j=1,2,⋯,n)。假设方案 Y i ∈ Y Y_{i} \in Y Yi∈Y关于属性 G j ∈ G G_{j} \in G Gj∈G的评价值可以表示为 F ~ i j = ⟨ μ i j , ν i j ⟩ ( i = 1 , 2 , ⋯ , m ; j = 1 , 2 , ⋯ , n ) \tilde{F}_{ij} = \left\langle\mu_{ij},\nu_{ij}\right\rangle\left(i=1,2,\cdots,m;j=1,2,\cdots,n\right) F~ij=⟨μij,νij⟩(i=1,2,⋯,m;j=1,2,⋯,n), F ~ i j \tilde{F}_{ij} F~ij为直觉模糊集,其中 μ i j ∈ [ 0 , 1 ] \mu_{ij} \in [0,1] μij∈[0,1]和 ν i j ∈ [ 0 , 1 ] \nu_{ij} \in [0,1] νij∈[0,1]分别表示方案 Y i ∈ Y Y_{i} \in Y Yi∈Y满足属性 G j ∈ G G_{j} \in G Gj∈G和不满足属性 G j ∈ G G_{j} \in G Gj∈G的程度,且 0 ≤ μ i j + ν i j ≤ 1 0 \leq \mu_{ij} + \nu_{ij} \leq 1 0≤μij+νij≤1。则矩阵 F = ( ⟨ μ i j , ν i j ⟩ ) m × n F = {\left(\left\langle \mu_{ij},\nu_{ij} \right\rangle\right)}_{m×n} F=(⟨μij,νij⟩)m×n为该多属性决策问题的直觉模糊决策矩阵,现在的问题是依据直觉模糊决策矩阵 F F F, 如 何 通 过 确 定 属 性 权 重 向 量 ω = ( ω 1 , ω 2 , ⋯ , ω n ) T , 得 到 一 个 有 效 的 决 策 分 析 方 法 对 所 有 方 案 进 行 优 劣 排 序 \color{red}{如何通过确定属性权重向量\boldsymbol{\omega} = {\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T},得到一个有效的决策分析方法对所有方案进行优劣排序} 如何通过确定属性权重向量ω=(ω1,ω2,⋯,ωn)T,得到一个有效的决策分析方法对所有方案进行优劣排序。
1.2.2 属性权重的确定方法
确定属性权重的目标是使所有方案与其他方案的总离差最大在权重满足条件 ω ‾ j ≤ ω j ≤ ω ‾ j ( j = 1 , 2 , ⋯ , n ) {\underline{\omega}_{j} \leq \omega_{j} \leq {\overline{\omega}_{j}}}\left(j=1,2,\cdots,n\right) ωj≤ωj≤ωj(j=1,2,⋯,n)的情况下,求解权重向量就等价于求解以下最优化模型:
{ max D ( ω ) = ∑ j = 1 n D j ( ω ) = 1 2 ∑ j = 1 n ∑ i = 1 m ∑ k = 1 m ω j ( ∣ μ i j − μ k j ∣ + ∣ ν i j − ν k j ∣ ) s . t . ω ‾ j ≤ ω j ≤ ω ‾ j ∑ j = 1 n ω j 2 = 1 , ω j ≥ 0 ( j = 1 , 2 , ⋯ , n ) (1.11) \color{blue} { \left\{ \begin{aligned} & \max D\left(\omega\right) = \sum_{j=1}^{n} D_{j}\left(\omega\right) = \frac{1}{2}\sum_{j=1}^{n}\sum_{i=1}^{m}\sum_{k=1}^{m}\omega_{j}\left(|\mu_{ij} - \mu_{kj}| + |\nu_{ij} - \nu_{kj}|\right) \\ & s.t.{\underline{\omega}_{j} \leq \omega_{j} \leq {\overline{\omega}_{j}}} \sum_{j=1}^{n}\omega_{j}^{2} = 1,\omega_{j} \geq 0 \left(j=1,2,\cdots,n\right) \\ \end{aligned} \right. \tag{1.11} } ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧maxD(ω)=j=1∑nDj(ω)=21j=1∑ni=1∑mk=1∑mωj(∣μij−μkj∣+∣νij−νkj∣)s.t.ωj≤ωj≤ωjj=1∑nωj2=1,ωj≥0(j=1,2,⋯,n)(1.11)
求解最优化模型 ( 1.11 ) (1.11) (1.11),可得属性 G j ( j = 1 , 2 , ⋯ , n ) G_{j}\left(j=1,2,\cdots,n\right) Gj(j=1,2,⋯,n)的权重向量 ω = ( ω 1 , ω 2 , ⋯ , ω n ) T \boldsymbol{\omega} = {\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T} ω=(ω1,ω2,⋯,ωn)T。
1.2.3 属性权重不完全情形下的直觉模糊多属性决策步骤与实例分析
根据以上分析,属性权重不完全情形下基于离差最大化的直觉模糊多属性决策的步骤可归纳如下。
S.1 确定多属性决问题的方集 Y = { Y 1 , Y 2 , ⋯ , Y m } Y = \left\{Y_{1},Y_{2},\cdots,Y_{m}\right\} Y={Y1,Y2,⋯,Ym}和属性集 G = { G 1 , G 2 , ⋯ , G n } G=\left\{G_{1},G_{2},\cdots,G_{n}\right\} G={G1,G2,⋯,Gn}。
S.2 获取多属性决策问题中方案 Y i ∈ Y Y_{i} \in Y Yi∈Y关于属性 G j ∈ G G_{j} \in G Gj∈G的直觉模糊特征信息,构建直觉模糊决策矩阵 F F F。
S.3 利用式 ( 1.11 ) (1.11) (1.11)确定各属性的权重,得到属性权重向量 ω = ( ω 1 , ω 2 , ⋯ , ω n ) T \boldsymbol{\omega}={\left(\omega_{1},\omega_{2},\cdots,\omega_{n}\right)}^{T} ω=(ω1,ω2,⋯,ωn)T。
S.4 利用式
Y
i
Y_{i}
Yi或计算方案的综合属性值
d
~
i
\tilde{d}_{i}
d~i:
d
~
i
=
⟨
μ
i
,
ν
i
⟩
=
IFWA
ω
(
A
~
1
,
A
~
2
,
⋯
,
A
~
n
)
=
⟨
1
−
∏
j
=
1
n
(
1
−
μ
j
)
ω
j
,
∏
j
=
1
n
(
ν
j
)
ω
j
⟩
\tilde{d}_{i} = \left\langle\mu_{i},\nu_{i}\right\rangle = \operatorname{IFWA}_{\omega}\left(\tilde{A}_{1},\tilde{A}_{2},\cdots,\tilde{A}_{n}\right) = \left\langle 1 - \prod_{j=1}^{n}{\left(1 - \mu_{j}\right)}^{\omega_{j}},\prod_{j=1}^{n}{\left(\nu_{j}\right)}^{\omega_{j}} \right\rangle
d~i=⟨μi,νi⟩=IFWAω(A~1,A~2,⋯,A~n)=⟨1−j=1∏n(1−μj)ωj,j=1∏n(νj)ωj⟩
d
~
i
=
⟨
μ
i
,
ν
i
⟩
=
IFWG
ω
(
A
~
1
,
A
~
2
,
⋯
,
A
~
n
)
=
⟨
∏
j
=
1
n
(
μ
j
)
ω
j
,
1
−
∏
j
=
1
n
(
1
−
ν
j
)
ω
j
⟩
\tilde{d}_{i} = \left\langle\mu_{i},\nu_{i}\right\rangle = \operatorname{IFWG}_{\omega}\left(\tilde{A}_{1},\tilde{A}_{2},\cdots,\tilde{A}_{n}\right) = \left\langle \prod_{j=1}^{n}{\left(\mu_{j}\right)}^{\omega_{j}},1 - \prod_{j=1}^{n}{\left(1 - \nu_{j}\right)}^{\omega_{j}} \right\rangle
d~i=⟨μi,νi⟩=IFWGω(A~1,A~2,⋯,A~n)=⟨j=1∏n(μj)ωj,1−j=1∏n(1−νj)ωj⟩
S.5 利用觉模糊数的得分数和精确度公式,计算方案 Y i Y_{i} Yi的综合属性值 d ~ i \tilde{d}_{i} d~i的得分值 s ( d ~ i ) s\left(\tilde{d}_{i}\right) s(d~i)和精确值 h ( d ~ i ) h\left(\tilde{d}_{i}\right) h(d~i),确定 d ~ i ( i = 1 , 2 , ⋯ , m ) \tilde{d}_{i}\left(i=1,2,\cdots,m\right) d~i(i=1,2,⋯,m)的不增排列顺序,并利用排序结果对方案 Y i ( i = 1 , 2 , ⋯ , m ) Y_{i}\left(i=1,2,\cdots,m\right) Yi(i=1,2,⋯,m)进行优劣排序。
示 例 1.2 \color{red}{示例1.2} 示例1.2
考虑地方政府公财政支绩效评价问题。公共财政支出绩效评价是对财政支出活动的经济性、效率性和有效性进行评价,可以从教育支出绩效( G 1 G_1 G1)、养老支出绩效( G 2 G_2 G2)、就业支出绩效( G 3 G_3 G3)和基础设施建设支出绩效( G 4 G_4 G4)四个维度进行评估国假设通过调研与专家咨询可以获得五个地区 Y i ( i = 1 , 2 , 3 , 4 , 5 ) Y_i\left(i=1,2,3,4,5\right) Yi(i=1,2,3,4,5)关于属性 G j ( j = 1 , 2 , 3 , 4 ) G_j\left(j=1,2,3,4\right) Gj(j=1,2,3,4)的直觉模糊评价结果,如表3-2所示。
G 1 G_{1} G1 | G 2 G_{2} G2 | G 3 G_{3} G3 | G 4 G_{4} G4 | |
---|---|---|---|---|
Y 1 Y_{1} Y1 | ⟨ 0.51 , 0.44 ⟩ \left\langle0.51,0.44\right\rangle ⟨0.51,0.44⟩ | ⟨ 0.45 , 0.32 ⟩ \left\langle0.45,0.32\right\rangle ⟨0.45,0.32⟩ | ⟨ 0.40 , 0.55 ⟩ \left\langle0.40,0.55\right\rangle ⟨0.40,0.55⟩ | ⟨ 0.35 , 0.50 ⟩ \left\langle0.35,0.50\right\rangle ⟨0.35,0.50⟩ |
Y 2 Y_{2} Y2 | ⟨ 0.45 , 0.50 ⟩ \left\langle0.45,0.50\right\rangle ⟨0.45,0.50⟩ | ⟨ 0.36 , 0.45 ⟩ \left\langle0.36,0.45\right\rangle ⟨0.36,0.45⟩ | ⟨ 0.45 , 0.40 ⟩ \left\langle0.45,0.40\right\rangle ⟨0.45,0.40⟩ | ⟨ 0.70 , 0.20 ⟩ \left\langle0.70,0.20\right\rangle ⟨0.70,0.20⟩ |
Y 3 Y_{3} Y3 | ⟨ 0.65 , 0.30 ⟩ \left\langle0.65,0.30\right\rangle ⟨0.65,0.30⟩ | ⟨ 0.55 , 0.40 ⟩ \left\langle0.55,0.40\right\rangle ⟨0.55,0.40⟩ | ⟨ 0.50 , 0.42 ⟩ \left\langle0.50,0.42\right\rangle ⟨0.50,0.42⟩ | ⟨ 0.45 , 0.50 ⟩ \left\langle0.45,0.50\right\rangle ⟨0.45,0.50⟩ |
Y 4 Y_{4} Y4 | ⟨ 0.60 , 0.25 ⟩ \left\langle0.60,0.25\right\rangle ⟨0.60,0.25⟩ | ⟨ 0.75 , 0.15 ⟩ \left\langle0.75,0.15\right\rangle ⟨0.75,0.15⟩ | ⟨ 0.65 , 0.25 ⟩ \left\langle0.65,0.25\right\rangle ⟨0.65,0.25⟩ | ⟨ 0.50 , 0.35 ⟩ \left\langle0.50,0.35\right\rangle ⟨0.50,0.35⟩ |
Y 5 Y_{5} Y5 | ⟨ 0.55 , 0.30 ⟩ \left\langle0.55,0.30\right\rangle ⟨0.55,0.30⟩ | ⟨ 0.50 , 0.35 ⟩ \left\langle0.50,0.35\right\rangle ⟨0.50,0.35⟩ | ⟨ 0.55 , 0.15 ⟩ \left\langle0.55,0.15\right\rangle ⟨0.55,0.15⟩ | ⟨ 0.55 , 0.20 ⟩ \left\langle0.55,0.20\right\rangle ⟨0.55,0.20⟩ |
如果属性 G j ( j = 1 , 2 , 3 , 4 ) G_{j}\left(j=1,2,3,4\right) Gj(j=1,2,3,4)的权重 ω j ( j = 1 , 2 , 3 , 4 ) \omega_{j}\left(j=1,2,3,4\right) ωj(j=1,2,3,4)除了满足 ∑ j = 1 n = 1 \sum_{j=1}^{n}=1 ∑j=1n=1还满足以下条件:
0.15 ≤ ω 1 ≤ 0.20 , 0.20 ≤ ω 2 ≤ 0.24 , 0.25 ≤ ω 3 ≤ 0.35 , 0.30 ≤ ω 4 ≤ 0.40 0.15≤\omega_{1}≤0.20,0.20≤\omega_{2}≤0.24,0.25≤\omega_{3}≤0.35,0.30≤\omega_{4}≤0.40 0.15≤ω1≤0.20,0.20≤ω2≤0.24,0.25≤ω3≤0.35,0.30≤ω4≤0.40
下面对五个地区 Y i ( i = 1 , 2 , 3 , 4 , 5 ) Y_i\left(i=1,2,3,4,5\right) Yi(i=1,2,3,4,5)的政府公共财政支出绩效进行优劣排序。
代码如下:
import numpy as np
from scipy.optimize import linprog,OptimizeResult
## 计算各属性权重的系数
def calculate_attributions_weight_coefficient(IFD_matrix_input):
# IFD_matrix_input:直觉模糊矩阵,尺寸为(m,2,n),其中m表示方案数、n表示属性数
weight_coefficient = np.zeros((IFD_matrix_input.shape[2]))
for j in range(IFD_matrix_input.shape[2]):
tmp_weight = 0
for i in range(IFD_matrix_input.shape[0]):
for k in range(IFD_matrix_input.shape[0]):
tmp_weight += np.abs(IFD_matrix_input[i][0][j] - IFD_matrix_input[k][0][j]) + \
np.abs(IFD_matrix_input[i][1][j] - IFD_matrix_input[k][1][j])
weight_coefficient[j] = tmp_weight / 2
return weight_coefficient
## 计算各属性的权重
def calculate_attributions_weight(IIFD_matrix_input):
# IIFD_matrix_input的尺寸为(m×2×n),其中m表示方案数,n表示属性数
# 按公式(3.11)计算各属性的权重
# 初始化保存结果向量
attributions_weight_vector = np.zeros((IIFD_matrix_input.shape[2]))
# 计算分母部分
denominator_part = 0
for j in range(IIFD_matrix_input.shape[2]):
for i in range(IIFD_matrix_input.shape[0]):
for k in range(IIFD_matrix_input.shape[0]):
denominator_part += np.abs(IIFD_matrix_input[i][0][j] - IIFD_matrix_input[k][0][j]) + \
np.abs(IIFD_matrix_input[i][1][j] - IIFD_matrix_input[k][1][j])
# 计算每一个属性的权重
for j in range(IIFD_matrix_input.shape[2]):
tmp_sum = 0
for i in range(IIFD_matrix_input.shape[0]):
for k in range(IIFD_matrix_input.shape[0]):
tmp_sum += (np.abs(IIFD_matrix_input[i][0][j] - IIFD_matrix_input[k][0][j]) + \
np.abs(IIFD_matrix_input[i][1][j] - IIFD_matrix_input[k][1][j]))
attributions_weight_vector[j] = tmp_sum / denominator_part
# 返回权重结果
return attributions_weight_vector
## 计算各方案的综合属性值
def calculate_comprehensive_attribute(IIFD_matrix_input, weight_matrix, type='IFHA'):
# IIFD_matrix_input: np.array, size:(m,2,n),m表示方案数,2表示直觉模糊,n表示属性数
# weight_matrixe: np.array,size:n,n表示属性数
# type: 算子类型,取值“IFHA”或“IFHG”两种情况,分别表示直觉模糊混合平均算子、直觉模糊混合几何算子
# 初始化综合属性矩阵
comprehensive_attribute = np.zeros((IIFD_matrix_input.shape[1],IIFD_matrix_input.shape[0]))
# 按type取值计算综合属性值
if type == 'IFHA':
for i in range(IIFD_matrix_input.shape[0]):
mu = 1
nu = 1
for j in range(IIFD_matrix_input.shape[2]):
mu *= np.power(1-IIFD_matrix_input[i][0][j],weight_matrix[j])
nu *= np.power(IIFD_matrix_input[i][1][j],weight_matrix[j])
comprehensive_attribute[0][i] = 1 - mu
comprehensive_attribute[1][i] = nu
elif type == 'IFHG':
for i in range(IIFD_matrix_input.shape[0]):
mu = 1
nu = 1
for j in range(IIFD_matrix_input.shape[2]):
mu *= np.power(IIFD_matrix_input[i][0][j],weight_matrix[j])
nu *= np.power(1-IIFD_matrix_input[i][1][j],weight_matrix[j])
comprehensive_attribute[0][i] = mu
comprehensive_attribute[1][i] = 1 - nu
else:
print("TypeError: type取值为IFHA或IFHG!")
# 返回结果
return comprehensive_attribute
## 计算各方案的综合得分值并按降序进行排序
def calculate_comprehensive_score_and_rank(comprehensive_attribute):
# comprehensive_attribute:综合属性矩阵,数据类型:np.array,尺寸: (2,m),m表示方案数
scores = comprehensive_attribute[0] - comprehensive_attribute[1]
index = np.argsort(-scores)
return scores,index
# S.0 输入,每一行表示一个方案的各属性评价结果[u_i,v_i]
IFD_matrix_32 = np.array([[[0.51,0.45,0.40,0.35],[0.44,0.32,0.55,0.50]],
[[0.45,0.36,0.45,0.70],[0.50,0.45,0.40,0.20]],
[[0.65,0.55,0.50,0.45],[0.30,0.40,0.42,0.50]],
[[0.60,0.75,0.65,0.50],[0.25,0.15,0.25,0.35]],
[[0.55,0.50,0.55,0.55],[0.30,0.35,0.15,0.20]]])
# S.1 计算各属性权重的系数
weight_coefficient = calculate_attributions_weight_coefficient(IFD_matrix_32)
print('\n'+'+'*80)
print("各属性权重的系数为:\n",weight_coefficient)
print('+'*80)
# S.2 求解最优属性权重
A_eq = np.array([[1,1,1,1]])
B_eq = np.array([1])
boundaries = np.array([[0.15,0.20],[0.20,0.24],[0.25,0.35],[0.30,0.40]])
weight_callback = linprog(weight_coefficient,A_eq=A_eq,b_eq=B_eq,bounds=((0.15,0.20),(0.20,0.24),(0.25,0.35),(0.30,0.40))) # 线性规划求解
weight = weight_callback.x # 获得计算结果
print('\n'+'+'*80)
print("各属性权重为:\n",weight)
print('+'*80)
# S.3 计算各方案的IFHA或IFHG综合属性值
comprehensive_attribute_IFHA = calculate_comprehensive_attribute(IFD_matrix_32, weight) # 按IFHA计算综合属性值
comprehensive_attribute_IFHG = calculate_comprehensive_attribute(IFD_matrix_32, weight, type='IFHG') # 按IFHG计算综合属性值
print('\n'+'+'*80)
print("\n各方案的IIFA综合属性值为:\n",comprehensive_attribute_IFHA)
print("各方案的IIFG综合属性值为:\n",comprehensive_attribute_IFHG)
print('+'*80)
# S.4 计算各方案的直觉模糊数得分值并进行降序排序
comprehensive_scores_IFHA, comprehensive_index_IFHA = calculate_comprehensive_score_and_rank(comprehensive_attribute_IFHA)
comprehensive_scores_IFHG, comprehensive_index_IFHG = calculate_comprehensive_score_and_rank(comprehensive_attribute_IFHG)
print('\n'+'+'*80)
print('\n各方案的IFHA得分值:\n',comprehensive_scores_IFHA)
print('\n各方案的IFHA排序结果:\n',comprehensive_index_IFHA+1)
print('\n各方案的IFHG得分值:\n',comprehensive_scores_IFHG)
print('\n各方案的IFHG排序结果:\n',comprehensive_index_IFHG+1)
print('+'*80)
计算结果如下:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各属性权重的系数为:
[2.26 3.12 3.14 3.4 ]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各属性权重为:
[0.2 0.24 0.26 0.3 ]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各方案的IIFA综合属性值为:
[[0.42201097 0.52446071 0.53288306 0.63096607 0.53847598]
[0.44886096 0.34946976 0.40893517 0.24464408 0.23019363]]
各方案的IIFG综合属性值为:
[[0.41499327 0.48698969 0.5223549 0.61191828 0.53756186]
[0.46424529 0.38237144 0.41929149 0.25960627 0.24717379]]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各方案的IFHA得分值:
[-0.02684998 0.17499095 0.12394788 0.38632199 0.30828234]
各方案的IFHA排序结果:
[4 5 2 3 1]
各方案的IFHG得分值:
[-0.04925202 0.10461825 0.10306341 0.35231201 0.29038807]
各方案的IFHG排序结果:
[4 5 2 3 1]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++