🔧 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
Metadata
Release files for metaforge 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| metaforge-1.0.3.tar.gz | 20.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| metaforge-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.9 kB
Release files / metaforge-1.0.3.tar.gz
| Download URL | metaforge-1.0.3.tar.gz |
|---|---|
| Size | 20.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
adc544b35a3d12e46cd8ac1dbf0f521fdf37787f5b6d3d1e497d961acd738a25
|
|
BLAKE2b-256 checksum How to use checksums |
1080804a188eab66788ab089bc32f13b04b57993bd853bcfb384f62b3accc45c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.9
|
Release files / metaforge-1.0.3-py3-none-any.whl
| Download URL | metaforge-1.0.3-py3-none-any.whl |
|---|---|
| Size | 24.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0ea81ee64432863fe2cd603aafd878e746eb65959b85e3ec0548864b1b6f0da6
|
|
BLAKE2b-256 checksum How to use checksums |
962487bd29cb5b9235327678079f309ad73c114e20a98e600f8941598eec2e39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.9
|