动态综合评价模型复现介绍:具有趋优特征的动态综合评价方法

一、论文基本信息

论文题目: 具有趋优特征的动态综合评价方法及其应用
英文题目: Dynamic Comprehensive Evaluation Method with Approximate Optimal Feature and Its Application
作者: 何意雄
学位授予单位: 南昌大学
导师: 张发明 教授
答辩日期: 2017 年 5 月 27 日
类型: 硕士学位论文(技术经济及管理)

这篇文章讨论的是动态综合评价里一个很实在、但容易被绕过去的问题:

当我们要对同一批对象在多个时期的表现做综合评价时,各个时期的权重到底该怎么定?

大部分做法要么"一视同仁",要么按"厚今薄古"(越近的时期越重要)来赋权。

这篇论文说:还不够。还要看系统在哪个时期整体发展得更好。

也正是这一点,构成了全文的核心创新。


二、这篇文章解决了什么问题?

传统 TOWA 算子的盲区

郭亚军教授提出的 TOWA 算子(时序加权平均算子),是动态综合评价里运用最广的信息集结工具。它用"降维"的思路,把高维、复杂的时序立体数据表压缩成一列综合评价值,非常好用。

但 TOWA 有一个特点:

时间权向量只跟"时间诱导分量的顺序位置"有关,与数据分量的大小无关。

换句话说,在传统 TOWA 里,2009 年就是 2009 年,它拿到多少权重只取决于它离现在多远——这一年系统整体发展得好还是差,完全不影响它的权重。

论文针对的就是这一点:把"数据分布情况"(具体说,是"趋优程度")也纳入时间权向量的确定。

什么是"趋优"?

论文对"趋优"的定义是:

各评价对象向最好方向发展的接近程度,应用到动态综合评价里,表现为各评价对象整体在各时期相较于系统最优发展状态的情况

由此引出全文的核心新指标——趋优度

趋优度越高,说明该时刻被评价对象整体表现与系统发展最优状态越接近,对系统的发展贡献越大。

在中部六省 2009—2014 年的例子里,论文算出的逐年趋优度是:

年份 2009 2010 2011 2012 2013 2014
趋优度 0.459 0.856 0.880 0.896 0.836 0.887

看得出来,2012 年中部地区整体发展最接近最优状态,2009 年("中部崛起规划"实施首年)反而最差。

这个信息本身就有管理含义——它能直接回答"某项宏观政策实施了几年,效果到底哪一年最好"。

把偏好装进权重里

有了趋优度,就可以给出三套时间权向量:

  1. W_λ:只考虑"时间度"(厚今薄古);
  2. W_σ:只考虑"趋优度"(哪个时期整体趋优,就给哪个时期更大权重);
  3. W = αW_λ + βW_σ:把两者融合起来。

论文的思路可以概括成一句话:

先客观测算出系统各时期"趋优程度",再让管理者的时序趋优偏好,通过时间权向量体现出来。


三、模型的核心结构

这篇文章实际上是一条 五步链路

第一步:一次加权 —— 得到静态综合评价值矩阵

指标维 → 时间维。用熵值法等常规方法,先算出每个对象在每个时期的静态综合评价值

\[Y = [y_i(t_k)]_{n \times T}\]

这一步的输出,就是论文的 表 8(中部六省)、表 4(西部 12 省市)和 表 11(江西 6 高校)。

第二步:定参照系 —— 构造最优时序数据

取每个对象在所有时期中的最大值,构成最优时序数据集 \(C^*\)

\[C^*_i = \max_k y_i(t_k)\]

第三步:算趋优度 —— 改进的灰色关联分析

这是全文最核心的一步,分四个小动作:

  1. 对每个对象,沿时间方向求差分 \(d_{ki}\)(首个差分预定义为 0);
  2. 参照序列 \(C^*\) 同样求差分 \(d^*_i\)
  3. \(d^*_i\) 的标准差做尺度,把两组差分标准化;
  4. 构造带符号的关联系数

