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 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 Open In Colab
MetaForge_Complete_Testing.ipynb Full testing suite across all solvers Open In Colab

📚 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

metaforge-1.0.3.tar.gz (20.7 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.3-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

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

Hashes for metaforge-1.0.3.tar.gz
Algorithm Hash digest
SHA256 adc544b35a3d12e46cd8ac1dbf0f521fdf37787f5b6d3d1e497d961acd738a25
MD5 aeac653fc14202461a1355ed5c90c127
BLAKE2b-256 1080804a188eab66788ab089bc32f13b04b57993bd853bcfb384f62b3accc45c

See more details on using hashes here.

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

Hashes for metaforge-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0ea81ee64432863fe2cd603aafd878e746eb65959b85e3ec0548864b1b6f0da6
MD5 3c32af0fc151b3fce14193e6651676c9
BLAKE2b-256 962487bd29cb5b9235327678079f309ad73c114e20a98e600f8941598eec2e39

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