You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An easy-to-use and modular Python library for the Job Shop Scheduling Problem (JSSP) with a special focus on graph representations.
14
+
JobShopLib is a Python package for creating, solving, and visualizing Job Shop Scheduling Problems (JSSP).
15
15
16
-
It provides intuitive data structures to represent instances and solutions, as well as solvers and visualization tools.
16
+
It follows a modular design, allowing users to easily extend the library with new solvers, dispatching rules, visualization functions, etc.
17
17
18
-
See the [this](https://colab.research.google.com/drive/1XV_Rvq1F2ns6DFG8uNj66q_rcowwTZ4H?usp=sharing) Google Colab notebook for a quick start guide!
18
+
See [this](https://colab.research.google.com/drive/1XV_Rvq1F2ns6DFG8uNj66q_rcowwTZ4H?usp=sharing) Google Colab notebook for a quick start guide!
19
19
20
-
## Installation
20
+
## Installation:package:
21
21
22
-
You can install the library from PyPI:
22
+
<!-- start installation -->
23
+
24
+
JobShopLib is distributed on [PyPI](https://pypi.org/project/job-shop-lib/) and it supports Python 3.10+.
25
+
26
+
You can install the latest version using `pip`:
23
27
24
28
```bash
25
29
pip install job-shop-lib
26
30
```
27
31
28
-
## Quick Start :rocket:
32
+
<!-- end installation -->
33
+
34
+
<!-- key features -->
35
+
36
+
## Key Features :star:
37
+
38
+
-**Data Structures**: Easily create, manage, and manipulate job shop instances and solutions with user-friendly data structures. See [Getting Started](docs/source/examples/00-Getting-Started.ipynb) and [How Solutions are Represented](docs/source/examples/01-How-Solutions-are-Represented.ipynb).
39
+
40
+
-**Benchmark Instances**: Load well-known benchmark instances directly from the library without manual downloading. See [Load Benchmark Instances](docs/source/examples/05-Load-Benchmark-Instances.ipynb).
41
+
42
+
-**Random Instance Generation**: Create random instances with customizable sizes and properties or augment existing ones. See [`generation`](job_shop_lib/generation) package.
43
+
44
+
-**Multiple Solvers**:
45
+
-**Constraint Programming Solver**: OR-Tools' CP-SAT solver. See [Solving the Problem](docs/source/examples/02-Solving-the-Problem.ipynb).
46
+
47
+
-**Dispatching Rule Solvers**: Use any of the available dispatching rules or create custom ones. See [Dispatching Rules](docs/source/examples/03-Dispatching-Rules.ipynb).
48
+
49
+
-**Gantt Charts**: Visualize final schedules and how are they created iteratively by dispatching rule solvers or sequences of scheduling decisions with GIFs or videos. See [Save Gif](docs/source/examples/06-Save-Gif.ipynb).
50
+
51
+
-**Graph Representations**:
52
+
-**Disjunctive Graphs**: Represent and visualize instances as disjunctive graphs. See [Disjunctive Graph](docs/source/examples/04-Disjunctive-Graph.ipynb).
53
+
-**Agent-Task Graphs**: Encode instances as agent-task graphs (introduced in [ScheduleNet paper](https://arxiv.org/abs/2106.03051)). See [Agent-Task Graph](docs/source/examples/07-Agent-Task-Graph.ipynb).
54
+
- Build your own custom graphs with the `JobShopGraph` class.
55
+
56
+
-**Gymnasium Environments**: Two environments for solving the problem with Graph Neural Networks (GNNs) or any other method, and Reinforcement Learning (RL). See [SingleJobShopGraphEnv](docs/source/examples/09-SingleJobShopGraphEnv.ipynb) and [MultiJobShopGraphEnv](examples/10-MultiJobShopGraphEnv.ipynb).
57
+
58
+
<!-- end key features -->
59
+
60
+
## Some Examples :rocket:
29
61
30
62
### Create a Job Shop Instance
31
63
32
-
You can create a Job Shop Instance by defining the jobs and operations. An operation is defined by the machine(s) it is processed on and the duration (processing time).
64
+
You can create a `JobShopInstance` by defining the jobs and operations. An operation is defined by the machine(s) it is processed on and the duration (processing time).
33
65
34
66
```python
35
67
from job_shop_lib import JobShopInstance, Operation
@@ -60,7 +92,7 @@ from job_shop_lib.benchmarking import load_benchmark_instance
60
92
ft06 = load_benchmark_instance("ft06")
61
93
```
62
94
63
-
The module `benchmarks` contains functions to load the instances from the file and return them as `JobShopInstance` objects without having to download them
95
+
The module `benchmarking` contains functions to load the instances from the file and return them as `JobShopInstance` objects without having to download them
64
96
manually.
65
97
66
98
The contributions to this benchmark dataset are as follows:
@@ -122,7 +154,7 @@ Every solver is a `Callable` that receives a `JobShopInstance` and returns a `Sc
122
154
```python
123
155
import matplotlib.pyplot as plt
124
156
125
-
from job_shop_lib.cp_satimport ORToolsSolver
157
+
from job_shop_lib.constraint_programmingimport ORToolsSolver
126
158
from job_shop_lib.visualization import plot_gantt_chart
0 commit comments