\[\xi_k(i) = \frac{\mathrm{sign}(d_{ki} \cdot d^*_i)}{1 + \big||d_{ki}/\sigma| - |d^*_i/\sigma|\big|}\]

最后在 \(n-1\) 个对象上取平均,得到该时刻的趋优度:

\[r_k = 1 - \frac{1}{n-1}\sum_{i=2}^{n}\xi_k(i)\]

第四步:定时间权向量 —— 三套权重

(1)"时间度"权向量 W_λ(郭亚军式)

引入"时间度"λ 度量评价者的时间偏好,求解一个非线性规划模型(论文式 9)。λ 越小越重视近期数据。

论文取 λ = 0.1(强烈厚今薄古),解得:

\[W_\lambda = (0.0029,\ 0.0086,\ 0.0255,\ 0.0755,\ 0.2238,\ 0.6637)^T\]

(2)"趋优度"权向量 W_σ

把各时期的趋优度 \(r_k\) 由小到大排序,然后按等差数列赋权:趋优度最低的时刻给 \(a\),公差为 \(d\)

待定系数 \(a\) 由决策者设定,含义非常直观:

赋值 a 意义
\(0 < a < 1/T\) 重视趋优度高的时刻
\(a = 1/T\) 所有时刻同等重要(无时序趋优偏好)
\(1/T < a < 1\) 重视趋优度低的时刻(逆向偏好)

赋值后再按排序的映射关系还原到各时刻,得到 \(W_\sigma\)

(3)融合权向量 W

\(W = \alpha W_\lambda + \beta W_\sigma\),通过"使总评价值最大"的单目标优化模型确定 α、β,从而最大程度突出被评价对象之间的整体差异。

第五步:二次集结 —— 得到最终评价值

\[h_i = \sum_{k=1}^{T} w_k \, y_i(t_k)\]

再据此排序。

所以,论文的表 8 与 4.1.7 节给出的趋优度向量、时间权向量、最终评价值,属于同一个框架,但不是同一个模型直接同时输出的结果,而是:

先算静态评价值,再算趋优度,最后定权集结,一步接一步。

这也解释了为什么复现这类方法时,必须按论文的中间过程逐段核对,而不能只看最后的排序——最终排序一致,不代表中间每一步都对。


四、如果你正在做动态评价,大概率卡在这三个地方

这篇论文之所以值得看,是因为它精准地切中了做多年度评价时最常见的三个死结。

痛点一:时期权重靠"拍",结果一改权重就翻盘

多年度评价绕不开一个问题:6 个年份,权重怎么分?

大多数人的处理方式是两种:

  • 要么直接等权(1/6、1/6、1/6、1/6、1/6、1/6);
  • 要么设定"厚今薄古",越近的年份权重越大。

但这两个做法都有同一个隐患:权重的确定过程是主观的,跟数据本身没关系。

于是评审专家或甲方最常问的一句话就来了:

"你这个权重凭什么这么定?换成等权,排名是不是就变了?"

一旦排序对权重敏感,整个评价结论的稳健性就站不住。

这篇论文的解法:让客观数据参与进来——先算出每个时期系统整体"趋优"到什么程度,再让这个客观结果去影响权重。权重因此有了数据支撑,不再只是人的主观设定。

痛点二:只能排出"谁第一谁第二",说不出"哪一年最好"

传统动态评价的最终交付物,通常就是一张排序表:

A 第一,B 第二,C 第三。

但委托方(政府、高校、企业)真正想知道的往往是另一个问题:

"这项政策实施了 6 年,到底哪一年的效果最好?哪一年开始走弱?"

这个问题,传统方法答不了——因为它把所有年份碾成了一个数。

这篇论文的解法:它不仅输出排序,还额外输出一个逐年序列——趋优度向量

年份 2009 2010 2011 2012 2013 2014
趋优度 0.459 0.856 0.880 0.896 0.836 0.887

一眼就能看出:2012 年最佳,2009 年(政策首年)最弱,2013 年出现放缓。

