在数学建模中,我们经常使用层次分析法、熵权法和 TOPSIS 等方法来解决多准则决策问题。这些方法各有优势,但也各有局限性。在实际应用中,我们往往需要将它们结合起来,以充分发挥它们的优势,提高决策的准确性和可靠性。本文将介绍如何将这三种方法进行完美融合,以解决复杂的多准则决策问题。
决策矩阵的构造及标准化处理
假定评价对象矩阵为
P
P
P ,令
P
=
[
p
1
,
p
2
,
p
3
,
⋯
,
p
n
]
P = \left\lbrack p_{1},\ p_{2},\ p_{3},\cdots,p_{n} \right\rbrack
P=[p1, p2, p3,⋯,pn] ,其中
p
1
,
p
2
,
p
3
,
⋯
,
p
n
p_{1},\ p_{2},\ p_{3},\cdots,p_{n}
p1, p2, p3,⋯,pn 表示由各评价指标组成的评价指标等级。评价对象矩阵
P
P
P 中每个评价对象均包含 n 个待测评价指标
R
=
[
r
1
,
r
2
,
r
3
,
⋯
,
r
m
]
R = \left\lbrack r_{1},\ r_{2},\ r_{3},\cdots,r_{m} \right\rbrack
R=[r1, r2, r3,⋯,rm] ,其中
r
1
,
r
2
,
r
3
,
⋯
,
r
m
r_{1},\ r_{2},\ r_{3},\cdots,r_{m}
r1, r2, r3,⋯,rm 分别表示为第
1, 2, 3,
…
, n
\text{1, 2, 3, …, n}
1, 2, 3, …, n 个评价指标,根据评价对象矩阵
P
P
P 建立的初始决策矩阵为:
P
=
(
p
i
j
)
m
×
n
=
[
p
11
p
12
⋯
p
1
n
p
21
p
22
⋯
p
2
n
⋮
⋮
⋯
⋮
p
m
1
p
m
2
⋯
p
m
n
]
P=(p_{ij})_{m\times n}=\begin{bmatrix}p_{11}&p_{12}&\cdots&p_{1n}\\p_{21}&p_{22}&\cdots&p_{2n}\\\vdots&\vdots&\cdots&\vdots\\p_{m1}&p_{m2}&\cdots&p_{mn}\end{bmatrix}
P=(pij)m×n=
p11p21⋮pm1p12p22⋮pm2⋯⋯⋯⋯p1np2n⋮pmn
式中: p ij (i=1, 2, 3, ⋯,m;j=1, 2, 3, ⋯,n) \text{p}_{\text{ij}}\text{(i=1, 2, 3, }\text{⋯}\text{,m}\text{;}\text{j=1, 2, 3, }\text{⋯}\text{,n)} pij(i=1, 2, 3, ⋯,m;j=1, 2, 3, ⋯,n) 表示为第 i 个边坡的第 j 个评价指标初始判断值。 初始决策矩阵中各项评价指标具体可分为越大越优型指标与越大越劣型两种,其中越大越优型指标与最终评价结果之间具有正相关关系,越大越劣型反之。以下为两种不同类型评价指标的标准化处理公式:
Z i j = r i j m a x ( r i j ) ( 越大越优型指标 ) Z i j = m a x ( r i j ) + m i n ( r i j ) − r i j m a x ( r i j ) ( 越大越劣型指标 ) Z_{ij}=\dfrac{r_{ij}}{max(r_{ij})}(越大越优型指标)\\ Z_{ij}=\dfrac{max(r_{ij})+min(r_{ij})-r_{ij}}{max(r_{ij})}(越大越劣型指标) Zij=max(rij)rij(越大越优型指标)Zij=max(rij)max(rij)+min(rij)−rij(越大越劣型指标)
评价指标权重的选取
不同评价指标所占的权重不同,一些指标对评价结果的影响较大,有些指标影响则相对较小。为准确地反映出不同指标对评价结果的影响程度,首先需要对决策矩阵中各指标进行赋权处理,常见赋权方法主要包括主观赋权方法与客观赋权方法两种。为了科学地分配评价指标的权重,我们需要考虑主观和客观两方面的因素。主观权重可以通过改进层次分析法计算,而客观权重则可通过熵权法来确定。下面,我们将详细讨论这两种权重的计算方法,并进一步介绍如何将二者结合,以确保决策的公正性和客观性。
改进层次分析法计算主观权重 层次分析法是一种定量分析决策问题的方法,其基本思想是将一个复杂的问题分解成若干层次,通过对各层次元素之间的比较和层次结构的划分,最终得到各个因素的权重,以此来评估不同方案的优劣。传统层次划分尺度标准如表 3 所示。
表 3 层次分析评价尺度表
重要程度标度 | 定义 | 内容 |
---|---|---|
1 | 同等重要 | 两关联因素重要程度相同 |
3 | 稍微重要 | 双因素对比,前者稍微重要 |
5 | 比较重要 | 双因素对比,前者明显重要 |
7 | 明显重要 | 双因素对比,前者非常重要 |
9 | 绝对重要 | 双因素对比,前者绝对重要 |
2、4、6、8 | 相邻尺度中间值 | 上述各重要程度标度间的缓冲值 |
1/3、1/5、1/7、1/9 | 以上各标度的倒数形式 | 若因素 i 与因素 j 的重要性之比为 aij,那么因素 j 与因素 i 重要性之比为 aji = 1/aij |
传统层次分析法评价过程存在一定片面性与局限性,在对前后两种指标进行分析比对时,其评价结果过分依赖于评价者的主观倾向,因此通过传统层次分析法得到的赋权结果具有较强的主观倾向性与盲目性。为减小主观倾向对于各指标赋权结果的影响,本文采用 3 标度法来对传统层次分析法进行改进,如表 4 所示。通过改进层次分析法计算得到的结果更为真实合理,且无需进行一致性检验。
表 4 改进层次分析评价尺度表
重要程度标度 | 定义 | 内容 |
---|---|---|
1 | 前者更为重要 | 若指标 i 与指标 j 的重要性之比为 aij,则 i 比 j 重要 |
0 | 两者同等重要 | 若指标 i 与指标 j 的重要性之比为 aij,则 i 与 j 相同重要 |
-1 | 后者更为重要 | 若指标 i 与指标 j 的重要性之比为 aij,则 i 比 j 不重要 |
根据改进层次分析评价尺度表建立判断矩阵: A = [ a 11 a 12 . . . a 1 j a 21 a 22 . . . a 2 j ⋮ ⋮ ⋱ ⋮ a i 1 a i 2 . . . a i j ] R = [ r 11 r 12 . . . r 1 j r 21 r 22 . . . r 2 j ⋮ ⋮ ⋱ ⋮ r i 1 r i 2 . . . r i j ] B = [ b 11 b 12 . . . b 1 j b 21 b 22 . . . b 2 j ⋮ ⋮ ⋱ ⋮ b i 1 b i 2 . . . b i j ] \begin{gathered}A=\begin{bmatrix}a_{11}&a_{12}&...&a_{1j}\\a_{21}&a_{22}&...&a_{2j}\\\vdots&\vdots&\ddots&\vdots\\a_{i1}&a_{i2}&...&a_{ij}\end{bmatrix}\\R=\begin{bmatrix}r_{11}&r_{12}&...&r_{1j}\\r_{21}&r_{22}&...&r_{2j}\\\vdots&\vdots&\ddots&\vdots\\r_{i1}&r_{i2}&...&r_{ij}\end{bmatrix}\\B=\begin{bmatrix}b_{11}&b_{12}&...&b_{1j}\\b_{21}&b_{22}&...&b_{2j}\\\vdots&\vdots&\ddots&\vdots\\b_{i1}&b_{i2}&...&b_{ij}\end{bmatrix}\end{gathered} A= a11a21⋮ai1a12a22⋮ai2......⋱...a1ja2j⋮aij R= r11r21⋮ri1r12r22⋮ri2......⋱...r1jr2j⋮rij B= b11b21⋮bi1b12b22⋮bi2......⋱...b1jb2j⋮bij
式中:A 为初始判断矩阵, R 为 A 的最优传递矩阵,B 为最终判断矩阵。矩阵 R 中各元素计算依据为:
r i j = 1 k ∑ k = 1 n ( a i k − a k j ) r_{ij}=\dfrac1k\sum_{k=1}^n(a_{ik}-a_{kj}) rij=k1∑k=1n(aik−akj)
b i j = exp ( r i j ) b_{ij}=\exp{(r_{ij}}) bij=exp(rij)
对最优传递矩阵 R 进行归一化处理,得到主观权重 β j \beta_j βj
L j ∗ = ( ∏ i = 1 m r i j ) 1 m L_j^*=(\prod_{i=1}^mr_{ij})^{\dfrac{1}{m}} Lj∗=(∏i=1mrij)m1 β j = ∏ j = 1 n L j ∗ n ∑ j = 1 n ∏ j = 1 n L j ∗ n \beta_j=\dfrac{\sqrt[n]{\prod_{j=1}^nL_j^*}}{\sum_{j=1}^n\sqrt[n]{\prod_{j=1}^nL_j^*}} βj=∑j=1nn∏j=1nLj∗n∏j=1nLj∗
熵权法计算客观权重
仅采用层次分析法来对评价指标进行赋权时会存在一定的主观倾向性,从而导致评价结果受到较强的主观因素干扰,严重时会影响到评价模型及最终评价结果的真实性。为了避免这一问题,本文采用熵权法来确定评价模型的客观权重大小,以减小主观因素的影响。
熵权法是一种基于信息熵理论的多目标综合评价方法,适用于各指标之间存在相互影响、不确定性较大的情况下进行综合评价。该方法具有计算简便、结果可靠、应用灵活等优点具体实现方法如下:
首先计算不同评价指标对应特征比重 u i j u_{ij} uij : u i j = X i j ′ ∑ i = 1 n X i j ′ u_{ij}=\dfrac{X_{ij}^{\prime}}{\sum_{i=1}^nX_{ij}^{\prime}} uij=∑i=1nXij′Xij′
随后,通过熵权法确定各评价指标的信息熵 E j E_j Ej :
E j = ∑ i = 1 n u i j ln u i j − l n n E_{j} = \dfrac{\sum_{i = 1}^{n}{u_{ij}\ln u_{ij}}}{- lnn} Ej=−lnn∑i=1nuijlnuij
信息熵的大小能够反映不同评价指标在整体系统中所占比重,指标对应信息熵越大,则说明该指标对系统评价产生的影响越大,反之,则说明该指标对整体系统的影响越小。 确定各评价指标的客观权重 α j \alpha_{j} αj :
α j = 1 − E j ∑ j = 1 n ( 1 − E j ) \alpha_{j} = \dfrac{1 - E_{j}}{\sum_{j = 1}^{n}{(1 - E_{j})}} αj=∑j=1n(1−Ej)1−Ej
主客观权重的组合
为了平衡主观判断与客观数据,我们将改进层次分析法得到的主观权重与熵权法得到的客观权重进行组合: 得到主-客观组合权重 γ j {\ \gamma}_{j} γj
γ j = α j β j ∑ j = 1 n α j β j {\ \gamma}_{j} = \dfrac{\alpha_{j}\beta_{j}}{\sum_{j = 1}^{n}{\alpha_{j}\beta_{j}}} γj=∑j=1nαjβjαjβj
在主-客观组合权重的基础上,确定加权标准化决策矩阵
F
=
(
f
i
j
)
m
×
n
=
[
γ
1
z
11
γ
2
z
12
…
γ
n
z
1
n
γ
1
z
21
γ
2
z
22
…
γ
n
z
2
n
⋮
⋮
⋱
⋮
γ
1
z
m
1
γ
2
z
m
2
…
γ
n
z
m
n
]
F = {(f_{ij})}_{m \times n} = \begin{bmatrix} {{\ \gamma}_{1}z}_{11} & {{\ \gamma}_{2}z}_{12} & \ldots & {{\ \gamma}_{n}z}_{1n} \\ {{\ \gamma}_{1}z}_{21} & {{\ \gamma}_{2}z}_{22} & \ldots & {{\ \gamma}_{n}z}_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ {{\ \gamma}_{1}z}_{m1} & {{\ \gamma}_{2}z}_{m2} & \ldots & {{\ \gamma}_{n}z}_{mn} \end{bmatrix}
F=(fij)m×n=
γ1z11 γ1z21⋮ γ1zm1 γ2z12 γ2z22⋮ γ2zm2……⋱… γnz1n γnz2n⋮ γnzmn
TOPSIS 方法评价
在获得加权标准化决策矩阵后, 我们可以应用 TOPSIS(Technique for Order Preference by Similarity to an Ideal Solution)方法来进行最终的评价。TOPSIS 方法的核心思想是通过计算每个方案与理想解和负理想解的距离, 来确定最优方案。
确定理想解和负理想解
首先, 我们需要确定正理想解和负理想解。通过加权后标准化决策矩阵计算正理想解的公式如下:
F + = ( z 1 + , z 2 + , z 3 + , ⋯ , z n + ) = { max z i 1 , m a x z i 2 , m a x z i 3 , ⋯ , m a x z i n } F^{+} = \left( z_{1}^{+},\ z_{2}^{+},z_{3}^{+}\ ,\cdots,z_{n}^{+} \right) = \left\{ \max z_{i1},\ maxz_{i2},\ maxz_{i3},\ \cdots,\ maxz_{in}\ \right\} F+=(z1+, z2+,z3+ ,⋯,zn+)={maxzi1, maxzi2, maxzi3, ⋯, maxzin }
其中, 对于越大越优型指标集 J ∗ 1 {\ J}*{1} J∗1 取各待评方案中该指标的最大值, 对于越大越劣型指标集 J ∗ 2 {\ J}*{2} J∗2 取各待评方案中评价指标的最小值。
同理, 负理想解的计算公式为:
F − = ( z 1 − , z 2 − , z 3 − , ⋯ , z n − ) = { m i n z i 1 , m i n z i 2 , m i n z i 3 , ⋯ , m i n z i n } F^{-} = \left( z_{1}^{-},\ z_{2}^{-},z_{3}^{-}\ ,\cdots,z_{n}^{-} \right) = \left\{ minz_{i1},\ minz_{i2},\ minz_{i3},\ \cdots,\ minz_{in}\ \right\} F−=(z1−, z2−,z3− ,⋯,zn−)={minzi1, minzi2, minzi3, ⋯, minzin }
对于越大越优型指标集 J ∗ 1 {\ J}*{1} J∗1 取各待评方案中该指标的最小值, 对于越大越劣型指标集 J ∗ 2 {\ J}*{2} J∗2 取各待评方案中该指标的最大值。
计算欧氏距离
接下来, 我们需要计算每个待评方案与正理想解和负理想解之间的距离。这里我们采用欧几里得范数作为距离的测度。每种待评方案与正、负理想解之间的距离计算公式为:
D i + = ∑ j = 1 n ( f i j − f i j + ) 2 , i = 1 , 2 , 3 , ⋯ , m D_{i}^{+} = \sqrt{\sum_{j = 1}^{n}{(f_{ij} - f_{ij}^{+})}^{2}\ },\ i = 1,\ 2,\ 3,\cdots,\ m Di+=∑j=1n(fij−fij+)2 , i=1, 2, 3,⋯, m
D i − = ∑ j = 1 n ( f i j − f i j − ) 2 , i = 1 , 2 , 3 , ⋯ , m D_{i}^{-} = \sqrt{\sum_{j = 1}^{n}{(f_{ij} - f_{ij}^{-})}^{2}},i = 1,\ 2,\ 3,\cdots,\ m Di−=∑j=1n(fij−fij−)2,i=1, 2, 3,⋯, m
式中: D i + D_{i}^{+} Di+ 、 D i − D_{i}^{-} Di− 分别表示待评方案与正、负理想解之间的欧式距离。
计算相对贴近度
最后, 我们计算每个待评方案的相对贴近度, 这个指标能够反映待评方案靠近正理想解、远离负理想解的程度:
d i + = D i − D i + + D i − , 1 ≥ d i + ≥ 0 , i = 1 , 2 , 3 , ⋯ , m d_{i}^{+} = \dfrac{D_{i}^{-}}{{D_{i}^{+} + D}_{i}^{-}},\ 1 \geq d_{i}^{+} \geq 0,\ i = 1,\ 2,\ 3,\cdots,\ m di+=Di++Di−Di−, 1≥di+≥0, i=1, 2, 3,⋯, m
相对贴近度 d i + d_{i}^{+} di+ 越大, 则说明待评方案与正理想解距离越近, 即方案越优。具体来说:
- 当 d i + = 1 d_{i}^{+}= 1 di+=1 时, 待评方案被认定为正理想解
- 当 d i + = 0 d_{i}^{+}= 0 di+=0 时, 待评方案被认定为负理想解
- 当 0 < d i + < 1 0 < d_{i}^{+} < 1 0<di+<1 时, 待评方案介于正、负理想解之间
方案排序与评价
根据计算得到的相对贴近度 d i + d_{i}^{+} di+ , 我们可以对所有待评方案进行排序。相对贴近度越大, 说明该方案越接近理想状态, 也就是越优。
在实际应用中, 我们还可以根据具体问题设定阈值, 将待评方案划分为不同的等级。
总结
改进层次分析法的主要优点在于能够灵活应对复杂的决策结构,并通过改进后的标度系统减少主观偏差。然而,其局限性在于仍然依赖于专家的判断,存在一定的主观性。为此,我们引入了熵权法,弥补主观性可能带来的不足。熵权法的优势在于能够客观地反映数据的内在特征,但它无法解决多维度决策中主观偏好的问题。因此,二者结合可以更好地平衡主客观因素,实现更加全面的评价。
通过结合改进层次分析法、熵权法与 TOPSIS 方法, 我们构建了一个全面、客观且灵活的多准则决策模型。这个模型不仅平衡了主观判断与客观数据, 还能有效处理定性和定量指标, 为复杂的决策问题提供了有力的解决方案。
在实际应用中, 这种方法组合可以广泛用于项目评估、供应商选择、产品设计等多个领域。它为决策者提供了一个科学、系统的决策支持工具, 有助于在复杂的决策环境中做出更加明智和合理的选择。
import numpy as np
import pandas as pd
data = {
'指标': ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11', 'x12', 'x13'],
'I': [90, 0.9, 90, 90, 90, 2.1, 55, 20, 100, 15, 90, 60, 3],
'II': [75, 0.75, 75, 75, 75, 1.5, 50, 10, 200, 28, 75, 120, 5],
'III': [50, 0.5, 50, 50, 50, 0.7, 39, 5, 350, 36, 50, 180, 7],
'IV': [25, 0.25, 25, 25, 25, 0.2, 27, 2, 500, 42, 25, 240, 8],
'V': [0, 0, 0, 0, 0, 0, 0, 0, 700, 50, 0, 300, 12],
'10-10': [57, 0.64, 50, 60, 50, 0.09, 27, 18.92, 24, 11, 25, 180, 7],
'16-16': [43, 0.59, 50, 60, 50, 0.02, 12, 11.05, 53.5, 16, 0, 180, 7],
'17-17': [49, 0.61, 50, 60, 25, 0.02, 13, 11.05, 62, 10, 0, 180, 7]
}
df = pd.DataFrame(data)
df.set_index('指标', inplace=True)
# 数据标准化(根据指标类型)
def normalize_data(df, beneficial, non_beneficial):
norm_matrix = df.copy()
for indicator in df.index:
if indicator in beneficial:
norm_matrix.loc[indicator] = (df.loc[indicator] - df.loc[indicator].min()) / (df.loc[indicator].max() - df.loc[indicator].min())
elif indicator in non_beneficial:
norm_matrix.loc[indicator] = (df.loc[indicator].max() - df.loc[indicator]) / (df.loc[indicator].max() - df.loc[indicator].min())
return norm_matrix
beneficial = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x11']
non_beneficial = ['x9', 'x10', 'x12', 'x13']
norm_matrix = normalize_data(df, beneficial, non_beneficial).T # Transpose to have schemes as rows
# 1. 改进层次分析法 (AHP)
## 初始判断矩阵
judgement_matrix = np.array([
[ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, -1],
[ 0, 0, 0, -1, 1, 1, 1, 1, 0, 0, 1, 1, -1],
[ 0, 0, 0, -1, 1, 1, 1, 1, 0, 0, 1, 1, -1],
[ 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, -1],
[-1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 1, 1, -1],
[-1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 1, 1, -1],
[-1, -1, -1, -1, 1, 1, 0, 1, 0, 0, 1, 1, -1],
[-1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 1, 1, -1],
[ 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, -1],
[ 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
])
# 计算最优传递矩阵
def compute_optimal_matrix(judgement_matrix):
n = judgement_matrix.shape[0]
optimal_matrix = np.zeros_like(judgement_matrix, dtype=float)
for i in range(n):
for j in range(n):
optimal_matrix[i, j] = np.mean([judgement_matrix[i, k] - judgement_matrix[k, j] for k in range(n)])
return optimal_matrix
# 计算最终判断矩阵
def compute_final_matrix(optimal_matrix):
return np.exp(optimal_matrix)
# 计算主观权重
def compute_subjective_weights(final_matrix):
m, n = final_matrix.shape
L_star = np.prod(final_matrix, axis=0) ** (1/m)
subjective_weights = L_star / np.sum(L_star)
return subjective_weights
# 执行改进的AHP分析
optimal_matrix = compute_optimal_matrix(judgement_matrix)
final_matrix = compute_final_matrix(optimal_matrix)
subjective_weights = compute_subjective_weights(final_matrix)
# 2. 熵权法 (Entropy Weight Method)
# 计算熵值
entropy = np.zeros(norm_matrix.shape[1]) # Now norm_matrix has schemes as rows
for i in range(norm_matrix.shape[1]):
p = norm_matrix.iloc[:, i] / norm_matrix.iloc[:, i].sum()
entropy[i] = -np.sum(p * np.log(p + 1e-9)) / np.log(len(p))
# 计算熵权
objective_weights = (1 - entropy) / (1 - entropy).sum()
# 3. 组合权重
combined_weights = subjective_weights * objective_weights
combined_weights /= combined_weights.sum()
# 4. TOPSIS 计算
# 加权标准化决策矩阵
weighted_norm_matrix = norm_matrix * combined_weights
# 计算正理想解和负理想解
ideal_positive = weighted_norm_matrix.max(axis=0)
ideal_negative = weighted_norm_matrix.min(axis=0)
# 对于每个方案(行),计算与正理想解和负理想解的距离
distance_positive = np.sqrt(((weighted_norm_matrix - ideal_positive) ** 2).sum(axis=1))
distance_negative = np.sqrt(((weighted_norm_matrix - ideal_negative) ** 2).sum(axis=1))
# 计算相对贴近度
closeness = distance_negative / (distance_positive + distance_negative)
# 输出最终得分,针对每个待测方案
scores = pd.Series(closeness, index=df.columns, name='Score')
print(scores)
# 把初始判断矩阵,最优传递矩阵,最终判断矩阵,主观权重集,客观权重集,信息熵,组合权重集,正理想解,负理想解相对贴近度,最终得分写入txt文件
with open('TOPSIS1.txt', 'w') as f:
f.write('初始判断矩阵:\n')
f.write(str(judgement_matrix) + '\n')
f.write('最优传递矩阵:\n')
f.write(str(optimal_matrix) + '\n')
f.write('最终判断矩阵:\n')
f.write(str(final_matrix) + '\n')
f.write('主观权重集:\n')
f.write(str(subjective_weights) + '\n')
f.write('客观权重集:\n')
f.write(str(objective_weights) + '\n')
f.write('信息熵:\n')
f.write(str(entropy) + '\n')
f.write('组合权重集:\n')
f.write(str(combined_weights) + '\n')
f.write('正理想解:\n')
f.write(str(distance_positive) + '\n')
f.write('负理想解:\n')
f.write(str(distance_negative) + '\n')
f.write('各待测方案的相对贴近度:\n')
f.write(str(closeness) + '\n')
f.write('最终得分:\n')
f.write(str(scores) + '\n')