pyjobshop

Solve scheduling problems with constraint programming in Python.

https://github.com/pyjobshop/pyjobshop

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.0%) to scientific vocabulary

Keywords

constraint-programming cp-optimizer cp-sat fjsp flexible-job-shop flow-shop job-shop job-shop-scheduling jobshop operations-research optimization or-tools psplib rcpsp scheduling
Last synced: 6 months ago · JSON representation ·

Repository

Solve scheduling problems with constraint programming in Python.

Basic Info
  • Host: GitHub
  • Owner: PyJobShop
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage: https://pyjobshop.org
  • Size: 2.93 MB
Statistics
  • Stars: 59
  • Watchers: 3
  • Forks: 11
  • Open Issues: 37
  • Releases: 8
Topics
constraint-programming cp-optimizer cp-sat fjsp flexible-job-shop flow-shop job-shop job-shop-scheduling jobshop operations-research optimization or-tools psplib rcpsp scheduling
Created over 2 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

PyJobShop logo

PyPI License CI DOC Codecov

PyJobShop is a Python library for solving scheduling problems with constraint programming. It currently supports the following scheduling problems:

  • Resource environments: single machines, parallel machines, hybrid flow shops, open shops, job shops, flexible job shops, distributed shops, renewable resources and non-renewable resources.
  • Constraints: release dates, deadlines, due dates, multiple modes, permutations, sequence-dependent setup times, no-wait, no-idle, blocking, breaks, optional task selection, and arbitrary precedence constraints.
  • Objective functions: minimizing makespan, total flow time, number of tardy jobs, total tardiness, total earliness, maximum tardiness, and total setup times.

You can find PyJobShop on the Python Package Index under the name pyjobshop. To install it, simply run:

shell pip install pyjobshop

The documentation is available here.

[!TIP] If you are new to scheduling or constraint programming, you might benefit from first reading the introduction to scheduling and introduction to constraint programming pages.

Constraint programming solvers

PyJobShop uses OR-Tools' CP-SAT solver as its default constraint programming solver. We also provide support for CP Optimizer. See our documentation for instructions on how to install PyJobShop with CP Optimizer.

Examples

We provide example notebooks that show how PyJobShop may be used to solve scheduling problems.

  • A short tutorial and introduction to PyJobShop's modeling interface, available here. This is a great way to get started with PyJobShop.
  • Notebooks solving the classical machine scheduling problems such as the flexible job shop problem (here), the hybrid flow shop (here), and the permutation flow shop (here).
  • A notebook showing how to solve different project scheduling problems, here.
  • A notebook showing how to solve scheduling problems with optional tasks, here.
  • An overview of supported objective functions, here.

Contributing

We are very grateful for any contributions you are willing to make. Please have a look here to get started. If you aim to make a large change, it is helpful to discuss the change first in a new GitHub issue. Feel free to open one!

Getting help

Feel free to open an issue or a new discussion thread here on GitHub. Please do not e-mail us with questions, modeling issues, or code examples. Those are much easier to discuss via GitHub than over e-mail. When writing your issue or discussion, please follow the instructions here.

How to cite PyJobShop

If you use PyJobShop in your research, please consider citing the following paper:

Lan, L., and Berkhout, J. (2025). PyJobShop: Solving scheduling problems with constraint programming in Python. https://arxiv.org/abs/2502.13483

Or, using the following BibTeX entry:

bibtex @misc{Lan_Berkhout_2025, title={{PyJobShop}: Solving scheduling problems with constraint programming in {Python}}, author={Leon Lan and Joost Berkhout}, year={2025}, url={https://arxiv.org/abs/2502.13483}, archivePrefix="arXiv" eprint={2502.13483}, }

Owner

  • Name: PyJobShop
  • Login: PyJobShop
  • Kind: organization

Citation (CITATION.cff)

cff-version: "1.2.0"
message: "If you use this software, please cite it using the following metadata."
authors:
  - family-names: "Lan"
    given-names: "Leon"
    orcid: "https://orcid.org/0000-0001-7479-0218"
  - family-names: "Berkhout"
    given-names: "Joost"
    orcid: "https://orcid.org/0000-0001-5883-9683"
title: "PyJobShop"
url: "https://arxiv.org/abs/2502.13483"
preferred-citation:
  type: "misc"
  authors:
    - family-names: "Lan"
      given-names: "Leon"
      orcid: "https://orcid.org/0000-0001-7479-0218"
    - family-names: "Berkhout"
      given-names: "Joost"
      orcid: "https://orcid.org/0000-0001-5883-9683"
  title: "PyJobShop: Solving scheduling problems with constraint programming in Python"
  year: 2025
  url: "https://arxiv.org/abs/2502.13483"
  archiveprefix: "arXiv"
  eprint: "2502.13483"

GitHub Events

Total
  • Create event: 68
  • Release event: 5
  • Issues event: 92
  • Watch event: 27
  • Delete event: 50
  • Member event: 1
  • Issue comment event: 214
  • Push event: 386
  • Pull request review comment event: 70
  • Pull request review event: 70
  • Pull request event: 97
  • Fork event: 7
Last Year
  • Create event: 68
  • Release event: 5
  • Issues event: 92
  • Watch event: 27
  • Delete event: 50
  • Member event: 1
  • Issue comment event: 214
  • Push event: 386
  • Pull request review comment event: 70
  • Pull request review event: 70
  • Pull request event: 97
  • Fork event: 7

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 107
  • Total pull requests: 128
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 10 days
  • Total issue authors: 5
  • Total pull request authors: 5
  • Average comments per issue: 1.48
  • Average comments per pull request: 1.09
  • Merged pull requests: 83
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 52
  • Pull requests: 72
  • Average time to close issues: 18 days
  • Average time to close pull requests: 9 days
  • Issue authors: 5
  • Pull request authors: 5
  • Average comments per issue: 0.96
  • Average comments per pull request: 1.15
  • Merged pull requests: 44
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • leonlan (99)
  • JoostBerkhout (5)
  • StevenCellist (1)
  • OMGer-YTW (1)
  • sublimati0n (1)
Pull Request Authors
  • leonlan (118)
  • JoostBerkhout (7)
  • leonplanken (1)
  • kimvandenhouten (1)
  • sublimati0n (1)
Top Labels
Issue Labels
enhancement (56) discussion (12) maintenance (12) documentation (9) +objective (6) or-tools (5) on-hold (4) bug (4) +performance (3) +constraint (3) research (2) cp-optimizer (1) changelog (1) install (1)
Pull Request Labels
documentation (3) research (1) cp-optimizer (1) enhancement (1) +objective (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 569 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 9
  • Total maintainers: 1
pypi.org: pyjobshop

Solving scheduling problems with constraint programming.

  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 569 Last month
Rankings
Dependent packages count: 9.8%
Average: 37.3%
Dependent repos count: 64.8%
Maintainers (1)
Last synced: 6 months ago