Learning to Dispatch for Job Shop Scheduling via Deep Reinforcement Learning (Zhang, 2020) 运用了深度强化学习的方式去为JSP问题寻找PDR(priority dispatching rule),模型通用性好,小size训练出的模型在大size的数据集上表现效果好。文章开放了源码,地址:https://github.com/zcajiayin/L2D。今天主要基于源码来分析一下Dispatching中graph的embedding过程。
一. 输入数据格式
测试文件格式:每个npy文件里有10个例子。每个例子用一个二维list表示。List[0]表示运行时间。List[1]表示运行机器。
输入数据格式:变量名:Data Type: array list Data[0]: 运行时间集合 Data[1]: 运行机器集合
二. 文中的GNN公式
三.GraphCNN编码的输入输出
self.feature_extract = GraphCNN (num_layers=num_layers, # 3
num_mlp_layers=num_mlp_layers_feature_extract, # 2
input_dim=input_dim, # 2
hidden_dim=hidden_dim, # 64
learn_eps=learn_eps, # false
neighbor_pooling_type=neighbor_pooling_type, # sum
device=device).to(device)
表格 1 GRAPH CNN输入参数
变量名 |
Value |
Type |
说明 |
num_layers |
3 |
GraphCNN输入参数 |
网络层数 |
num_mlp_layers |
2 |
GraphCNN输入参数 |
MLP层数 K |
input_dim |
2 |
GraphCNN输入参数 |