Solver as a Service
Sign Up Now →Sign Up Now

When scheduling becomes a different problem shape

Preview

The model above places entities into groups. It does not order members within a group. Travel time and arrival windows need sequence semantics, so use the typed windowed routing engine rather than smuggling order into a membership constraint:

from helixor_solvers.backends.vrp_time_windows import (
    WindowedVehicle,
    WindowedVisit,
    solve_windowed_vrp,
)

vehicles = [
    WindowedVehicle(
        id="v1",
        node=0,
        capacity=24.0,
        departure=depart_epoch,
    )
]
visits = [
    WindowedVisit(
        id="a",
        node=6,
        demand=1.0,
        earliest=window_open,
        latest=window_close,
        service_seconds=1800.0,
    )
]

result = solve_windowed_vrp(
    vehicles,
    visits,
    drive_seconds_fn,
    time_limit_seconds=30,
)

Use the shipped golden templates before inventing a shape:

  • manifests/templates/scheduling_golden.yaml for many-to-many staffing;

  • manifests/templates/routing_golden.yaml when order within a route matters;

  • manifests/templates/timetabling_golden.yaml for pair rules over shared classes;

  • manifests/templates/field_service_golden.yaml for assignment plus routing.

  • manifests/templates/air_consolidation_golden.yaml for consolidation priced on a "greater of two totals" tariff (measures and pooled objectives).