[](https://pypi.org/project/psplib/)
[](https://github.com/PyJobShop/PSPLIB/actions/workflows/CI.yml)
# PSPLIB
This library implements parsers for various project scheduling benchmark instances, including:
- Resource-Constrained Project Scheduling Problem (RCPSP)
- Multi-Mode RCPSP (MMRCPSP)
- RCPSP with Minimal and Maximal Time Lags (RCPSP/max)
- Resource-Constrained Multi Project Scheduling Problem (RCMPSP)
- RCPSP with flexible project structure (RCPSP-PS) and RCPSP with alternative subgraphs (RCPSP-AS)
`psplib` has no dependencies and can be installed in the usual way:
```
pip install psplib
```
## Example usage
``` python
>>> from psplib import parse
>>> instance = parse("data/j301_1.sm", instance_format="psplib")
>>> instance.num_resources
4
>>> instance.resources
[Resource(capacity=12, renewable=True), ..., Resource(capacity=12, renewable=True)]
>>> instance.num_activities
32
>>> instance.activities
[Activity(modes=[Mode(duration=0, demands=[0, 0, 0, 0])], successors=[1, 2, 3], delays=None, name=''),
Activity(modes=[Mode(duration=8, demands=[4, 0, 0, 0])], successors=[5, 10, 14], delays=None, name=''),
...,
Activity(modes=[Mode(duration=0, demands=[0, 0, 0, 0])], successors=[], delays=None, name='')]
```
See [this](https://github.com/PyJobShop/PSPLIB/blob/main/example.ipynb) notebook for a slightly longer example demonstration of PSPLIB.
## Instance formats
`psplib` implements parsers for commonly used project scheduling instance formats, listed below.
To parse a specific instance format, set the `instance_format` argument in `parse`.
1. `psplib`: The **PSPLIB format** is used by the [PSPLIB](https://www.om-db.wi.tum.de/psplib/) library to describe RCPSP and MMRCPSP instances.
2. `patterson`: The **Patterson format**: used for RCPSP instances, mostly used by the [OR&S](https://www.projectmanagement.ugent.be/research/data) library. See [this](http://www.p2engine.com/p2reader/patterson_format) website for more details.
3. `rcpsp_max`: The **RCPSP/max format** is used for RCPSP/max instances from [TU Clausthal](https://www.wiwi.tu-clausthal.de/en/ueber-uns/abteilungen/betriebswirtschaftslehre-insbesondere-produktion-und-logistik/research/research-areas/project-generator-progen/max-and-psp/max-library/single-mode-project-duration-problem-rcpsp/max).
4. `mplib`: The **MPLIB format** is used for RCMPSP instances from the [MPLIB](https://www.projectmanagement.ugent.be/research/data) library.
5. `rcpsp_ps`: The **RCPSP-PS format** is the format used by [Van der Beek et al. (2024)](https://www.sciencedirect.com/science/article/pii/S0377221724008269).
Specifically, we included an extra line that defines for each task whether it is optional or not.
6. `aslib`: The **ASLIB format** is the format used by RCPSP-AS instances from the ASLIB instance set at [OR&S project database](https://www.projectmanagement.ugent.be/research/data).
ASLIB consist of three different parts (a, b, c).
To use this parser, you have to merge parts (a) and (b) into a single file - part (c) is not parsed.
## Instance databases
The following websites host widely-used project scheduling benchmark instances.
- [PSPLIB](https://www.om-db.wi.tum.de/psplib/) contains different problem sets for various types of resource constrained project scheduling problems as well as optimal and heuristic solutions.
- [OR&S project database](https://www.projectmanagement.ugent.be/research/data) is the research data website of the Operations Research and Scheduling (OR&S) Research group of the Faculty of Economics and Business Administration at Ghent University (Belgium). OR&S is very active in the field of project scheduling and has published instances for many project scheduling variants.
- [TU Clausthal](https://www.wiwi.tu-clausthal.de/ueber-uns/abteilungen/betriebswirtschaftslehre-insbesondere-produktion-und-logistik/forschung-und-transfer/schwerpunkte/projekt-generator) provides RCPSP/max benchmark instances.
Raw data
{
"_id": null,
"home_page": null,
"name": "psplib",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "project scheduling, psplib, scheduling",
"author": null,
"author_email": "Leon Lan <l.lan@vu.nl>",
"download_url": "https://files.pythonhosted.org/packages/de/22/a1d203b2b492072d13d360a34d1196f95c1ebaabce7499e9e6f1a7d85e04/psplib-0.3.0.tar.gz",
"platform": null,
"description": "[](https://pypi.org/project/psplib/)\n[](https://github.com/PyJobShop/PSPLIB/actions/workflows/CI.yml)\n\n# PSPLIB\n\nThis library implements parsers for various project scheduling benchmark instances, including:\n- Resource-Constrained Project Scheduling Problem (RCPSP)\n- Multi-Mode RCPSP (MMRCPSP)\n- RCPSP with Minimal and Maximal Time Lags (RCPSP/max)\n- Resource-Constrained Multi Project Scheduling Problem (RCMPSP)\n- RCPSP with flexible project structure (RCPSP-PS) and RCPSP with alternative subgraphs (RCPSP-AS)\n\n`psplib` has no dependencies and can be installed in the usual way:\n\n```\npip install psplib\n```\n\n## Example usage\n\n``` python\n>>> from psplib import parse\n>>> instance = parse(\"data/j301_1.sm\", instance_format=\"psplib\") \n>>> instance.num_resources\n4\n\n>>> instance.resources\n[Resource(capacity=12, renewable=True), ..., Resource(capacity=12, renewable=True)]\n\n>>> instance.num_activities\n32\n\n>>> instance.activities\n[Activity(modes=[Mode(duration=0, demands=[0, 0, 0, 0])], successors=[1, 2, 3], delays=None, name=''), \n Activity(modes=[Mode(duration=8, demands=[4, 0, 0, 0])], successors=[5, 10, 14], delays=None, name=''),\n ...,\n Activity(modes=[Mode(duration=0, demands=[0, 0, 0, 0])], successors=[], delays=None, name='')]\n```\n\nSee [this](https://github.com/PyJobShop/PSPLIB/blob/main/example.ipynb) notebook for a slightly longer example demonstration of PSPLIB.\n\n## Instance formats\n\n`psplib` implements parsers for commonly used project scheduling instance formats, listed below. \nTo parse a specific instance format, set the `instance_format` argument in `parse`.\n\n1. `psplib`: The **PSPLIB format** is used by the [PSPLIB](https://www.om-db.wi.tum.de/psplib/) library to describe RCPSP and MMRCPSP instances.\n2. `patterson`: The **Patterson format**: used for RCPSP instances, mostly used by the [OR&S](https://www.projectmanagement.ugent.be/research/data) library. See [this](http://www.p2engine.com/p2reader/patterson_format) website for more details.\n3. `rcpsp_max`: The **RCPSP/max format** is used for RCPSP/max instances from [TU Clausthal](https://www.wiwi.tu-clausthal.de/en/ueber-uns/abteilungen/betriebswirtschaftslehre-insbesondere-produktion-und-logistik/research/research-areas/project-generator-progen/max-and-psp/max-library/single-mode-project-duration-problem-rcpsp/max).\n4. `mplib`: The **MPLIB format** is used for RCMPSP instances from the [MPLIB](https://www.projectmanagement.ugent.be/research/data) library.\n5. `rcpsp_ps`: The **RCPSP-PS format** is the format used by [Van der Beek et al. (2024)](https://www.sciencedirect.com/science/article/pii/S0377221724008269).\nSpecifically, we included an extra line that defines for each task whether it is optional or not.\n6. `aslib`: The **ASLIB format** is the format used by RCPSP-AS instances from the ASLIB instance set at [OR&S project database](https://www.projectmanagement.ugent.be/research/data).\nASLIB consist of three different parts (a, b, c). \nTo use this parser, you have to merge parts (a) and (b) into a single file - part (c) is not parsed.\n\n## Instance databases\n\nThe following websites host widely-used project scheduling benchmark instances.\n\n- [PSPLIB](https://www.om-db.wi.tum.de/psplib/) contains different problem sets for various types of resource constrained project scheduling problems as well as optimal and heuristic solutions.\n\n- [OR&S project database](https://www.projectmanagement.ugent.be/research/data) is the research data website of the Operations Research and Scheduling (OR&S) Research group of the Faculty of Economics and Business Administration at Ghent University (Belgium). OR&S is very active in the field of project scheduling and has published instances for many project scheduling variants.\n\n- [TU Clausthal](https://www.wiwi.tu-clausthal.de/ueber-uns/abteilungen/betriebswirtschaftslehre-insbesondere-produktion-und-logistik/forschung-und-transfer/schwerpunkte/projekt-generator) provides RCPSP/max benchmark instances. \n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "A parser for project scheduling instances.",
"version": "0.3.0",
"project_urls": {
"Repository": "https://github.com/PyJobShop/PSPLIB"
},
"split_keywords": [
"project scheduling",
" psplib",
" scheduling"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "82825220f10cf6217c9b5bb5e2e73714dfbce66e74fbb727d748c68e8bbaf487",
"md5": "1fa9b66b80db608e5e34a4be75be465e",
"sha256": "48dc9f9c7960b9f46e4c58ce8d52044f8b823ab1677ab5cd3850879813113c5d"
},
"downloads": -1,
"filename": "psplib-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1fa9b66b80db608e5e34a4be75be465e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 12453,
"upload_time": "2025-02-20T08:24:59",
"upload_time_iso_8601": "2025-02-20T08:24:59.555520Z",
"url": "https://files.pythonhosted.org/packages/82/82/5220f10cf6217c9b5bb5e2e73714dfbce66e74fbb727d748c68e8bbaf487/psplib-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "de22a1d203b2b492072d13d360a34d1196f95c1ebaabce7499e9e6f1a7d85e04",
"md5": "176c8a08dac15943e0a1c53936571e9c",
"sha256": "d5c74df35c2e58174974c650a3f9fcb3d1a4a822532e87f95fe5b94f006eb10d"
},
"downloads": -1,
"filename": "psplib-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "176c8a08dac15943e0a1c53936571e9c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 51690,
"upload_time": "2025-02-20T08:25:01",
"upload_time_iso_8601": "2025-02-20T08:25:01.244297Z",
"url": "https://files.pythonhosted.org/packages/de/22/a1d203b2b492072d13d360a34d1196f95c1ebaabce7499e9e6f1a7d85e04/psplib-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-20 08:25:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "PyJobShop",
"github_project": "PSPLIB",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "psplib"
}