MetaForge: A modular optimization framework for solving Job Shop Scheduling problems using metaheuristics and learning-based approaches.
Project description
🔧 MetaForge
MetaForge is a modular Python toolkit for solving Job Shop Scheduling Problems (JSSP) using classic metaheuristics and modern reinforcement learning methods.
🚀 From Tabu Search and Genetic Algorithms to Deep Q-Networks (DQN) and Neuroevolution — MetaForge brings together the best of optimization and AI in one clean, extensible framework.
🎯 Key Features
- ✅ Solve classic benchmark problems (OR-Library, JSON)
- 🧠 Built-in solvers:
- Tabu Search (TS)
- Simulated Annealing (SA)
- Genetic Algorithm (GA)
- Ant Colony Optimization (ACO)
- Q-Learning
- DQN (with and without replay buffer)
- Neuroevolution
- 📊 Beautiful convergence and Gantt chart visualizations
- 🤖 Reinforcement Learning support out-of-the-box
- 🧪 Designed for research, education, and real-world production scheduling
📦 Installation
From PyPI:
pip install metaforge
From GitHub (latest):
pip install git+https://github.com/Mageed-Ghaleb/MetaForge.git
📁 Quick Start
from metaforge.problems.benchmark_loader import load_job_shop_instance
from metaforge.metaforge_runner import run_solver
# Load a benchmark from URL
url = "https://raw.githubusercontent.com/Mageed-Ghaleb/MetaForge/main/data/benchmarks/ft06.txt"
problem = load_job_shop_instance(url)
# Run a solver
result = run_solver("ts", problem)
# View makespan
print("Best Makespan:", result["makespan"])
📊 Visualizations
from metaforge.utils.visualization import plot_gantt_chart
schedule = result["schedules"][-1]
plot_gantt_chart(schedule, num_machines=problem.num_machines, num_jobs=len(problem.jobs))
📓 Notebooks
| Name | Description | Launch |
|---|---|---|
| MetaForge_Quick_Start.ipynb | Light demo: install, run, visualize | |
| MetaForge_Complete_Testing.ipynb | Full testing suite across all solvers |
📚 Documentation
🧠 Why MetaForge?
Most libraries focus on one type of solver. MetaForge unifies traditional algorithms and deep reinforcement learning into one clean package. Whether you’re teaching, publishing, or scheduling in a factory — MetaForge is your launchpad. 🚀
🔧 Benchmarks Supported
- FT06, FT10, FT20 (OR-Library)
- LA01–LA05
- JSON format coming soon
📈 Contributing
We're just getting started! Feel free to:
- Suggest solvers or enhancements
- Fork and extend
- Submit PRs — code, docs, notebooks, anything
📄 License
MIT License — free for academic and commercial use.
👨💻 Author
Mageed Ghaleb
📧 mageed.ghaleb@gmail.com
🔗 LinkedIn
🔗 GitHub
Built with ❤️ for solvers, schedules, and scientific curiosity.
🔎 Keywords (for discoverability)
MetaForge is designed for:
- Job Shop Scheduling Problems (JSSP)
- Metaheuristics (Tabu Search, Genetic Algorithm, ACO, SA)
- Reinforcement Learning in Scheduling (Q-Learning, DQN)
- Production Scheduling Optimization
- Flexible Flowshops & Real-world Scheduling
- Benchmark Comparisons and Solver Visualization
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 metaforge-1.0.3.tar.gz.
File metadata
- Download URL: metaforge-1.0.3.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adc544b35a3d12e46cd8ac1dbf0f521fdf37787f5b6d3d1e497d961acd738a25
|
|
| MD5 |
aeac653fc14202461a1355ed5c90c127
|
|
| BLAKE2b-256 |
1080804a188eab66788ab089bc32f13b04b57993bd853bcfb384f62b3accc45c
|
File details
Details for the file metaforge-1.0.3-py3-none-any.whl.
File metadata
- Download URL: metaforge-1.0.3-py3-none-any.whl
- Upload date:
- Size: 24.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ea81ee64432863fe2cd603aafd878e746eb65959b85e3ec0548864b1b6f0da6
|
|
| MD5 |
3c32af0fc151b3fce14193e6651676c9
|
|
| BLAKE2b-256 |
962487bd29cb5b9235327678079f309ad73c114e20a98e600f8941598eec2e39
|