这份"过程诊断",才是很多委托方真正愿意花钱买的东西。

痛点三:评价阶段太少时,一般方法分辨不出差异

这是最容易被忽略、但最有价值的一个点。

当评价只有 3 个时期(比如"研一 / 研二 / 研三"、"前年 / 去年 / 今年")时:

  • 等权加权 → 各期差异被抹平;
  • 厚今薄古 → 权重设定稍有变化,排序就重排。

论文第 3 章的结论明确指出:

在样本容量越大、评价阶段越多的情况下,考虑与不考虑数据时序趋优度,评价结果的差异会更为明显。

反过来说:在样本少、阶段少的场景里,传统方法基本失去分辨力,而趋优方法仍然能给出有区分度的结果。


五、这个模型相比已有方法好在哪?

如果只讲最值得关注的几点,我认为主要有下面三点。

1. 权重从"主观设定"变成"数据驱动"

传统 TOWA 的时间权重只看位置、不看数据。新方法让客观算出来的趋优度参与权重决定。

权重因此同时含有两个来源:主观时间偏好 + 客观数据信息

这意味着你的评价结论更容易通过评审质疑——因为权重不再是拍出来的。

2. 输出不止排序,还有一份"过程诊断"

趋优度向量本身就是一个独立于排序结果的决策支持信息

它是同类方法中少有的、能直接回答"哪一期发展最好"的输出。

3. 偏好极性可调,适用面更宽

通过待定系数 \(a\),同一套方法既能表达"激励先进时期",也能表达"鞭策落后时期",还能退化成"无偏好"。

比硬性规定一种偏好方向要灵活得多。

四类方法横向对照

能力维度 等权/主观加权 传统 TOWA 常见"熵权+时间加权" 本文趋优方法
多期排序
时期权重有数据依据 部分
排序对权重设定的稳健性 较好
输出"哪一期最优"的过程诊断
支撑"政策实施效果时序差异"分析
阶段数少(T=3~5)时的分辨力 较好
偏好方向可调(激励/鞭策) 仅时间偏好

这张表里最值得看的是第 4 行和第 6 行:它们是本文方法相对其他做法真正的差异化能力,也是"为什么要用这个方法"的直接答案。


六、这些场景,正好用得上

只要你的问题里同时存在"多个时期 + 要横向排序 + 关心整体发展态势",这个模型就派得上用场。

具体来说,如果你遇到下面这些情况,可以直接考虑:

你的处境 这个模型能给你什么
要给多年度区域经济/营商环境做综合评价,怕权重被质疑 有数据支撑的时期权重,结论更稳
要评估某项政策/规划实施效果,需要说明哪一年最见效 逐年趋优度序列,直接画出效果曲线
要做高校/学科/研究生创新能力的多阶段评价 适配"研一/研二/研三"这类少阶段场景
企业要做多年份子公司绩效排名 + 看谁在进步 排序 + 进步态势一并输出
单位要做干部/员工跨期考核,既要公平又要体现导向 偏好极性可调,激励或鞭策都能表达
你正在攒一篇实证小论文,想找一个不太常见但站得住的方法 方法源自 2017 年学位论文,复用热度低,容易做出新意

论文第 3 章还特别指出,这类方法可以广泛应用于:

  • 宏观政策实施后的经济评价;
  • 新考核标准颁布后的员工绩效评价;
  • 干部晋升考核等动态综合评价问题。

七、这次复现做了什么?

这次我基于论文附录给出的数据与 MATLAB 代码,使用:

  • Python
  • NumPy / SciPy

完成了论文第 3 章方法、4.1 节应用例与全部对照结果(表 4、表 5、表 8、表 9)的复现。

复现过程分成四步:

  1. 把附录 1 的 improved_gra2 代码逐行直译,复现趋优度 r 和关联系数矩阵 ξ
  2. 复现附录 2 的"时间度"权向量模型,与附录 3 的等差数列权向量;
  3. 复现式(12)–(15) 的融合权向量与最终集结评价值;
  4. 顺带复现附录 5 的 TOPSIS 对照结果,以及表 5 的三种 TOWA 排序。

