Giter Club home page Giter Club logo

fjsp-drl's Introduction

fjsp-drl

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}
 }

Get Started

Installation

  • 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.

Introduction

  • data_dev and data_test are the validation sets and test sets, respectively.
  • data saves the instance files generated by ./utils/create_ins.py
  • env contains code for the DRL environment
  • graph is part of the code related to the graph neural network
  • model saves the model for testing
  • results saves the trained models
  • save is the folder where the experimental results are saved
  • utils contains some helper functions
  • config.json is the configuration file
  • mlp.py is the MLP code (referenced from L2D)
  • PPO_model.py contains the implementation of the algorithms in this article, including HGNN and PPO algorithms
  • test.py for testing
  • train.py for training
  • validate.py is used for validation without manual calls

Reproduce result in paper

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.

train

python train.py

Note that there should be a validation set of the corresponding size in ./data_dev.

test

python test.py

Note that there should be model files (*.pt) in ./model.

Reference

fjsp-drl's People

Contributors

songwenas12 avatar

Stargazers

Jiayi Luo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.