Skip to main content

A Python package for automatic and optimized resource scheduling

Project description

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/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.0a

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).

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

processscheduler-2.0.0a0.tar.gz (53.3 kB view details)

Uploaded Source

Built Distribution

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

processscheduler-2.0.0a0-py3-none-any.whl (66.9 kB view details)

Uploaded Python 3

File details

Details for the file processscheduler-2.0.0a0.tar.gz.

File metadata

  • Download URL: processscheduler-2.0.0a0.tar.gz
  • Upload date:
  • Size: 53.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.9.0 Linux/6.5.0-15-generic

File hashes

Hashes for processscheduler-2.0.0a0.tar.gz
Algorithm Hash digest
SHA256 cecb868916c762903dd970f40fc44827e43925d2236e6a7bf1edffad78001a8d
MD5 c2aa6aa8943d24e9bd37438b0e95f1a2
BLAKE2b-256 1f6352e83aa0d6b6d260194f30f078802adb78d1f7d9993ebfbf80c98bf074f8

See more details on using hashes here.

File details

Details for the file processscheduler-2.0.0a0-py3-none-any.whl.

File metadata

  • Download URL: processscheduler-2.0.0a0-py3-none-any.whl
  • Upload date:
  • Size: 66.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.9.0 Linux/6.5.0-15-generic

File hashes

Hashes for processscheduler-2.0.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 10538410ae0722f2ea01e578fef7395dda7ae26987ef90a54972672392358985
MD5 ed980bfd9e1d2ecc44f1f9694e148323
BLAKE2b-256 7ba82ca4cf8effb5c9fe51a6f05b7cc71dc83e547a27697abdecfe9ed5c703b6

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