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 1 month 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 (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-02-20T09:46:29.000Z (3 months ago)
- Last Synced: 2025-03-21T18:09:00.197Z (about 2 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 ([email protected]).