复现全程使用论文给出的原始数据,没有做任何参数微调

那么,这次复现到底能给你什么?

复现的价值不只是"证明论文是对的",而是把这篇论文变成你手上能直接用的东西

因为它原本的状态是:

  • ❌ 只有 MATLAB 代码片段,而且附录注释把数据方向写反了
  • ❌ 关键的时间权向量代码直接跑不起来
  • ❌ 换个阶段数 T 就要重写;
  • ❌ 没有完整的一条龙流程。

经过这次复现,你现在可以拿到:

交付内容 说明
完整可运行的 Python 代码 从静态评价值矩阵 → 趋优度 → 三套权向量 → 融合 → 最终排序,一条龙跑通
已修正的关键实现 附录 1 的正确调用方向(这是最容易踩死的地方)、附录 2 的 KKT 解析求解
论文级验证基准 9 组比对全部通过,最大偏差 < 0.0015,可作为你二次开发的回归测试
任意 T 期通用 不再是硬编码 6 期,3 期、5 期、10 期都能直接套
踩坑避雷清单 6 个坑已全部标出(见下一节),省下你自己摸索的时间

一句话:你不必再花时间啃那几段有问题的 MATLAB 片段,可以直接把数据换成你自己的,跑出结果。


八、复现踩坑记录(这部分可能最值钱)

坑 1:附录 1 代码的注释,把数据方向写反了

附录 1 的注释写的是"行 = 方案,列 = 指标",照着用会得到完全错误的结果。

正确的调用方式是:

1
2
3
输入矩阵 = [ T 行(时刻)  ×  n 列(被评价对象) ],末行附上参照序列 C*_i = max_k y_i(t_k)
差分沿"列"(时间)方向 → kexi 为 (T-1) × n
relation = 去掉首列后,每行取均值 → 得到 T 个"趋优度"

这一点是整个复现的关键分水岭。我实测过:如果照附录注释的方向用,输出的值会随"被评价对象的排列顺序"漂移——我用 3000 次随机置换验证过,同一个时刻的 r 会在 0.38 ~ 0.95 之间乱跳。

坑 2:论文里有一处疑似排版复制错误

论文 3.3.5 步(2)(西部 12 省市应用例)给出的 ξ 矩阵,与 4.1.7 步(2)(中部六省)的 ξ 矩阵逐位完全相同

两组数据的量纲、规模、年份都不一样,不可能算出同一组关联系数。该处应属整段复制,用附录 1 的代码可自行算出真实值。

坑 3:附录 2 的 fmincon 调用跑不起来

附录 2 的代码里,同一个变量 A、b 被赋值了两次:

1
2
3
4
5
>> A=[1 4/5 3/5 2/5 1/5 0;1 1 1 1 1 1]
>> Aeq=A
>> beq=[0.1;1]
>> A=[-1 -1 -1 -1 -1 -1;1 1 1 1 1 1]
>> b=[0;1]

变量被覆盖,约束自相矛盾,而且 @myfun 还硬编码了 6 维,换个 T 就不能用。

坑 4:就算改对了,单起点求解也会失败

这个优化问题在 λ 很小时,解极度贴近可行域边界(\(w_6 \approx 0.66\),而 \(w_1 \approx 0.003\)),目标函数在这里非常平坦,fmincon 单起点经常收敛到角点解 [0, 0, 0, 0, 0, 1]

我的解决办法:改用 KKT 解析形式 \(w_k \propto e^{-\nu p_k}\),对乘子 ν 求根。这样不仅稳定复现出论文那一组解,连目标函数值都能对上。

坑 5:正文公式 (17) 的权重被平方了

正文式(17) 写作:

\[d_i^+ = \sqrt{\sum_j \big(w_j (x_{ij} - z_j)\big)^2}\]

权重 \(w_j\) 参与了平方再求和。

