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: about 2 months 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 (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2025-02-20T09:46:29.000Z (10 months ago)
- Last Synced: 2025-03-21T18:09:00.197Z (9 months ago)
- Topics: constraint-satisfaction-problem, project-management, resource-allocation, scheduling
- Language: Jupyter Notebook
- Homepage: https://processscheduler.github.io/
- Size: 9.98 MB
- Stars: 67
- Watchers: 4
- Forks: 25
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ProcessScheduler
[](https://www.codacy.com/gh/tpaviot/ProcessScheduler/dashboard?utm_source=github.com&utm_medium=referral&utm_content=tpaviot/ProcessScheduler&utm_campaign=Badge_Grade)
[](https://codecov.io/gh/tpaviot/ProcessScheduler)
[](https://dev.azure.com/tpaviot/ProcessScheduler/_build?definitionId=9)
[](https://mybinder.org/v2/gh/tpaviot/ProcessScheduler/HEAD?filepath=examples-notebooks)
[](https://badge.fury.io/py/ProcessScheduler)
[](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()
```

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