Implementation of the IEEE TII paper Flexible Job Shop Scheduling via Graph Neural Network and Deep Reinforcement Learning. IEEE Transactions on Industrial Informatics, 2022.
@ARTICLE{9826438,
author={Song, Wen and Chen, Xinyang and Li, Qiqiang and Cao, Zhiguang},
journal={IEEE Transactions on Industrial Informatics},
title={Flexible Job Shop Scheduling via Graph Neural Network and Deep Reinforcement Learning},
year={2022},
volume={},
number={},
pages={1-11},
doi={10.1109/TII.2022.3189725}
}
- python
$\ge$ 3.6.13 - pytorch
$\ge$ 1.8.1 - gym
$\ge$ 0.18.0 - numpy
$\ge$ 1.19.5 - pandas
$\ge$ 1.1.5 - visdom
$\ge$ 0.1.8.9
Note that pynvml is used in test.py to avoid excessive memory usage of GPU, please modify the code when using CPU.
data_devanddata_testare the validation sets and test sets, respectively.datasaves the instance files generated by./utils/create_ins.pyenvcontains code for the DRL environmentgraphis part of the code related to the graph neural networkmodelsaves the model for testingresultssaves the trained modelssaveis the folder where the experimental results are savedutilscontains some helper functionsconfig.jsonis the configuration filemlp.pyis the MLP code (referenced from L2D)PPO_model.pycontains the implementation of the algorithms in this article, including HGNN and PPO algorithmstest.pyfor testingtrain.pyfor trainingvalidate.pyis used for validation without manual calls
There are various experiments in this article, which are difficult to be covered in a single run. Therefore, please change config.json before running.
Note that disabling the validate_gantt() function in schedule() can improve the efficiency of the program, which is used to check whether the solution is feasible.
python train.py
Note that there should be a validation set of the corresponding size in ./data_dev.
python test.py
Note that there should be model files (*.pt) in ./model.