如果按常识理解成 \(\sqrt{\sum_j w_j (x_{ij} - z_j)^2}\)(权重不进平方),山西的 \(d^+\) 会算成 24.700,而论文是 17.882,整张表都对不上。

附录 5 的代码与论文数值一致,说明作者的实现是"权重平方",属于公式表达与推导层面的小瑕疵,不是数据问题。使用时按代码实现即可。

坑 6:熵值法权重这一步复现不了

论文表 7、表 10 给出了熵值法权重,但没有给出无量纲化/标准化的具体公式

我用两种最常用的口径(极差标准化、占比归一化)对附录 4 的原始数据实算,得到的权重与论文差了一个量级。论文表 7 的数值集中在 0.025 ~ 0.05(近乎等权),与经典熵值法输出形态明显不同。

这意味着:从原始统计数据到"静态综合评价值"这一步是黑箱。 但好消息是,这只影响"一次加权",不影响第 3 章新方法本身的复现——只要有了静态评价值矩阵,后面全链条都能对上。


九、复现比对结果

本次复现已经确认:

  • 趋优度 r 与关联系数矩阵 ξ 可复现
  • 三套时间权向量(W_λ / W_σ / W)可复现
  • 融合系数 α、β 与最终评价值 Z 可复现
  • TOPSIS 对照结果与表 5 三种 TOWA 排序可复现
  • 论文给出的数据与附录代码,足以支持 Python 的完整复现。

从方法理解上看,这篇文章最值得把握的不是复杂公式本身,而是下面这条主线:

先客观测算出系统各时期的"趋优程度",再让管理者的时序趋优偏好通过时间权向量体现出来,最后在统一权重下做集结排序。

这也是它相比传统 TOWA 算子更有推广价值的地方。

复现比对表 1:趋优度 r(第 3 章应用例 · 西部 12 省市)

年份 论文 r 程序 r 差值 是否一致(4位)
1999 0.911 0.9108 0.0002
2000 0.745 0.7449 0.0001
2001 0.920 0.9200 0.0000
2002 0.924 0.9236 0.0004
2003 0.735 0.7352 0.0002
2004 0.495 0.4951 0.0001

最大偏差 0.00038

复现比对表 2:趋优度 r(4.1 节应用 · 中部六省)

年份 论文 r 程序 r 差值 是否一致(4位)
2009 0.459 0.4592 0.0002
2010 0.856 0.8555 0.0005
2011 0.880 0.8805 0.0005
2012 0.896 0.8959 0.0001
2013 0.836 0.8357 0.0003
2014 0.887 0.8866 0.0004

最大偏差 0.00050

复现比对表 3:时间权向量与最终评价值

指标 论文 程序 最大偏差 是否一致
W_λ(时间度权向量) 0.0029, 0.0086, 0.0255, 0.0755, 0.2238, 0.6637 0.0029, 0.0086, 0.0255, 0.0755, 0.2238, 0.6637 0.00004
W_η(趋优度权向量·序化后) 0.0030, 0.0685, 0.1339, 0.1994, 0.2649, 0.3303 0.0030, 0.0685, 0.1339, 0.1994, 0.2649, 0.3303 0.00003
W_σ(映射回时刻) 0.0030, 0.1339, 0.1994, 0.3303, 0.0685, 0.2649 0.0030, 0.1339, 0.1994, 0.3303, 0.0685, 0.2649 0.00003
α, β(融合系数) 0.4999 / 0.5001 0.4999 / 0.5001 0.00002
W(融合权向量) 0.0030, 0.0713, 0.1125, 0.2029, 0.1461, 0.4643 0.0030, 0.0713, 0.1125, 0.2029, 0.1461, 0.4643 0.00005
目标函数值 fval −0.9534 −0.9534 0

表中"程序"列为 Python 复算值,与论文公布值保留同样位数后逐位相同

复现比对表 4:最终动态评价值与排序(中部六省)

省份 论文 Z 程序 Z 差值 论文排名 程序排名 是否一致
湖北 80.265 80.266 0.001 1 1
河南 75.304 75.304 0.000 2 2
湖南 70.624 70.624 0.000 3 3
安徽 61.334 61.334 0.000 4 4
江西 57.816 57.816 0.000 5 5
山西 56.578 56.577 0.001 6 6

最大偏差 0.00069(源于论文表 8 只保留 3 位小数)

复现比对表 5:TOPSIS 对照结果(4.1.6)

省份 论文 d⁺ 程序 d⁺ 论文 d⁻ 程序 d⁻ 论文 c 程序 c
山西 17.882 17.882 0.029 0.029 0.002 0.002
安徽 13.310 13.310 4.585 4.585 0.256 0.256
江西 16.089 16.089 1.842 1.842 0.103 0.103
河南 3.660 3.660 14.285 14.285 0.796 0.796
湖北 0.000 0.000 17.884 17.884 1.000 1.000
湖南 6.621 6.621 11.266 11.266 0.630 0.630

最大偏差 0.00048

复现比对表 6:表 5 三种 TOWA 算子排序(西部 12 省市)

情形 论文排序 程序排序 是否一致
原 TOWA(仅时间偏好) 陕西>重庆>新疆>内蒙古>四川>宁夏>广西>云南>甘肃>青海>贵州>西藏 完全相同
仅时序趋优偏好 新疆>陕西>重庆>四川>广西>内蒙古>云南>宁夏>甘肃>青海>贵州>西藏 完全相同
融合时间偏好与趋优偏好 陕西>新疆>重庆>内蒙古>四川>广西>宁夏>云南>甘肃>青海>贵州>西藏 完全相同

12 个对象的评价值最大偏差 0.00141。三种情形下 12 个省市的排序全部逐位吻合


十、复现结论与能力边界

方法链条可复现,前置的熵值法权重不可复现。

  • 从"静态综合评价值"往下:9 组检验全部通过,最大偏差 < 0.0015
  • 从"原始统计数据"往上:因论文未给出标准化公式,这一步无法核验,需要使用者自行选择口径。

复现展示可结合本次生成的 Python 验证脚本 repro_verify.py 一起使用,脚本内含全部数据、算法与逐位比对逻辑,可直接运行。

从方法理解上看,这篇文章最值得把握的不是复杂公式本身,而是下面这条主线:

先客观测算出系统各时期的"趋优程度",再让管理者的时序趋优偏好通过时间权向量体现出来,最后在统一权重下做集结排序。

这也是它相比传统 TOWA 算子更有推广价值的地方。


十一、这套方法,适合谁用?

如果你符合下面任意一条,这个模型就值得你花时间:

  • ✅ 手上有多年度面板数据,一直在纠结时期权重怎么定才站得住;
  • ✅ 需要向评审专家 / 甲方 / 上级解释"为什么这么加权";
  • ✅ 想知道某项政策或改革在哪一年最见效,而不只是排个名次;
  • ✅ 评价阶段很少(只有 3~5 期),怕方法分辨不出差异;
  • ✅ 想在自己的小论文里用一个不烂大街、又有正式出处的方法;
  • ✅ 已经有思路和数据集,只差一套能跑通的代码

你可以这样开始

你的情况 建议
已经算好了静态评价值矩阵 直接把数据换成你的,跑趋优度 → 排序,当天就能出结果
只有原始指标数据 我这边可以把前置的标准化与赋权一并做掉,交付完整链路
不确定这个方法适不适合你的选题 把研究场景和数据形态说一下,我帮你判断可行性
想在此基础上改造(换趋优测算方式、加群组评价、做模糊数扩展) 论文第 5 章正好列了这些扩展方向,可以一起讨论

说明:为了让复现结论可靠,上面把"熵值法权重无法核验"这一点也照实写了。这不是缺陷,恰恰说明一件事——方法链条本身站得住,而前置的标准化口径需要按你的数据实际情况来定,这部分我可以在交付时一并处理掉。


需要这套方法的 Python 完整代码,或想让我用你的数据跑一遍看看效果,请联系微信 canglang12002 任公子