Source code for order_selection.min_aisle_conflicts_os

from ware_ops_algos.algorithms import TourPlanningState, PickListRouting
from ware_ops_algos.algorithms.order_selection import TimeIndexedMinConflictSelection
from ware_ops_algos.domain_models import WarehouseInfo, Resources, LayoutData, Resource

from ware_ops_pipes.pipelines.templates.template_1 import AbstractOrderSelection
from ware_ops_pipes.utils.io_helpers import load_pickle


[docs] class MinAisleConflictsOS(AbstractOrderSelection):
[docs] abstract = False
[docs] def get_inited_order_selector(self): resources: Resources = load_pickle(self.input()["instance"]["resources"].path) layout: LayoutData = load_pickle(self.input()["instance"]["layout"].path) layout_network = layout.layout_network warehouse_info: WarehouseInfo = load_pickle(self.input()["instance"]["warehouse_info"].path) tours: list[TourPlanningState] = warehouse_info.active_tours current_picker: Resource = warehouse_info.current_picker routing_kwargs = {"start_node": layout_network.start_node, "end_node": layout_network.end_node, "closest_node_to_start": layout_network.closest_node_to_start, "min_aisle_position": layout_network.min_aisle_position, "max_aisle_position": layout_network.max_aisle_position, "distance_matrix": layout_network.distance_matrix, "predecessor_matrix": layout_network.predecessor_matrix, "picker": [current_picker], "gen_tour": True, "gen_item_sequence": True, "fixed_depot": True, "node_list": layout_network.node_list, "node_to_idx": {node: idx for idx, node in enumerate( list(layout_network.graph.nodes))}, "idx_to_node": {idx: node for idx, node in enumerate( list(layout_network.graph.nodes))} } order_selector = TimeIndexedMinConflictSelection( active_tours=tours, resource=current_picker, resources=resources.resources, picker_position=current_picker.current_location, distance_matrix=layout_network.distance_matrix, routing_class=PickListRouting, routing_class_kwargs=routing_kwargs) return order_selector