企业综合实力评价模型(2011C 范文三 · VIKOR–GRA 主线)
摘要
针对 2011C「企业综合实力评价」赛题,本文以 VIKOR 折衷排序 + 灰色关联分析(GRA) 为主线,系统回答原题 4 个子问题:① 建立 5 指标评价体系并对 8 家企业做向量归一化;② 以熵权客观定权,识别主导维度;③ 用 VIKOR 在"群体效用–个体遗憾"间求折衷解给出排序,并用 GRA 以灰色关联度刻画企业与理想原型的距离;④ 以留一法、妥协系数 v 敏感性、三法(TOPSIS/VIKOR/GRA)排名一致性做模型检验。计算表明:VIKOR 折衷最优为 方案3、最弱为 方案5;GRA 关联度最优为 方案7、最弱为 方案5;三法排名 Spearman 相关为 TOPSIS–VIKOR 0.857、TOPSIS–GRA 0.738、VIKOR–GRA 0.738,属高度正相关;留一法剔除单企业后与原排名相关 ρ 中位 0.973,结论对小样本扰动高度稳健。四法(含范文一熵权–TOPSIS、范文二 AHP–模糊)冠军虽分属 方案3/7/6,但共同锁定"方案5 最弱、方案3 居第一梯队"的稳健结构。
一、文献综述
- VIKOR:Opricovic(1998)提出,在"最大化群体效用 (妥协广度)"与"最小化个体遗憾 (最大短板)"间求折衷,以折衷值 排序,特别适合"不能/不愿完全妥协"的多属性决策,能给出兼顾多数与极值的折衷解。
- 灰色关联分析 GRA:邓聚龙(1982)提出,以"参考序列(理想原型)"与各序列的几何相似度(关联系数→关联度)度量靠近程度,对样本量小、信息不完全的系统尤为稳健。
- 折衷系数 v:VIKOR 中 表征对"群体 vs 个体"的侧重, 为常用均衡点;其敏感性是检验排序稳定性的标准手段。
- 留一法 LOO:由 Allen(1974)用于模型稳定性评估,逐条剔除样本重算,考察结论对单点的依赖。
- 跨方法互证:与范文一(TOPSIS)、范文二(AHP–模糊)形成方法三角形的交叉验证。
二、问题重述与建模假设
记 8 家企业 、5 指标 ,评分 (效益型)。归一化 (向量模),权重取熵权 (与范文一一致,指标1=0.241、指标4=0.215 主导)。
假设:① 全效益型;② 熵权客观权重可跨方法共用;③ 参考序列取各指标最优值构成的"理想企业原型"。
符号: 正负理想; 关联系数; 关联度; VIKOR 三指标; 折衷系数。
三、模型与方法
3.1 向量归一化
3.2 VIKOR 折衷
正/负理想 。标准化距离:
群体效用 ,个体遗憾 。折衷值:
越小越优。
3.3 灰色关联度 GRA
参考序列取理想原型 。关联系数:
关联度 , 越大越优。
四、模型求解与结果(逐任务)
4.1 体系与权重(任务一/二)
5 指标权重(熵权,与范文一共用):指标1=0.241、指标4=0.215、指标3=0.193、指标2=0.187、指标5=0.164,指标1/4 主导。归一化后各企业分布为后续排序奠基。
4.2 VIKOR 折衷排序(任务三)
各企业 曲线(图 1,按 Q 排序)。最终 Q 值排序(图 7):
| 排名 | 企业 | (越小越优) |
|---|---|---|
| 1 | 方案3 | 最优 |
| 2 | 方案7 | |
| 3 | 方案1 | |
| 4 | 方案6 | |
| 5 | 方案8 | |
| 6 | 方案2 | |
| 7 | 方案4 | |
| 8 | 方案5 | 最弱 |
方案3 折衷最优、方案5 最弱。VIKOR 同时平衡"群体效用"与"个体遗憾",避免了 TOPSIS 仅看几何距离的单一视角。图 1 中方案3 的 R(个体遗憾)与 S(群体效用)均处低位,是"既无短板、又总体领先"的折衷赢家。
4.3 灰色关联排序(任务三)
以理想企业原型为参考,GRA 关联度(图 2)排序:方案7 关联度最高、方案5 最低。GRA 从"与理想原型的整体相似度"切入,与 VIKOR 的"折衷距离"互为补充——前者看形状贴近,后者看综合远近。图 6 给出 GRA 最优企业 方案7 的 5 指标原始值画像,可见其各维度均衡偏高,印证"与理想原型最相似"的关联逻辑。
五、方法横评(三法一致性)
将 TOPSIS、VIKOR、GRA 三法排名并列(图 3),并计算 Spearman 秩相关矩阵(图 4):
- TOPSIS–VIKOR:ρ=0.857
- TOPSIS–GRA:ρ=0.738
- VIKOR–GRA:ρ=0.738
三法两两高度正相关,说明无论从"几何距离""折衷距离"还是"灰色相似度"出发,企业实力的总体梯队结构一致;差异仅体现在头部企业的细微位次(GRA 更青睐方案7、VIKOR/TOPSIS 更青睐方案3),这正是不同方法对"最优"定义的合理分歧。
六、模型检验
- 留一法稳定性(图 5):逐家剔除企业后重算 TOPSIS 排名,与原排名的 Spearman ρ 介于 [0.893, 1.000]、中位 0.973,表明任一企业退出都不会颠覆整体排序,结论对单点不敏感。
- VIKOR 妥协系数 v 敏感性(图 8):令 从 0.1 扫到 0.9,最优企业始终在 方案3/方案7 之间小幅切换,未出现剧烈翻转,折衷解稳健。这证明方案3 的折衷优势不依赖特定 v 取值。
- 最优企业结构画像(见 4.3 图 6):以 GRA 最优企业 方案7 为例,其 5 指标原始值均衡偏高,印证"与理想原型最相似"的关联逻辑。
七、优缺点与应补充信息
- 优点:① VIKOR 显式区分"群体/个体"双目标,给出可解释的折衷解;② GRA 对小样本、灰信息稳健;③ 留一法 + v 敏感性 + 三法互证三重检验,闭环充分;④ 与范文一/二构成方法三角。
- 缺点:① 熵权共用使三法权重同源,未独立验证;② GRA 关联度受参考序列选取影响;③ 8 样本下统计功效有限;④ 未考虑指标间潜在相关性对灰色关联的影响。
- 应补充信息:① 独立确定 GRA 权重以与熵权对照;② 企业行业/规模分层;③ 多期数据做动态趋势;④ 真实指标经济学定义。
九、决策建议与落地指引
本文用两类机理不同的方法给出排序,得到一个关键现象:VIKOR 的折衷最优为方案3,而 GRA 的最优为方案7——两法"冠军"并不一致。这并非矛盾,恰恰是多方法评价的应有之义:不存在唯一绝对真理,结论取决于方法所嵌入的决策哲学。
VIKOR 同时最小化"群体效用最大遗憾"与"个体最大遗憾",其最优解方案3 代表一种风险厌恶型折衷——它未必在单一指标上登顶,但综合"大家都好、谁都不至于太差"。若决策者最忌讳"某一项严重拖后腿",应取方案3。GRA 则衡量各方案与"理想原型"(各项取最优构成的参考序列)的几何相似度,其最优方案7 的画像为五指标均衡偏高(见 4.3 图 6),代表一种"全面对标标杆"的逻辑。若决策更看重"整体均衡、无限接近理想",应取方案7。
敏感性进一步说明二者的关系:当妥协系数 从 0.1 扫至 0.9,最优企业在方案3 与方案7 之间小幅切换,未出现剧烈翻转。这意味着两者同属"第一梯队"、难分伯仲,方案3 仅在折衷口径下略占优。因此实务中可将方案3 与方案7 并列归入短名单,再依风险偏好二选一。
将视角拉到三篇互证:范文一熵权–TOPSIS 主选方案3,范文二 AHP–模糊主选方案6,本文 VIKOR 主选方案3、GRA 主选方案7。方案3 在两篇独立方法中均居前,是最稳健的"共识冠军";方案6、方案7 则在不同方法下轮替次优。三法交汇处的可信结论为:以方案3 为实施首选,方案6/7 为战略备选——方案6 对应"主观偏好权重下的优选",方案7 对应"均衡标杆型优选",可视具体战略取向切换。
在落地场景,VIKOR 与 GRA 各有擅场:VIKOR 适合需要"出具风险可控的妥协解"的正式决策(如重大方案比选,必须说明'为何不选极端者'),其 值天然携带稳定度信息;GRA 适合"标杆对标"类评价(如对标行业最佳实践、寻找最像标杆的对象),计算轻量、对小样本与灰信息稳健。推荐的组合用法是:先用 GRA 筛出与理想原型最接近的前 2—3 名,再于其中用 VIKOR 定折衷最优,兼顾"像标杆"与"风险低"。
针对已识别局限,给出补强路径:① 三法共用熵权使权重同源——可令 GRA 改用独立权重(如 AHP 先验或等权)重算,与熵权结果对照,验证排序是否因定权法而异;② GRA 关联度受参考序列影响——对"理想原型"的构造(各项最优 vs 各项均值+最优)做敏感性;③ 灰色关联未考虑指标相关性——可在关联前做主成分或去冗余;④ 8 样本统计功效有限——补充多期、多侪数据以提升推断可靠性。
综上,本文虽未给出单一"冠军",却通过 VIKOR–GRA 双方法 + 留一法 + 敏感性 + 跨篇互证,勾勒出"方案3 为主、方案6/7 为辅"的高置信决策区间。这种"承认方法异见、用稳健性收敛结论"的写法,比强行宣称唯一最优更符合优秀论文的方法论自觉。就实施节奏而言,建议先期试点方案3 以快速验证折衷优势,同步将方案6/7 纳入下一轮滚动评价,形成"主选落地、备选观望"的弹性部署。这一部署同时规避了单方法结论的偶然性,使决策在方法异见中依然稳健可托。也正是这种自觉,使本系列三篇论文得以形成可信的方法三角。
八、参考文献
[1] Opricovic S. Multicriteria optimization of civil engineering systems[J]. Faculty of Civil Engineering, 1998.
[2] Opricovic S, Tzeng G H. Compromise solution by MCDM methods: A comparative analysis of VIKOR and TOPSIS[J]. European Journal of Operational Research, 2004.
[3] 邓聚龙. 灰色控制系统[J]. 华中工学院学报, 1982.
[4] Allen D M. The relationship between variable selection and data augmentation[J]. Technometrics, 1974.
[5] 本站点《VIKOR》《灰色关联分析》算法深度手册(配套代码与数据集).
附录:核心 Python 实现(VIKOR + GRA)
# 纯标准库,读取 cumcm2011c.csv 复现正文数值
import csv, math
rows = list(csv.reader(open("../data/cumcm2011c.csv", encoding="utf-8-sig")))
M = []
for r in rows[1:]:
if r and r[0].startswith("方案"):
M.append([float(r[j + 1]) for j in range(5)])
n, m = len(M), 5
NAME = ["方案{}".format(i + 1) for i in range(n)]
def mean(xs): return sum(xs) / len(xs)
# 向量归一化
Z = [[M[i][j] / math.sqrt(sum(M[i][j] ** 2 for i in range(n))) for j in range(m)] for i in range(n)]
# 熵权(列归一化)
def entropy_weights(P):
n, m = len(P), len(P[0])
p = [[P[i][j] / sum(P[ii][j] for ii in range(n)) for j in range(m)] for i in range(n)]
k = 1 / math.log(n)
e = [-k * sum(p[i][j] * math.log(p[i][j]) for i in range(n) if p[i][j] > 0) for j in range(m)]
d = [1 - ej for ej in e]; s = sum(d)
return [dj / s for dj in d]
w = entropy_weights(M)
# VIKOR
fstar = [max(Z[i][j] for i in range(n)) for j in range(m)]
fmin = [min(Z[i][j] for i in range(n)) for j in range(m)]
S = []; R = []
for i in range(n):
diff = [(fstar[j] - Z[i][j]) / (fstar[j] - fmin[j] or 1) for j in range(m)]
S.append(sum(w[j] * diff[j] for j in range(m)))
R.append(max(w[j] * diff[j] for j in range(m)))
Smn, Smx = min(S), max(S); Rmn, Rmx = min(R), max(R)
v = 0.5
Q = [v * (S[i] - Smn) / (Smx - Smn or 1) + (1 - v) * (R[i] - Rmn) / (Rmx - Rmn or 1) for i in range(n)]
qorder = sorted(range(n), key=lambda k: Q[k])
print("VIKOR最优:", NAME[qorder[0]], "最差:", NAME[qorder[-1]])
# GRA
ref = fstar[:]
maxd = max(abs(ref[j] - Z[i][j]) for i in range(n) for j in range(m))
mind = min(abs(ref[j] - Z[i][j]) for i in range(n) for j in range(m))
rho = 0.5
gamma = []
for i in range(n):
xi = [(mind + rho * maxd) / (abs(ref[j] - Z[i][j]) + rho * maxd) for j in range(m)]
gamma.append(sum(w[j] * xi[j] for j in range(m)) / sum(w))
gorder = sorted(range(n), key=lambda k: -gamma[k])
print("GRA最优:", NAME[gorder[0]], "最差:", NAME[gorder[-1]])
# TOPSIS(用于三法互证)
vplus = [max(Z[i][j] for i in range(n)) for j in range(m)]
vminus = [min(Z[i][j] for i in range(n)) for j in range(m)]
Dp = [math.sqrt(sum((Z[i][j] - vplus[j]) ** 2 for j in range(m))) for i in range(n)]
Dm = [math.sqrt(sum((Z[i][j] - vminus[j]) ** 2 for j in range(m))) for i in range(n)]
C = [Dm[i] / (Dp[i] + Dm[i]) for i in range(n)]
torder = sorted(range(n), key=lambda k: -C[k])
print("TOPSIS最优:", NAME[torder[0]])
# 三法 Spearman(统一"越大越优"方向:VIKOR 取 -Q)
def rk(r):
od = sorted(range(len(r)), key=lambda k: -r[k]); rr = [0] * len(r)
for p, idx in enumerate(od): rr[idx] = p + 1
return rr
def spearman(r1, r2):
a, b = rk(r1), rk(r2); da, db = mean(a), mean(b)
cov = sum((a[i] - da) * (b[i] - db) for i in range(n)) / n
sa = math.sqrt(sum((a[i] - da) ** 2 for i in range(n)) / n)
sb = math.sqrt(sum((b[i] - db) ** 2 for i in range(n)) / n)
return cov / (sa * sb)
Qb = [-q for q in Q]
print("Spearman TOPSIS-VIKOR=%.3f TOPSIS-GRA=%.3f VIKOR-GRA=%.3f" %
(spearman(C, Qb), spearman(C, gamma), spearman(Qb, gamma)))
本范文为写作示范,数值为合成数据,仅用于展示建模与表述范式。