Skip to content

how does alternate stops work? #89

@pchtsp

Description

@pchtsp

I'm reading on https://www.nextmv.io/docs/use-cases/vehicle-routing/features/alternate-stops trying to understand how they work. The documentation is not very clear on the purpose for the functionality.

I initially thought that it was similar to ortools AddDisjunction + penalties (https://developers.google.com/optimization/routing/penalties) where a list of mutually exclusive stops is given a penalty for not being satisfied. Or PyVRP "Client Group" (https://pyvrp.readthedocs.io/en/latest/api/pyvrp.html#pyvrp.Model.Model.add_client_group), which works in a similar way (at-most-one or exactly-one depending on whether required=True).

But then I see that Alternate Stops are defined not as a subset of all stops but as a separate list of stops. And that it can (should?) be expressed by vehicle.

More broadly what I'm modelling is the following: I have three nodes per client, and I want to assign at most one of those nodes to some vehicle (at most one vehicle). If no vehicle is assigned to one of those three nodes, I apply a penalty as the client was not served. How would that be modeled in nextRoute?

thanks again.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions