MetaForge: A modular optimization framework for solving Job Shop Scheduling problems using metaheuristics and learning-based approaches.
Project description
🔧 MetaForge
MetaForge is a modular optimization framework for solving Job Shop Scheduling Problems (JSSP) using advanced metaheuristics and learning-based approaches.
🚀 From classic solvers like Tabu Search and Genetic Algorithms to modern DQN-based reinforcement learning and Neuroevolution — MetaForge brings it all together with clarity, structure, and fun.
🎯 Key Features
- ✅ Support for classic OR-Library and custom JSON benchmark formats
- 🧠 Modular solvers:
- Tabu Search
- Simulated Annealing
- Genetic Algorithm
- Ant Colony Optimization
- Q-Learning
- DQN (naive & replay-based)
- Neuroevolution
- 📊 Beautiful convergence plots, runtime comparisons, and Gantt chart visualizations
- 📦 Easy packaging, CLI usage, and extension with new solvers
- 🔬 Designed for researchers, students, and practitioners alike
🚀 Quick Start
1. Install MetaForge
pip install metaforge
Or clone locally for development:
git clone https://github.com/mageed-ghaleb/metaforge.git
cd metaforge
pip install -e .
2. Run a Solver
from metaforge.problems.benchmark_loader import load_job_shop_instance
from metaforge.metaforge_runner import run_solver
problem = load_job_shop_instance("data/benchmarks/ft06.txt")
result = run_solver("ga", problem, track_schedule=True)
print("Best Makespan:", result["makespan"])
3. Run All Solvers on All Benchmarks
python -m src.metaforge.utils.compare_solvers
Generates CSV, plots, and Gantt charts from data/benchmarks/.
4. Interactive Notebook
Explore MetaForge hands-on with our example notebook:
It walks you through:
- Loading benchmark problems
- Running various solvers (TS, GA, DQN, etc.)
- Plotting convergence + Gantt charts
- Comparing performance across solvers
Perfect for experimentation, demos, and academic use.
📚 Documentation
🧠 Why MetaForge?
Most libraries focus only on one type of solver. MetaForge unifies traditional, bio-inspired, and learning-based approaches in one clean, extensible Python package — built for experimentation, benchmarking, and educational use.
Whether you're doing a thesis, publishing research, or solving real-world factory problems — MetaForge is your launchpad. 🚀
📈 Contributing
We're just getting started! Feel free to:
- Suggest solvers, features, or dataset formats
- Fork and extend
- Submit pull requests with improvements
📄 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.
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.0.tar.gz.
File metadata
- Download URL: metaforge-1.0.0.tar.gz
- Upload date:
- Size: 19.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfb85671f406677837d050d088f95fbdf6bdcba7d4dce36c87e123d4c3c5d92c
|
|
| MD5 |
1f176577f4b81f9fc19b69c8e545a577
|
|
| BLAKE2b-256 |
28f23a6b328a934001f71b39df00ae1f8d768d32b05108e876916e8d3b6a94bd
|
File details
Details for the file metaforge-1.0.0-py3-none-any.whl.
File metadata
- Download URL: metaforge-1.0.0-py3-none-any.whl
- Upload date:
- Size: 23.4 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 |
4b82a1a24bbb89eef61e57f65fd7a3fe10fcbb269b7f0492ed48b75cab4c3b90
|
|
| MD5 |
91221eb72c8ff4666585e66c8ce90e89
|
|
| BLAKE2b-256 |
e2e530a4850dc1b4bea7aea1dd57bbb54f0229c431cb7f888c6e0edc4d0c11b9
|