labscheduler.scheduler_interface module

This is the main class for the LabScheduler. Its methods are interfaced by the SiLA feature implementations or via console script.

class labscheduler.scheduler_interface.SchedulerInterface[source]

Bases: ABC

A collection of required attributes of a labscheduler.

_abc_impl = <_abc._abc_data object>
abstract property available_algorithms: list[AlgorithmInfo]

Lists the basic information of each available algorithm :return:

abstractmethod compute_schedule(operations: Iterable[Operation], computation_time: float) tuple[dict[str, ScheduledAssignment] | None, SolutionQuality][source]

Uses the currently selected algorithm to compute a schedule for the given workflow in the currently configured lab. This workflow must be given as a list of Operations. :param operations: List of operations :param computation_time: The maximum computation time. No scheduled start will be earlier than now + this parameter :return: An assignment of machines, precedence constraints and start time to each operation or None if no valid schedule was found. Additionally, an enum whether the schedule is optimal, feasible or infeasible. Sometimes even infeasible, but almost feasible solution is better than nothing.

abstractmethod configure_job_shop(machine_list: list[Machine])[source]

Sets the set of available machines to schedule workflows on. This will be kept until this method is called again :param machine_list: List of machines making up the job-shop :return:

abstract property current_algorithm_info: AlgorithmInfo

Retrieves the basic information of the currently selected algorithm. :return: A typing.NamedTuple containing name, optimality, success guaranty and recommended maximum problem size

job_shop: list[Machine]
jssp_solver: JSSPSolver
abstractmethod select_algorithm(algorithm_name: str) bool[source]

Selects the algorithm to use for computing schedules until another algorithm is chosen. You can get the names of all available algorithms by calling get_available_algorithms() and retrieving the ‘name’ attribute of each. :param algorithm_name: Name of the algorithm :return: