PythonLab Scheduler
Generic Scheduler for Lab Automation Processes. 'Scheduling' in this sense means taking a workflow description and a descriptions of a lab(also called job shop) and assigning timestamps and machines to the steps of the workflow in an intelligent way.
flowchart TD
A[Scheduler]--computes-->B[Schedule];
B --contains-->C[Start Times];
B --contains-->D[Machine Assignments];
E[Job Shop]--YAML-->A;
F[Workflow]--python-->A;
G[Precedences]--make up-->F;
H[Process Steps]--make up-->F;
I[Machines]--make up-->E;
In other words: It solves a generalization of the Job Shop Scheduling Problem(JSSP). The main generalizations are
- Jobs can have several operations on the same machine
- There might be several machines of a kind
- Time-constraints between Operations (soft and hard)
- Machines can have capacities to do several operations in parallel
- Jobs can intersect(i.e. operations can have precedence constraints to other jobs operations)
More precise information on this can be found here
Installation
pip install labscheduler --index-url https://gitlab.com/api/v4/projects/70366720/packages/pypi/simple
Scheduling Framework Overview
The framework is designed to be very generic: The core scheduling algorithm can be exchanged by any scheduling concept that shall be developed, tested or used in a real world application. The scheduler itself can be used via python import or as a micro service via SiLA. More information in the framework can be found here.
graph TD;
A[User] <-- python --> B[Scheduler];
A <-- sila_python --> C[SiLA-Client];
C <-- SiLA --> D[SiLA-Server];
B <--> D;
B --> E[AlgorithmInterface];
E -- implemented by --> F[Algorithm];
E -- implemented by --> G[Algorithm];
E -- implemented by --> H[Algorithm];
Usage
For help in the console type
labscheduler --help
The scheduler can be accessed via standard python import or run on a SiLA-server and accessed via a SiLA-client. Examples can be found here:
Development
git clone https://gitlab.com/OpenLabAutomation/lab-automation-packages/lab-scheduler.git
# create a virtual environment and activate it then run
pip install -e .[dev]
# run unittests
invoke test # use the invoke environment to manage development
# commit changes: please install pre-commit hooks
pre-commit install
Documentation
The Documentation can be found here: https://openlabautomation.gitlab.io/lab-automation-packages/lab-scheduler/
Credits
This package was created with Cookiecutter and the gitlab.com/opensourcelab/software-dev/cookiecutter-pypackage project template.
Metadata
Release files for uulabscheduler 0.3.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| uulabscheduler-0.3.7.tar.gz | 244.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uulabscheduler-0.3.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 339.4 kB
Release files / uulabscheduler-0.3.7.tar.gz
| Download URL | uulabscheduler-0.3.7.tar.gz |
|---|---|
| Size | 244.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87230f9f19e710db8512ced4af3735376178bb6b96af7d9f902530ed0ee1fb06
|
|
BLAKE2b-256 checksum How to use checksums |
70d235eb0810b193e7b30844fe8ee89dbf6796f3a4c22e266f0905d5ca3b33b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / uulabscheduler-0.3.7-py3-none-any.whl
| Download URL | uulabscheduler-0.3.7-py3-none-any.whl |
|---|---|
| Size | 95.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bfb15f6c69b315f383b2990ca82a224e2073b3df9d84acb2ad2aa7ccb2a29062
|
|
BLAKE2b-256 checksum How to use checksums |
7faa1fe7ac93e5ec9a7dd56506e456f7652043c165df83b686ee5bcd4c86cd31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|