ware_ops_algosΒΆ

Python Version License

ware_ops_algos is a library that aims to provide standardized implementations of algorithms for warehouse operations such as order batching, picker routing, item assignment, and picker scheduling.

Key FeaturesΒΆ

πŸ—οΈ Extensible Domain Model

Structured domain models for layouts, orders, storage, and resources

πŸ”§ Algorithm Repository

Ready-to-use implementations for batching, routing, assignment, and sequencing

🎯 Algorithm Cards

Annotation of algorithm properties and requirements in the form of algorithm cards

Domain ModelΒΆ

The library uses a flexible domain model to represent warehouse systems. Instead of enforcing a rigid data structure, domain objects capture varying contextual information organized by distinct aspects of the warehouse system.

Domain ObjectsΒΆ

Domain

Description

Key Attributes

Layout

Spatial structure of the warehouse

Type (conventional/unconventional), parametric form or explicit graph

Articles

Master data of warehouse items

Weight, volume, handling classes

Orders

Customer orders to be fulfilled

Order lines, arrival time, due date

Resources

Picking agents (human or robotic)

Travel speed, handling time, pick cart configuration

Storage

Warehousing configuration

Storage policy, inventory levels, location coordinates

Algorithm RepositoryΒΆ

All algorithms inherit from an abstract Algorithm base class providing a unified interface through solve(), which handles timing and error management.

Algorithm (abstract)
β”œβ”€β”€ ItemAssignment      # Resolve order lines to storage locations
β”œβ”€β”€ Batching            # Group orders into picker tours
β”œβ”€β”€ Routing             # Determine paths through the warehouse
└── Scheduling          # Sequence and assign tours to pickers

Item Assignment β€” For scattered storage where articles may be stored at multiple locations. Approaches include greedy allocation and nearest-neighbor selection.

Batching β€” Groups orders into batches subject to capacity constraints. Includes priority-based construction heuristics, seed-based methods, savings-based approaches (Clarke & Wright), and local search metaheuristics.

Routing β€” Determines picker traversal paths. Includes layout-based heuristics (S-Shape, Return, Midpoint, Largest Gap), nearest neighbor, and exact methods (TSP, Ratliff-Rosenthal).

Scheduling β€” Assigns tours to pickers using list scheduling with priority dispatching rules (SPT, LPT, EDD, ERD).

Algorithm CardsΒΆ

Each algorithm is annotated with requirements through YAML-based algorithm cards, enabling automated selection based on warehouse context:

model_name: RatliffRosenthal
problem_type: routing
description: >
  Implementation of DP for SPRP

requirements:
  layout:
    type:
      - conventional
    features:
      - start_node
      - end_node
      - closest_node_to_start
      - min_aisle_position
      - max_aisle_position
      - n_pick_locations
      - dist_pick_locations
      - dist_bottom_to_pick_location
      - n_blocks
    constraints:
      n_blocks:
        equals: 1
  resources:
    type:
      - human
    features:
  orders:
    type:
      - standard
    features:
  storage:
    type:
      - any
    features:
      - x
      - y

objective: Distance

implementation:
  class_name: RatliffRosenthal
  solver:
  type: heuristic

Quick StartΒΆ

πŸ“˜ Getting Started

Start here with an basic example to learn how to model a warehouse and use algorithms.

Understanding Domain Objects
πŸ”¬ Algorithm Reference

Complete catalog of implemented algorithms.

Algorithms
πŸ“š API Documentation

Detailed API reference for all modules and classes.

API Reference
πŸ’‘ Examples

Examples and benchmark evaluations.

Examples

CitationΒΆ

If you use ware_ops_algos in your research, please cite:

@misc{bischoff2026ware_ops_algos,
 author = {Bischoff, Janik and Suba, Oezge Nur and Barlang, Maximilian and Kutabi, Hadi and Mohring, Uta and Dunke, Fabian and Meyer, Anne and Nickel, Stefan and Furmans, Kai},
 title = {ware_ops_algos},
 year = {2026},
 publisher = {GitHub},
 journal = {GitHub Repository},
 howpublished = {\url{https://github.com/kit-dsm/ware_ops_algos.git}},

}

Indices and TablesΒΆ

SupportΒΆ