Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tpaviot/processscheduler
A Python package for automatic and optimized resource scheduling
https://github.com/tpaviot/processscheduler
constraint-satisfaction-problem project-management resource-allocation scheduling
Last synced: 1 day ago
JSON representation
A Python package for automatic and optimized resource scheduling
- Host: GitHub
- URL: https://github.com/tpaviot/processscheduler
- Owner: tpaviot
- License: gpl-3.0
- Created: 2020-12-21T10:49:42.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2025-01-16T13:32:48.000Z (17 days ago)
- Last Synced: 2025-01-25T15:06:53.533Z (8 days ago)
- Topics: constraint-satisfaction-problem, project-management, resource-allocation, scheduling
- Language: Jupyter Notebook
- Homepage: https://processscheduler.github.io/
- Size: 10 MB
- Stars: 65
- Watchers: 5
- Forks: 23
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ProcessScheduler
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/7221205f866145bfa4f18c08bd96e71f)](https://www.codacy.com/gh/tpaviot/ProcessScheduler/dashboard?utm_source=github.com&utm_medium=referral&utm_content=tpaviot/ProcessScheduler&utm_campaign=Badge_Grade)
[![codecov](https://codecov.io/gh/tpaviot/ProcessScheduler/branch/master/graph/badge.svg?token=9HI1FPJUDL)](https://codecov.io/gh/tpaviot/ProcessScheduler)
[![Azure Build Status](https://dev.azure.com/tpaviot/ProcessScheduler/_apis/build/status/tpaviot.ProcessScheduler?branchName=master)](https://dev.azure.com/tpaviot/ProcessScheduler/_build?definitionId=9)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/tpaviot/ProcessScheduler/HEAD?filepath=examples-notebooks)
[![PyPI version](https://badge.fury.io/py/ProcessScheduler.svg)](https://badge.fury.io/py/ProcessScheduler)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4480745.svg)](https://doi.org/10.5281/zenodo.4480745)ProcessScheduler is a Python package for optimizing scheduling problems using advanced constraint satisfaction techniques. It provides an intuitive API for modeling complex scheduling scenarios while handling the underlying mathematical computations transparently.
## Updates
- 2024/01/31: Release 2.0.0
- 2024/01/30: Release 2.0.0a
- 2023/12/13: Huge on-going refactoring [#133](https://github.com/tpaviot/ProcessScheduler/issues/133)
- 2023/12/12: Release 0.9.4## Key Features
- **Task Management**
- Define tasks with duration, priority, and work requirements
- Support for fixed, variable, and zero-duration tasks
- Optional tasks and task dependencies- **Resource Handling**
- Individual workers with productivity and cost parameters
- Resource pools with shared skills
- Resource availability and unavailability periods- **Constraint Modeling**
- Rich set of task and resource constraints
- First-order logic operations (NOT, OR, XOR, AND, IMPLIES, IF/THEN/ELSE)
- Buffer management for material consumption/production- **Optimization & Analysis**
- Multi-objective optimization (makespan, flowtime, cost)
- Custom performance indicators
- Gantt chart visualization
- Export to JSON, SMT-LIB 2.0, Excel formats## Installation
### Basic Installation
```bash
pip install ProcessScheduler==2.0.0
```### Full Installation (with optional dependencies)
```bash
pip install ProcessScheduler[full]==2.0.0
# Or install optional dependencies separately:
pip install matplotlib plotly kaleido ipywidgets isodate ipympl psutil XlsxWriter
```## Documentation & Examples
- [Documentation](https://processscheduler.github.io/)
- [Interactive Examples](https://mybinder.org/v2/gh/tpaviot/ProcessScheduler/HEAD?filepath=examples-notebooks) (via Binder)## Quick Start
```python
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](examples-notebooks/pics/hello_world_gantt.svg)
## 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 ([email protected]).