Class RoutingIndexManager

java.lang.Object
com.google.ortools.constraintsolver.RoutingIndexManager

public class RoutingIndexManager extends Object
Manager for any NodeIndex <-> variable index conversion.
The routing solver uses variable indices internally and through
its API.
These variable indices are tricky to manage directly because one Node can
correspond to a multitude of variables, depending on the number of times
they appear in the model, and if they're used as start and/or end points.
This class aims to simplify variable index usage, allowing users to use
NodeIndex instead.

Usage:
auto starts_ends = ...; /// These are NodeIndex. RoutingIndexManager manager(10, 4, starts_ends); // 10 nodes, 4 vehicles. RoutingModel model(manager);

Then, use 'manager.NodeToIndex(node)' whenever model requires a variable
index.

Note: the mapping between node indices and variables indices is subject to
change so no assumption should be made on it. The only guarantee is that
indices range between 0 and n-1, where n = number of vehicles * 2 (for start
and end nodes) + number of non-start or end nodes.
  • Field Details

    • swigCMemOwn

      protected transient boolean swigCMemOwn
  • Constructor Details

    • RoutingIndexManager

      public RoutingIndexManager(long cPtr, boolean cMemoryOwn)
    • RoutingIndexManager

      public RoutingIndexManager(int num_nodes, int num_vehicles, int depot)
      Creates a NodeIndex to variable index mapping for a problem
      containing 'num_nodes', 'num_vehicles' and the given starts and ends for
      each vehicle. If used, any start/end arrays have to have exactly
      'num_vehicles' elements.
      Parameters:
      num_nodes - Number of nodes in the problem.
      num_vehicles - Number of vehicles in the problem.
      depot - start and end
      NodeIndex for all vehicles.
    • RoutingIndexManager

      public RoutingIndexManager(int num_nodes, int num_vehicles, int[] starts, int[] ends)
      Creates a NodeIndex to variable index mapping.
      Parameters:
      num_nodes - Number of nodes in the problem.
      num_vehicles - Number of vehicles in the problem.
      starts - Array containing the start NodeIndex for each vehicle.
      ends - Array containing the end NodeIndex for each vehicle.
      Note: starts and ends arrays must have exactly num_vehicles
      elements.
  • Method Details

    • getCPtr

      public static long getCPtr(RoutingIndexManager obj)
    • swigRelease

      public static long swigRelease(RoutingIndexManager obj)
    • finalize

      protected void finalize()
      Overrides:
      finalize in class Object
    • delete

      public void delete()
    • getNumberOfNodes

      public int getNumberOfNodes()
    • getNumberOfVehicles

      public int getNumberOfVehicles()
    • getNumberOfIndices

      public int getNumberOfIndices()
    • getStartIndex

      public long getStartIndex(int vehicle)
    • getEndIndex

      public long getEndIndex(int vehicle)
    • nodeToIndex

      public long nodeToIndex(int node)
    • nodesToIndices

      public long[] nodesToIndices(int[] nodes)
    • indexToNode

      public int indexToNode(long index)