Skip to main content

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.


Open in Colab


🎯 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 (Local or Remote Benchmark)

import os
import requests
from metaforge.problems.benchmark_loader import load_job_shop_instance
from metaforge.metaforge_runner import run_solver

# You can pass a local path or a URL to load the problem!
problem = load_job_shop_instance("https://raw.githubusercontent.com/Mageed-Ghaleb/MetaForge/main/data/benchmarks/ft06.txt")

# Run a solver (sa, ts, ga, aco, pso, ...)
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 the data/benchmarks/ folder.


4. Interactive Notebook

Explore MetaForge hands-on with our example notebook:

📓 MetaForge_Example.ipynb

It walks you through:

  • Loading benchmark problems
  • Running various solvers (TS, GA, DQN, etc.)
  • Plotting convergence + Gantt charts
  • Comparing performance across solvers

✅ Coming soon: One-click Colab version for browser-based use — no setup needed.


📚 Documentation

📘 Full documentation site coming soon! In the meantime, browse core modules below:


🧠 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

metaforge-1.0.2.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metaforge-1.0.2-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file metaforge-1.0.2.tar.gz.

File metadata

  • Download URL: metaforge-1.0.2.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for metaforge-1.0.2.tar.gz
Algorithm Hash digest
SHA256 7b5e66d85a06e27cbeed064febb354f640d217e78dce5c598e9c630e2c4f4eaf
MD5 58a94f6cbbe5d10684c311b44bd1ff8a
BLAKE2b-256 7cd4a7593cb8b6fe44e2e679b543d8f3d6e019a4cb497f667a9decdd172132e5

See more details on using hashes here.

File details

Details for the file metaforge-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: metaforge-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for metaforge-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 40e3d4d1ef4e482a5ccf56dc68f3223f575652b0c0d9a2aa8e090ea82e581fb8
MD5 caa2c2d914ca566f459d541a2df4c903
BLAKE2b-256 1e2fad4e61ab0a8b3df040b0771c9a87018ed20833495894eebc49488b836b90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page