tpaviot / ProcessScheduler

A Python package for automatic and optimized resource scheduling
https://processscheduler.github.io/
GNU General Public License v3.0
58 stars 17 forks source link
constraint-satisfaction-problem project-management resource-allocation scheduling

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

Features

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:

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