文章目录
导读
论文标题:Matrix Encoding Networks for Neural Combinatorial Optimization(NeurIPS 2021)
项目地址:https://github.com/yd-kwon/MatNet
首次提出专门针对矩阵型关系数据的神经网络编码器 MatNet,填补了神经组合优化领域的空白,并在非对称旅行商问题(ATSP)、柔性流水车间调度问题(FFSP)上实现了深度学习方法的突破性进展,尤其在 FFSP 上性能全面超越传统运筹学方法。
背景动机
组合优化(Combinatorial Optimization, CO)是工业界的核心问题之一(如路径规划、生产调度、资源分配),绝大多数经典 CO 问题都是 NP 难问题,大规模下无法求得精确最优解。传统运筹学(OR)的解决方案分为两类:
- 混合整数规划(MIP):建模能力强、有最优性保证,但大规模问题求解极慢,甚至无法在合理时间内得到可行解。
- 元启发式算法(如遗传算法、粒子群、局部搜索):求解速度较快,但高度依赖问题专属的人工设计,泛化性差,解的质量缺乏保障。
随着深度学习发展,基于机器学习的组合优化方法成为新方向,分为 辅助传统 OR 方法 和 端到端求解 两种路径。这类方法的核心是前端编码网络 :将问题参数映射为向量表示,提取全局信息,指导后续解的构造。
但现有编码网络存在明显的边界:
RNN 类模型 (如 PtrNet):处理序列型输入,无法捕捉全局关系。图神经网络(GNN/GCN/GAT) :处理图结构数据,但针对稠密、固定结构的矩阵型数据效率极低、效果差。 Transformer 编码器(如 AM 模型):处理节点坐标类输入,依赖节点自身特征生成注意力,无法直接利用边的数值关系。
RNN 的本质是按顺序逐个吃输入,一步一步更新隐藏状态,天生只适合处理序列数据。换一下行的顺序,输入序列就变了,RNN 的输出也会变,但问题本身没变。比如把 M1 和 M2 行调换,前 10 个数字反过来,RNN 学到的模式就乱了。
普通 GNN 是为任意图设计的(比如社交网络、分子图,大多稀疏且结构不规则),它不知道这是个规整的二分图矩阵,没法做针对性优化。并且普通 GNN 每一层,每个节点都要从所有邻居收消息、聚合。小规模还好,但如果是 1000×1000 的矩阵,每个节点有 1000 个邻居,消息传递冗余,计算爆炸。
大量工业级 CO 问题天然以矩阵形式 定义:矩阵的行和列对应两类不同实体,矩阵元素表示实体间的量化关系(如距离、加工时间、成本),且行、列的顺序具有排列不变性(交换行 / 列顺序不改变问题本质,比如把 M1 和 M2 的行调换,还是这 4 台机器的加工能力,不影响最终调度结果。)。
非对称旅行商问题(ATSP):N×N 距离矩阵。柔性流水车间调度(FFSP):每个阶段对应 M×N 加工时间矩阵
在此之前,没有神经网络能直接将这类关系矩阵作为输入,导致大量经典且实用的 CO 问题无法被机器学习工程师高效解决。这正是论文要解决的核心问题。
MatNet 核心框架
MatNet 本质是一种运行在完全二分图上的图注意力网络 ,专门用于编码两类实体间的关系矩阵。它将输入矩阵 D ∈ R M × N D \in \mathbb{R}^{M \times N} D∈RM×N 视为二分图的邻接矩阵:行对应 A 类节点(共 M 个),列对应 B 类节点(共 N 个),矩阵元素 D i j D_{ij} Dij 是节点 a i a_i ai 与 b j b_j bj 之间的边权重。
完全二分图概念: 图里所有节点被分成两个互不相交的组 (A 组、B 组)。 边只存在于两个组之间,同一组内部没有任何边。完全的意思是 A 组每个节点,都和 B 组所有节点有且仅有一条边相连,没有例外。
和标准 GAT 相比,MatNet 有两个根本性创新:
- 双更新函数机制 :A、B 两类节点分别使用独立的更新函数 F A \mathcal{F}_A FA 和 F B \mathcal{F}_B FB,适配两类实体的不同语义。
机器 是固定资源, 工件 是被加工对象,它们的角色、属性、在调度里的行为逻辑完全不一样。如果用普通 GNN,所有节点共用同一个更新函数,相当于用同一套公式更新机器和工件,没法针对两类实体学习不同的策略。
- 混合分数注意力 :注意力分数同时来自 节点嵌入生成的内部结构分数 和 矩阵提供的外部关系数值 ,通过可学习的方式自动融合。
传统交叉注意力:更新机器节点(A 类):Query:所有机器节点的当前嵌入(M1~M4 的向量)。Key、Value:所有工件节点的当前嵌入(J1~J5 的向量)。
拿 M1 的 Query 向量,去和 5 个工件的 Key 向量分别算注意力分数,得到 5 个权重;用这 5 个权重对 5 个工件的 Value 向量加权求和,得到一个聚合向量;再经过残差连接、层归一化、前馈网络,就得到 M1 更新后的新嵌入。
MatNet 的混合分数同时用两种分数计算注意力:内部结构分数 :还是 Query・Key 算出来的,反映节点之间的语义关联、结构匹配程度。 外部关系分数 :直接取自输入矩阵的对应元素 D i j D_{ij} Dij,也就是 M1 加工 J1 的时间、M2 加工 J3 的时间...... 这些客观数值。
然后把这两个分数并排输入一个很小的可学习 MLP(多层感知机),让网络自己学习怎么把两个分数揉成一个最终的注意力分数,再做 Softmax 和加权求和。

