Skip to main content

The python lab scheduler is an adaptive scheduler solving generalized (suited to lab demands) versions of the JSSP (Job Shop Scheduling Problem). It comes as a microservice with a SiLA and a python interface.

Project description

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/25166382/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 gitlab.com/opensourcelab/labscheduler

# 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://opensourcelab.gitlab.io/labscheduler

Credits

This package was created with Cookiecutter and the gitlab.com/opensourcelab/software-dev/cookiecutter-pypackage project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

labscheduler-0.2.42.tar.gz (58.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

labscheduler-0.2.42-py3-none-any.whl (83.9 kB view details)

Uploaded Python 3

File details

Details for the file labscheduler-0.2.42.tar.gz.

File metadata

  • Download URL: labscheduler-0.2.42.tar.gz
  • Upload date:
  • Size: 58.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for labscheduler-0.2.42.tar.gz
Algorithm Hash digest
SHA256 edc96f64c4125a06febb8c91774f9b3cab5999cb6a4d7b6a3f6b6ca60981b05e
MD5 a39af97bf2b968e9f0a3ffe7ba5790dd
BLAKE2b-256 874ce4d678eac48d17df528a65c696c948542e15584d3d40ba475a02eadd2762

See more details on using hashes here.

File details

Details for the file labscheduler-0.2.42-py3-none-any.whl.

File metadata

  • Download URL: labscheduler-0.2.42-py3-none-any.whl
  • Upload date:
  • Size: 83.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for labscheduler-0.2.42-py3-none-any.whl
Algorithm Hash digest
SHA256 d6b77f7792ceb1fe67af9eaf0679854c5e3f7621e3962a9e7498b2ff34065c66
MD5 7aa8123e91bad0b432ee92ef184a752f
BLAKE2b-256 f2a1819cc35aac4f8cc07685fcf55ebfe4f87ebe34bdecae5479d225371a7354

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page