{"id":17140981,"url":"https://github.com/tpaviot/processscheduler","last_synced_at":"2025-10-31T14:30:55.120Z","repository":{"id":47312189,"uuid":"323307332","full_name":"tpaviot/ProcessScheduler","owner":"tpaviot","description":"A Python package for automatic and optimized resource scheduling","archived":false,"fork":false,"pushed_at":"2025-02-20T09:46:29.000Z","size":10470,"stargazers_count":67,"open_issues_count":24,"forks_count":25,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-21T18:09:00.197Z","etag":null,"topics":["constraint-satisfaction-problem","project-management","resource-allocation","scheduling"],"latest_commit_sha":null,"homepage":"https://processscheduler.github.io/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tpaviot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-21T10:49:42.000Z","updated_at":"2025-03-20T23:12:47.000Z","dependencies_parsed_at":"2023-10-11T18:29:27.405Z","dependency_job_id":"15ba9bb4-bbd6-48e7-abe4-9b2eb76b5fee","html_url":"https://github.com/tpaviot/ProcessScheduler","commit_stats":{"total_commits":908,"total_committers":11,"mean_commits":82.54545454545455,"dds":0.05947136563876654,"last_synced_commit":"66a47bc67d6fa5aa34e5e0b54d5a325ab378dacf"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaviot%2FProcessScheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaviot%2FProcessScheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaviot%2FProcessScheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaviot%2FProcessScheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpaviot","download_url":"https://codeload.github.com/tpaviot/ProcessScheduler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246085596,"owners_count":20721210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["constraint-satisfaction-problem","project-management","resource-allocation","scheduling"],"created_at":"2024-10-14T20:23:58.338Z","updated_at":"2025-10-31T14:30:55.086Z","avatar_url":"https://github.com/tpaviot.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProcessScheduler\n\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/7221205f866145bfa4f18c08bd96e71f)](https://www.codacy.com/gh/tpaviot/ProcessScheduler/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=tpaviot/ProcessScheduler\u0026amp;utm_campaign=Badge_Grade)\n[![codecov](https://codecov.io/gh/tpaviot/ProcessScheduler/branch/master/graph/badge.svg?token=9HI1FPJUDL)](https://codecov.io/gh/tpaviot/ProcessScheduler)\n[![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)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/tpaviot/ProcessScheduler/HEAD?filepath=examples-notebooks)\n[![PyPI version](https://badge.fury.io/py/ProcessScheduler.svg)](https://badge.fury.io/py/ProcessScheduler)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4480745.svg)](https://doi.org/10.5281/zenodo.4480745)\n\nProcessScheduler 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.\n\n## Updates\n\n-   2024/01/31: Release 2.0.0\n-   2024/01/30: Release 2.0.0a\n-   2023/12/13: Huge on-going refactoring [#133](https://github.com/tpaviot/ProcessScheduler/issues/133)\n-   2023/12/12: Release 0.9.4\n\n## Key Features\n\n- **Task Management**\n  - Define tasks with duration, priority, and work requirements\n  - Support for fixed, variable, and zero-duration tasks\n  - Optional tasks and task dependencies\n\n- **Resource Handling**\n  - Individual workers with productivity and cost parameters\n  - Resource pools with shared skills\n  - Resource availability and unavailability periods\n\n- **Constraint Modeling**\n  - Rich set of task and resource constraints\n  - First-order logic operations (NOT, OR, XOR, AND, IMPLIES, IF/THEN/ELSE)\n  - Buffer management for material consumption/production\n\n- **Optimization \u0026 Analysis**\n  - Multi-objective optimization (makespan, flowtime, cost)\n  - Custom performance indicators\n  - Gantt chart visualization\n  - Export to JSON, SMT-LIB 2.0, Excel formats\n\n## Installation\n\n### Basic Installation\n```bash\npip install ProcessScheduler==2.0.0\n```\n\n### Full Installation (with optional dependencies)\n```bash\npip install ProcessScheduler[full]==2.0.0\n# Or install optional dependencies separately:\npip install matplotlib plotly kaleido ipywidgets isodate ipympl psutil XlsxWriter\n```\n\n## Documentation \u0026 Examples\n\n- [Documentation](https://processscheduler.github.io/)\n- [Interactive Examples](https://mybinder.org/v2/gh/tpaviot/ProcessScheduler/HEAD?filepath=examples-notebooks) (via Binder)\n\n\n## Quick Start\n\n```python\nimport processscheduler as ps\n# a simple problem, without horizon (solver will find it)\npb = ps.SchedulingProblem('HelloWorldProcessScheduler')\n\n# add two tasks\ntask_hello = ps.FixedDurationTask('Process', duration=2)\ntask_world = ps.FixedDurationTask('Scheduler', duration=2)\n\n# precedence constraint: task_world must be scheduled\n# after task_hello\nps.TaskPrecedence(task_hello, task_world)\n\n# solve\nsolver = ps.SchedulingSolver(pb)\nsolution = solver.solve()\n\n# display solution, ascii or matplotlib gantt diagram\nsolution.render_gantt_matplotlib()\n```\n\n![png](examples-notebooks/pics/hello_world_gantt.svg)\n\n## Code quality\n\nProcessScheduler uses the following tools to ensure code quality:\n\n-   unittests,\n-   code coverage (coverage.py, codecov.io),\n-   continuous-integration at MS azure,\n-   static code analysis (codacy),\n-   spelling mistakes tracking (codespell),\n-   code formatting using the black python formatter\n\n## License/Author\n\nProcessScheduler 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).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpaviot%2Fprocessscheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpaviot%2Fprocessscheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpaviot%2Fprocessscheduler/lists"}