jsp_framework icon indicating copy to clipboard operation
jsp_framework copied to clipboard

A Python library for implementing and testing algorithm for Job-Shop Scheduling problem.

Job-Shop Schedule Problem Solving Framework

A framework to explore algorithms for Job-Shop Schedule Problem (JSSP).

  • Pre-defined solvers for benchmark.

    • [x] Google OR-Tools Constraint Programming solver
    • [x] Mathematical solvers (CBC, SCIP, Gurobi) based on COIN-OR PuLP
    • [x] Priority dispatching
    • [ ] Tabu search
    • [ ] Genetic algorithm
    • [ ] Genetic programming
    • [ ] Reinforcement learning
  • Implement and test your solver efficiently.

Problem description

According to the problem description here:

In the classical Job-Shop Schedule Problem, there are $n$ jobs that must be processed on $m$ machines. Each job consists of a sequence of different tasks. Each task needs to be processed during an uninterrupted period of time on a given machine.

In general, JSSP can be modeled in direct or indirect ways, i.e., mathematical model, and disjunctive graph.

  • mathematical model - take start_time of each task as variable and solve it directly;
  • disjunctive graph - solve the sequence of tasks assigned in each machine first and deduce start_time accordingly.

A detailed description in Chinese here.

Installation

python setup.py develop

Documentation

  • Load or create a problem
  • Solve problem with built-in solver
  • Build new solver
  • Run solvers benchmark
  • Class diagram

Combined documents in Chinese here 作业车间调度问题求解框架.

License

The project is licensed under the terms of the Apache License 2.0.