Job Shop Scheduling Algorithms
Project description
Job Shop Scheduling Algorithms
This project implements various algorithms for solving the Job Shop Scheduling Problem (JSSP), including Q-Learning and Actor-Critic methods. It provides both a C++ library and Python bindings for easy integration into different environments.
Features
- Job Shop Environment simulation
- Q-Learning algorithm implementation
- Actor-Critic algorithm implementation
- Taillard problem instance generator
- Visualization of scheduling results
- Python bindings for easy integration
Implemented Algorithms
| Algorithm | Implemented | Notes |
|---|---|---|
| Q-Learning | ✅ | |
| SARSA | ❌ | |
| DQN (Deep Q-Network) | ❌ | |
| Double DQN | ❌ | |
| Dueling DQN | ❌ | |
| Actor-Critic | ✅ | |
| A2C (Advantage Actor-Critic) | ❌ | |
| A3C (Asynchronous Advantage Actor-Critic) | ❌ | |
| PPO (Proximal Policy Optimization) | ❌ | |
| TRPO (Trust Region Policy Optimization) | ❌ | |
| SAC (Soft Actor-Critic) | ❌ | |
| DDPG (Deep Deterministic Policy Gradient) | ❌ | |
| TD3 (Twin Delayed DDPG) | ❌ | |
| MADDPG (Multi-Agent DDPG) | ❌ | |
| QMIX (Q-Mixing) | ❌ | |
| VDN (Value Decomposition Networks) | ❌ | |
| Genetic Algorithms | ❌ | |
| Particle Swarm Optimization | ❌ | |
| Simulated Annealing | ❌ | |
| Ant Colony Optimization | ❌ |
Implemented Simulator Features
| Feature | Implemented | Notes |
|---|---|---|
| Jobs | ✅ | |
| Operations | ✅ | |
| Actions | ✅ | |
| Bindings | ✅ | |
| Taillard | ✅ | |
| Manual Environment Creator | ❌ | |
| Tool Changing | ❌ | |
| Tool Properties | ❌ | |
| Machine Breakdowns | ❌ | |
| Job Priority | ❌ | |
| Setup Times | ❌ | |
| Due Dates | ❌ |
Dependencies
This project uses vcpkg to manage C++ dependencies. The dependencies are specified in the vcpkg.json manifest file in the root directory of the project.
Before building the project, ensure you have the following installed:
Build Tools
sudo apt-get install build-essential pkg-config cmake git curl zip unzip tar autoconf autoconf-archive libtool
GLEW
sudo apt-get install libxmu-dev libxi-dev libgl-dev libglu1-mesa-dev
GLFW3
sudo apt-get install libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev
Python3
sudo apt-get install python3 python3-dev
Performance Tools (for WSL2)
sudo apt-get install linux-tools-common linux-tools-generic
sudo /usr/lib/linux-tools-6.8.0-36/perf
vcpkg Setup
To install vcpkg:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
Set the VCPKG_ROOT environment variable to the vcpkg installation directory:
export VCPKG_ROOT=/path/to/vcpkg
Building the Project
This project uses CMakePresets.json to manage build configurations. There are two main configurations: debug and release.
-
Clone the repository:
git clone https://github.com/cair/job-shop-simulator.git cd job-shop-simulator
-
To configure and build the project in debug mode:
cmake --preset=debug cmake --build --preset=debug
-
To configure and build the project in release mode:
cmake --preset=release cmake --build --preset=release
Installing the Python Package
To install the Python package, first ensure that the VCPKG_ROOT environment variable is set, then run:
pip install .
This will automatically use CMakePresets.json to build the project and install the Python package.
Usage
C++ Library
To use the C++ library in your project, include the necessary headers and link against the library:
#include <jobshop/job_shop_environment.h>
#include <jobshop/job_shop_qlearning.h>
// Your code here
Python Module
After installing the Python package, you can use it in your Python code:
import jobshop
# Create a job shop environment
env = jobshop.JobShopEnvironment(jobs)
# Create a Q-Learning agent
agent = jobshop.JobShopQLearning(env, alpha=0.1, gamma=0.9, epsilon=0.3)
# Train the agent
agent.train(num_episodes=1000)
# Print the best schedule
agent.printBestSchedule()
Project Structure
src/: Contains the C++ source filesinclude/: Contains the header filesbindings/: Contains the Python bindingsCMakeLists.txt: The main CMake configuration fileCMakePresets.json: Defines the build presetsvcpkg.json: Specifies the project dependencies for vcpkg
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Contact
If you have any questions or feedback, please open an issue on the GitHub repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jobshop-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: jobshop-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e649323136819c28b061c62369b111fa765fe8cf02d43a9cc7c29c0aeea7df46
|
|
| MD5 |
2e5994f80404c921c2d68988ebf1c316
|
|
| BLAKE2b-256 |
286a55bc101ea3ac1a8cf404135b5c9144af1210724819fb94b56df896aa73d5
|
File details
Details for the file jobshop-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: jobshop-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
250b4d4ac8743fb9a85ade9146c07c1b07c3ccf8428e1db4910b31df6e9286da
|
|
| MD5 |
1708d8413f91f5e950e48a81d510b74d
|
|
| BLAKE2b-256 |
66d92971eedb2822198a8310f4b753fd1894dce39e7a852889a2a696b4a8932a
|
File details
Details for the file jobshop-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: jobshop-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca5cf79f160b4aa6717be56a96aa033068e6f131360d084f5605469eb20c5b3d
|
|
| MD5 |
876fb6bbe8f19c2537e2ac052439b3af
|
|
| BLAKE2b-256 |
4d714185eefc3e5a9fe2972f30cfc9ad11df3c5b087f70417d096653b15b335c
|