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.1.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.1-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: metaforge-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 9f00b56f86f6da9f7f87468f7f8f9085500357a7c1f0d44dbe0b8399a82c39e8
MD5 64942db583ce21c2c991f4b1e0c63a23
BLAKE2b-256 06764d14d96e9efc71cd50086632096ff871efcf73998f4eb438d0b4d2d0cace

See more details on using hashes here.

File details

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

File metadata

  • Download URL: metaforge-1.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 631196542a3ede85aeab954afeedf04e42b8760c869035c4506404c49d33a9a3
MD5 860918900cd62f2a96d6b9e0de8f858d
BLAKE2b-256 1f8a4996dfa4b8be51fe4229e41205dd11470f94ea816878c181050a8ec0fd8a

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