双图注意力层(Dual Graph Attentional Layer)
MatNet 由 L 层双图注意力层堆叠而成,每层包含两个并行的子模块:
- F A \mathcal{F}_A FA:以 A 类节点为 Query,B 类节点为 Key-Value,通过交叉注意力更新所有 A 类节点的表示。
- F B \mathcal{F}_B FB:以 B 类节点为 Query,A 类节点为 Key-Value,反向更新所有 B 类节点的表示。
每个子模块的结构与 Transformer 编码器类似,包含多头注意力、残差连接、层归一化和前馈网络,但核心是跨实体类的交叉注意力,而非自注意力。
传统 GAT 要求所有节点共享更新函数,保证通用性;但矩阵型问题中两类实体性质完全不同(如「机器」和「工件」、「出发城市」和「到达城市」),独立的更新函数能让模型学习到定制化的表示策略,更贴合问题结构。
混合分数注意力(Mixed-Score Attention)
这是 MatNet 最核心的技术创新,解决了 如何将外部矩阵数值融入注意力机制 的问题。
Transformer 的缩放点积注意力仅由 Query 和 Key 的内积计算(内部分数),完全不考虑边本身的权重信息,无法直接利用关系矩阵的数值。
分别计算两类分数:
- 内部注意力分数:由节点嵌入的点积生成,反映节点间的结构相似性。
- 外部关系分数 :直接来自输入矩阵的元素 D i j D_{ij} Dij,反映实体间的量化关系。
可学习逐元素融合:将两类分数输入一个小型 MLP(多层感知机),自动学习融合权重,输出混合后的注意力分数,再经过 Softmax 归一化。

关键优势:
每个注意力头可以独立学习融合策略 :有的头侧重结构信息,有的头侧重数值关系,适配不同的图特征。保持排列不变性 :融合是逐元素操作,与行、列的顺序无关,满足矩阵型问题的基本属性。计算高效:整个过程仍可通过矩阵乘法并行实现,不破坏 Transformer 的高效性,转置矩阵即可方便支持双向注意力。
初始节点表示设计
初始嵌入是模型启动的基础,MatNet 采用 零向量 + 独热向量 的组合方案:
A 类节点:全部初始化为零向量。B 类节点:初始化为互不相同的独热向量。
- 不能直接用边权重初始化节点:向量是有序结构,而图的边没有天然顺序,直接使用会破坏排列不变性。
- 零向量的意义:只要 B 类节点初始有区分度,经过第一层交叉注意力后,A 类节点就能获得独特的表示;同时零向量初始化让 A 类节点数量可以任意变化,天然支持可变规模输入。
- 灵活性:若 B 类节点规模无法预先确定,可用随机向量替代独热向量,完全解除规模限制,仅带来微小的性能下降。
天然支持实例增强(Instance Augmentation)
初始嵌入的设计天然适配实例增强策略:每次运行时随机打乱 B 类节点独热向量的顺序,相当于对同一个问题生成不同的编码视角,从而得到多个差异较大的解,选取最优即可。
论文实验证明,这种方法的效果远优于传统的多次采样(相同编码下采样不同动作):即使 10 倍的采样次数,也无法达到 128 次实例增强的解质量。
实验分析
论文选择了两个性质完全不同的经典矩阵型 CO 问题验证 MatNet 的有效性,均采用 MatNet 编码器 + 自回归解码器 + POMO 强化学习训练 的端到端框架。
非对称旅行商问题(ATSP)
TSP 是组合优化的标杆问题,但绝大多数深度学习方法只针对欧氏对称 TSP(用坐标输入)。一旦放宽对称假设(实际中普遍存在,如单行道、不同交通方式),就变成 ATSP,只能用距离矩阵描述,此前没有深度学习方法能有效解决。

MatNet 作为首个能处理 ATSP 的深度学习方法,单次推理就远超简单启发式;通过实例增强后,解的质量非常接近专业级启发式算法 LKH3,且保持了深度学习方法的泛用性。
柔性流水车间调度问题(FFSP)
这是论文最具说服力的实验,也是深度学习首次在经典调度问题上全面超越传统运筹学方法。
柔性流水车间(FFSP/HFSP)是工业制造中最常见的调度模型:工件需按顺序经过 S 个加工阶段,每个阶段有 M 台并行机器,工件可选择该阶段任意一台机器加工,目标是最小化总完工时间(Makespan)。每个阶段对应一个 M×N 的加工时间矩阵。
FFSP 复杂度远高于 TSP,传统 MIP 在中等规模下就无法在合理时间内得到可行解,元启发式算法耗时久且解的质量有限。
实验设置
- 场景:3 个加工阶段,每阶段 4 台机器,测试规模 20/50/100 个工件。
- 对比基线:CPLEX(MIP)、最短作业优先(SJF)、遗传算法(GA)、粒子群优化(PSO)。


MatNet 单次推理的解质量就显著优于所有传统方法,包括运行了几十小时的元启发式算法。以 100 工件为例,MatNet 比 PSO 的完工时间短约 8%,比 GA 短约 7.3%。
总结思考
提出了首个专门面向矩阵型关系数据的神经网络编码器 MatNet,为大量经典组合优化问题提供了统一的深度学习前端。将神经组合优化的适用范围从 欧氏坐标类简单问题 拓展到 矩阵型通用问题 ,打开了 ATSP、FFSP、指派问题、运输问题等一大批经典问题的深度学习求解路径。
端到端 RL 框架处理复杂硬约束的能力仍有不足,未来可结合 MIP、约束规划等传统方法构建混合模型。多次实例增强会线性增加推理时间,可研究更高效的解多样性提升方法。