Skip to main content

Codacy Badge codecov Azure Build Status Binder PyPI version DOI

ProcessScheduler

ProcessScheduler is a Python package for creating optimized scheduling based on identified resources and tasks to be carried out. It offers a set of classes and methods for finely modeling a wide range of use cases with rich semantics. Complex mathematical calculations necessary for problem resolution are transparently handled for the user, allowing them to focus on problem modeling. ProcessScheduler is aimed at project managers, business organization consultants, or industrial logistics experts looking to optimize the achievement of time or cost objectives.

Updates

  • 2024/01/31: Release 2.0.0
  • 2024/01/30: Release 2.0.0a
  • 2023/12/13: Huge on-going refactoring #133
  • 2023/12/12: Release 0.9.4

Features

  • Tasks: Creation of tasks defined by their duration, priority, and required effort.
  • Resources: Individual workers defined by their productivity, cost, and availability.
  • Resource Allocation: Allocation from a set of workers sharing common skills.
  • Buffers: Support for tasks that consume raw materials.
  • Indicators: Including cost, resource effort, or any customized indicator.
  • Task and resource constraints that can be combined using first-order logic operations (NOT, OR, XOR, AND, IMPLIES, IF/THEN ELSE) for rich representations.
  • Multi-optimized schedule computation, including makespan, flowtime, earliest start, latest start, resource cost, or any customized indicator you have defined.
  • Gantt diagram generation and rendering.
  • Results export to JSON, SMT-LIB 2.0, Excel, or other formats for further analysis.

Install latest version with pip

Install with pip.

pip install ProcessScheduler==2.0.0

This comes with the only required dependency: the Microsoft free and open source licenses S3 solver. If you want to take advantage of all the features, you can install optional dependencies:

pip install matplotlib plotly kaleido ipywidgets isodate ipympl psutil XlsxWriter

Run online

There are some Jupypter notebooks that can be executed online at myBinder.org

Documentation

User-end documentation available at https://processscheduler.readthedocs.io/

Helloworld

import processscheduler as ps
# a simple problem, without horizon (solver will find it)
pb = ps.SchedulingProblem('HelloWorldProcessScheduler')

# add two tasks
task_hello = ps.FixedDurationTask('Process', duration=2)
task_world = ps.FixedDurationTask('Scheduler', duration=2)

# precedence constraint: task_world must be scheduled
# after task_hello
ps.TaskPrecedence(task_hello, task_world)

# solve
solver = ps.SchedulingSolver(pb)
solution = solver.solve()

# display solution, ascii or matplotlib gantt diagram
solution.render_gantt_matplotlib()

png

Code quality

ProcessScheduler uses the following tools to ensure code quality:

  • unittests,
  • code coverage (coverage.py, codecov.io),
  • continuous-integration at MS azure,
  • static code analysis (codacy),
  • spelling mistakes tracking (codespell),
  • code formatting using the black python formatter

License/Author

ProcessScheduler is distributed under the terms of the GNU General Public License v3 or (at your option) any later version. It is currently developed and maintained by Thomas Paviot (tpaviot@gmail.com).

Release files for ProcessScheduler 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ProcessScheduler 2.0.0
File Size Uploaded
processscheduler-2.0.0.tar.gz 53.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ProcessScheduler 2.0.0
File Interpreter ABI Platform
processscheduler-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 120.1 kB

Release files / processscheduler-2.0.0.tar.gz

Download URL processscheduler-2.0.0.tar.gz
Size 53.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1caf481ac42f060991b12b168fc48d122c579b88e1aa26047d643e4540658ec7
BLAKE2b-256 checksum
How to use checksums
b868180792297907b8bc29c20bab63a6adbab8566525a479648859080adc40dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.9.0 Linux/6.5.0-15-generic

Release files / processscheduler-2.0.0-py3-none-any.whl

Download URL processscheduler-2.0.0-py3-none-any.whl
Size 66.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e8aa393cabb05007e270afa320802c447b892f4949b6ef0adb3709e74a570044
BLAKE2b-256 checksum
How to use checksums
9e55af185a7848410e5ee67ec06c5c191ab9277ae1951f43ccb5c7b973c864c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.9.0 Linux/6.5.0-15-generic

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

1 release file

0.2.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page