Java Reference

Java Reference

RoutingModel.java
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 4.0.2
4  *
5  * Do not make changes to this file unless you know what you are doing--modify
6  * the SWIG interface file instead.
7  * ----------------------------------------------------------------------------- */
8 
9 package com.google.ortools.constraintsolver;
10 
11 // Used to wrap RoutingTransitCallback2
12 // see https://docs.oracle.com/javase/8/docs/api/java/util/function/LongBinaryOperator.html
13 import java.util.function.LongBinaryOperator;
14 // Used to wrap RoutingTransitCallback1
15 // see https://docs.oracle.com/javase/8/docs/api/java/util/function/LongUnaryOperator.html
16 import java.util.function.LongUnaryOperator;
17 
18 public class RoutingModel {
19  private transient long swigCPtr;
20  protected transient boolean swigCMemOwn;
21 
22  protected RoutingModel(long cPtr, boolean cMemoryOwn) {
23  swigCMemOwn = cMemoryOwn;
24  swigCPtr = cPtr;
25  }
26 
27  protected static long getCPtr(RoutingModel obj) {
28  return (obj == null) ? 0 : obj.swigCPtr;
29  }
30 
31  @SuppressWarnings("deprecation")
32  protected void finalize() {
33  delete();
34  }
35 
36  public synchronized void delete() {
37  if (swigCPtr != 0) {
38  if (swigCMemOwn) {
39  swigCMemOwn = false;
40  mainJNI.delete_RoutingModel(swigCPtr);
41  }
42  swigCPtr = 0;
43  }
44  }
45 
51  static public class VehicleTypeContainer {
52  private transient long swigCPtr;
53  protected transient boolean swigCMemOwn;
54 
55  protected VehicleTypeContainer(long cPtr, boolean cMemoryOwn) {
56  swigCMemOwn = cMemoryOwn;
57  swigCPtr = cPtr;
58  }
59 
60  protected static long getCPtr(VehicleTypeContainer obj) {
61  return (obj == null) ? 0 : obj.swigCPtr;
62  }
63 
64  @SuppressWarnings("deprecation")
65  protected void finalize() {
66  delete();
67  }
68 
69  public synchronized void delete() {
70  if (swigCPtr != 0) {
71  if (swigCMemOwn) {
72  swigCMemOwn = false;
73  mainJNI.delete_RoutingModel_VehicleTypeContainer(swigCPtr);
74  }
75  swigCPtr = 0;
76  }
77  }
78 
79  static public class VehicleClassEntry {
80  private transient long swigCPtr;
81  protected transient boolean swigCMemOwn;
82 
83  protected VehicleClassEntry(long cPtr, boolean cMemoryOwn) {
84  swigCMemOwn = cMemoryOwn;
85  swigCPtr = cPtr;
86  }
87 
88  protected static long getCPtr(VehicleClassEntry obj) {
89  return (obj == null) ? 0 : obj.swigCPtr;
90  }
91 
92  @SuppressWarnings("deprecation")
93  protected void finalize() {
94  delete();
95  }
96 
97  public synchronized void delete() {
98  if (swigCPtr != 0) {
99  if (swigCMemOwn) {
100  swigCMemOwn = false;
101  mainJNI.delete_RoutingModel_VehicleTypeContainer_VehicleClassEntry(swigCPtr);
102  }
103  swigCPtr = 0;
104  }
105  }
106 
107  public void setVehicle_class(int value) {
108  mainJNI.RoutingModel_VehicleTypeContainer_VehicleClassEntry_vehicle_class_set(swigCPtr, this, value);
109  }
110 
111  public int getVehicle_class() {
112  return mainJNI.RoutingModel_VehicleTypeContainer_VehicleClassEntry_vehicle_class_get(swigCPtr, this);
113  }
114 
115  public void setFixed_cost(long value) {
116  mainJNI.RoutingModel_VehicleTypeContainer_VehicleClassEntry_fixed_cost_set(swigCPtr, this, value);
117  }
118 
119  public long getFixed_cost() {
120  return mainJNI.RoutingModel_VehicleTypeContainer_VehicleClassEntry_fixed_cost_get(swigCPtr, this);
121  }
122 
123  public VehicleClassEntry() {
124  this(mainJNI.new_RoutingModel_VehicleTypeContainer_VehicleClassEntry(), true);
125  }
126 
127  }
128 
129  public int NumTypes() {
130  return mainJNI.RoutingModel_VehicleTypeContainer_NumTypes(swigCPtr, this);
131  }
132 
133  public int Type(int vehicle) {
134  return mainJNI.RoutingModel_VehicleTypeContainer_Type(swigCPtr, this, vehicle);
135  }
136 
137  public void setType_index_of_vehicle(int[] value) {
138  mainJNI.RoutingModel_VehicleTypeContainer_type_index_of_vehicle_set(swigCPtr, this, value);
139  }
140 
141  public int[] getType_index_of_vehicle() {
142  return mainJNI.RoutingModel_VehicleTypeContainer_type_index_of_vehicle_get(swigCPtr, this);
143  }
144 
145  public void setSorted_vehicle_classes_per_type(SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t value) {
146  mainJNI.RoutingModel_VehicleTypeContainer_sorted_vehicle_classes_per_type_set(swigCPtr, this, SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t.getCPtr(value));
147  }
148 
149  public SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t getSorted_vehicle_classes_per_type() {
150  long cPtr = mainJNI.RoutingModel_VehicleTypeContainer_sorted_vehicle_classes_per_type_get(swigCPtr, this);
151  return (cPtr == 0) ? null : new SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t(cPtr, false);
152  }
153 
154  public void setVehicles_per_vehicle_class(SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t value) {
155  mainJNI.RoutingModel_VehicleTypeContainer_vehicles_per_vehicle_class_set(swigCPtr, this, SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t.getCPtr(value));
156  }
157 
158  public SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t getVehicles_per_vehicle_class() {
159  return new SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t(mainJNI.RoutingModel_VehicleTypeContainer_vehicles_per_vehicle_class_get(swigCPtr, this), true);
160  }
161 
163  this(mainJNI.new_RoutingModel_VehicleTypeContainer(), true);
164  }
165 
166  }
167 
171  public static long getKNoPenalty() {
172  return mainJNI.RoutingModel_kNoPenalty_get();
173  }
174 
179  public static int getKNoDisjunction() {
180  return mainJNI.RoutingModel_kNoDisjunction_get();
181 }
182 
187  public static int getKNoDimension() {
188  return mainJNI.RoutingModel_kNoDimension_get();
189 }
190 
196  public RoutingModel(RoutingIndexManager index_manager) {
197  this(mainJNI.new_RoutingModel__SWIG_0(RoutingIndexManager.getCPtr(index_manager), index_manager), true);
198  }
199 
200  public RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters) {
201  this(mainJNI.new_RoutingModel__SWIG_1(RoutingIndexManager.getCPtr(index_manager), index_manager, parameters.toByteArray()), true);
202  }
203 
207  public int registerUnaryTransitVector(long[] values) {
208  return mainJNI.RoutingModel_registerUnaryTransitVector(swigCPtr, this, values);
209  }
210 
211  public int registerUnaryTransitCallback(LongUnaryOperator callback) {
212  return mainJNI.RoutingModel_registerUnaryTransitCallback(swigCPtr, this, callback);
213  }
214 
215  public int registerPositiveUnaryTransitCallback(LongUnaryOperator callback) {
216  return mainJNI.RoutingModel_registerPositiveUnaryTransitCallback(swigCPtr, this, callback);
217  }
218 
219  public int registerTransitMatrix(long[][] values) {
220  return mainJNI.RoutingModel_registerTransitMatrix(swigCPtr, this, values);
221  }
222 
223  public int registerTransitCallback(LongBinaryOperator callback) {
224  return mainJNI.RoutingModel_registerTransitCallback(swigCPtr, this, callback);
225  }
226 
227  public int registerPositiveTransitCallback(LongBinaryOperator callback) {
228  return mainJNI.RoutingModel_registerPositiveTransitCallback(swigCPtr, this, callback);
229  }
230 
253  public boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
254  return mainJNI.RoutingModel_addDimension(swigCPtr, this, evaluator_index, slack_max, capacity, fix_start_cumul_to_zero, name);
255  }
256 
257  public boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
258  return mainJNI.RoutingModel_addDimensionWithVehicleTransits(swigCPtr, this, evaluator_indices, slack_max, capacity, fix_start_cumul_to_zero, name);
259  }
260 
261  public boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
262  return mainJNI.RoutingModel_addDimensionWithVehicleCapacity(swigCPtr, this, evaluator_index, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
263  }
264 
265  public boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
266  return mainJNI.RoutingModel_addDimensionWithVehicleTransitAndCapacity(swigCPtr, this, evaluator_indices, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
267  }
268 
279  public IntBoolPair addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name) {
280  return new IntBoolPair(mainJNI.RoutingModel_addConstantDimensionWithSlack(swigCPtr, this, value, capacity, slack_max, fix_start_cumul_to_zero, name), true);
281  }
282 
283  public IntBoolPair addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name) {
284  return new IntBoolPair(mainJNI.RoutingModel_addConstantDimension(swigCPtr, this, value, capacity, fix_start_cumul_to_zero, name), true);
285  }
286 
298  public IntBoolPair addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
299  return new IntBoolPair(mainJNI.RoutingModel_addVectorDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name), true);
300  }
301 
313  public IntBoolPair addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
314  return new IntBoolPair(mainJNI.RoutingModel_addMatrixDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name), true);
315  }
316 
328  public Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks) {
329  long cPtr = mainJNI.RoutingModel_MakePathSpansAndTotalSlacks(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, spans, total_slacks);
330  return (cPtr == 0) ? null : new Constraint(cPtr, false);
331  }
332 
336  public boolean hasDimension(String dimension_name) {
337  return mainJNI.RoutingModel_hasDimension(swigCPtr, this, dimension_name);
338  }
339 
343  public RoutingDimension getDimensionOrDie(String dimension_name) {
344  return new RoutingDimension(mainJNI.RoutingModel_getDimensionOrDie(swigCPtr, this, dimension_name), false);
345  }
346 
351  public RoutingDimension getMutableDimension(String dimension_name) {
352  long cPtr = mainJNI.RoutingModel_getMutableDimension(swigCPtr, this, dimension_name);
353  return (cPtr == 0) ? null : new RoutingDimension(cPtr, false);
354  }
355 
362  public void setPrimaryConstrainedDimension(String dimension_name) {
363  mainJNI.RoutingModel_setPrimaryConstrainedDimension(swigCPtr, this, dimension_name);
364  }
365 
370  return mainJNI.RoutingModel_getPrimaryConstrainedDimension(swigCPtr, this);
371  }
372 
391  public int addDisjunction(long[] indices, long penalty, long max_cardinality) {
392  return mainJNI.RoutingModel_addDisjunction__SWIG_0(swigCPtr, this, indices, penalty, max_cardinality);
393 }
394 
413  public int addDisjunction(long[] indices, long penalty) {
414  return mainJNI.RoutingModel_addDisjunction__SWIG_1(swigCPtr, this, indices, penalty);
415 }
416 
435  public int addDisjunction(long[] indices) {
436  return mainJNI.RoutingModel_addDisjunction__SWIG_2(swigCPtr, this, indices);
437 }
438 
442  public int[] getDisjunctionIndices(long index) {
443  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_0(swigCPtr, this, index);
444 }
445 
450  public long[] getDisjunctionIndices(int index) {
451  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_1(swigCPtr, this, index);
452 }
453 
457  public long getDisjunctionPenalty(int index) {
458  return mainJNI.RoutingModel_getDisjunctionPenalty(swigCPtr, this, index);
459  }
460 
465  public long getDisjunctionMaxCardinality(int index) {
466  return mainJNI.RoutingModel_getDisjunctionMaxCardinality(swigCPtr, this, index);
467  }
468 
472  public int getNumberOfDisjunctions() {
473  return mainJNI.RoutingModel_getNumberOfDisjunctions(swigCPtr, this);
474  }
475 
484  mainJNI.RoutingModel_ignoreDisjunctionsAlreadyForcedToZero(swigCPtr, this);
485  }
486 
492  public void addSoftSameVehicleConstraint(long[] indices, long cost) {
493  mainJNI.RoutingModel_addSoftSameVehicleConstraint(swigCPtr, this, indices, cost);
494  }
495 
502  public void setAllowedVehiclesForIndex(int[] vehicles, long index) {
503  mainJNI.RoutingModel_setAllowedVehiclesForIndex(swigCPtr, this, vehicles, index);
504  }
505 
509  public boolean isVehicleAllowedForIndex(int vehicle, long index) {
510  return mainJNI.RoutingModel_isVehicleAllowedForIndex(swigCPtr, this, vehicle, index);
511  }
512 
528  public void addPickupAndDelivery(long pickup, long delivery) {
529  mainJNI.RoutingModel_addPickupAndDelivery(swigCPtr, this, pickup, delivery);
530  }
531 
537  public void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction) {
538  mainJNI.RoutingModel_addPickupAndDeliverySets(swigCPtr, this, pickup_disjunction, delivery_disjunction);
539  }
540 
545  public void setPickupAndDeliveryPolicyOfAllVehicles(int policy) {
546  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfAllVehicles(swigCPtr, this, policy);
547  }
548 
549  public void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle) {
550  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, policy, vehicle);
551  }
552 
553  public int getPickupAndDeliveryPolicyOfVehicle(int vehicle) {
554  return mainJNI.RoutingModel_getPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, vehicle);
555  }
556 
561  public int getNumOfSingletonNodes() {
562  return mainJNI.RoutingModel_getNumOfSingletonNodes(swigCPtr, this);
563  }
564 
565  public void setVisitType(long index, int type, int type_policy) {
566  mainJNI.RoutingModel_setVisitType(swigCPtr, this, index, type, type_policy);
567  }
568 
569  public int getVisitType(long index) {
570  return mainJNI.RoutingModel_getVisitType(swigCPtr, this, index);
571  }
572 
573  public int[] GetSingleNodesOfType(int type) {
574  return mainJNI.RoutingModel_GetSingleNodesOfType(swigCPtr, this, type);
575 }
576 
577  public int[] GetPairIndicesOfType(int type) {
578  return mainJNI.RoutingModel_GetPairIndicesOfType(swigCPtr, this, type);
579 }
580 
581  public int GetVisitTypePolicy(long index) {
582  return mainJNI.RoutingModel_GetVisitTypePolicy(swigCPtr, this, index);
583  }
584 
590  public void closeVisitTypes() {
591  mainJNI.RoutingModel_closeVisitTypes(swigCPtr, this);
592  }
593 
594  public int getNumberOfVisitTypes() {
595  return mainJNI.RoutingModel_getNumberOfVisitTypes(swigCPtr, this);
596  }
597 
604  public void addHardTypeIncompatibility(int type1, int type2) {
605  mainJNI.RoutingModel_addHardTypeIncompatibility(swigCPtr, this, type1, type2);
606  }
607 
608  public void addTemporalTypeIncompatibility(int type1, int type2) {
609  mainJNI.RoutingModel_addTemporalTypeIncompatibility(swigCPtr, this, type1, type2);
610  }
611 
612  public SWIGTYPE_p_absl__flat_hash_setT_int_t getTemporalTypeIncompatibilitiesOfType(int type) {
613  return new SWIGTYPE_p_absl__flat_hash_setT_int_t(mainJNI.RoutingModel_getTemporalTypeIncompatibilitiesOfType(swigCPtr, this, type), false);
614  }
615 
620  public boolean hasHardTypeIncompatibilities() {
621  return mainJNI.RoutingModel_hasHardTypeIncompatibilities(swigCPtr, this);
622  }
623 
625  return mainJNI.RoutingModel_hasTemporalTypeIncompatibilities(swigCPtr, this);
626  }
627 
634  public void addRequiredTypeAlternativesWhenAddingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
635  mainJNI.RoutingModel_addRequiredTypeAlternativesWhenAddingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
636  }
637 
645  public void addRequiredTypeAlternativesWhenRemovingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
646  mainJNI.RoutingModel_addRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
647  }
648 
652  public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenAddingType(int type) {
653  return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenAddingType(swigCPtr, this, type), false);
654  }
655 
659  public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenRemovingType(int type) {
660  return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, type), false);
661  }
662 
668  return mainJNI.RoutingModel_hasSameVehicleTypeRequirements(swigCPtr, this);
669  }
670 
671  public boolean hasTemporalTypeRequirements() {
672  return mainJNI.RoutingModel_hasTemporalTypeRequirements(swigCPtr, this);
673  }
674 
681  public long unperformedPenalty(long var_index) {
682  return mainJNI.RoutingModel_unperformedPenalty(swigCPtr, this, var_index);
683  }
684 
690  public long unperformedPenaltyOrValue(long default_value, long var_index) {
691  return mainJNI.RoutingModel_unperformedPenaltyOrValue(swigCPtr, this, default_value, var_index);
692  }
693 
699  public long getDepot() {
700  return mainJNI.RoutingModel_getDepot(swigCPtr, this);
701  }
702 
709  public void SetMaximumNumberOfActiveVehicles(int max_active_vehicles) {
710  mainJNI.RoutingModel_SetMaximumNumberOfActiveVehicles(swigCPtr, this, max_active_vehicles);
711  }
712 
717  return mainJNI.RoutingModel_GetMaximumNumberOfActiveVehicles(swigCPtr, this);
718  }
719 
725  public void setArcCostEvaluatorOfAllVehicles(int evaluator_index) {
726  mainJNI.RoutingModel_setArcCostEvaluatorOfAllVehicles(swigCPtr, this, evaluator_index);
727  }
728 
732  public void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle) {
733  mainJNI.RoutingModel_setArcCostEvaluatorOfVehicle(swigCPtr, this, evaluator_index, vehicle);
734  }
735 
740  public void setFixedCostOfAllVehicles(long cost) {
741  mainJNI.RoutingModel_setFixedCostOfAllVehicles(swigCPtr, this, cost);
742  }
743 
747  public void setFixedCostOfVehicle(long cost, int vehicle) {
748  mainJNI.RoutingModel_setFixedCostOfVehicle(swigCPtr, this, cost, vehicle);
749  }
750 
756  public long getFixedCostOfVehicle(int vehicle) {
757  return mainJNI.RoutingModel_getFixedCostOfVehicle(swigCPtr, this, vehicle);
758  }
759 
777  public void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor) {
778  mainJNI.RoutingModel_setAmortizedCostFactorsOfAllVehicles(swigCPtr, this, linear_cost_factor, quadratic_cost_factor);
779  }
780 
784  public void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle) {
785  mainJNI.RoutingModel_setAmortizedCostFactorsOfVehicle(swigCPtr, this, linear_cost_factor, quadratic_cost_factor, vehicle);
786  }
787 
789  return mainJNI.RoutingModel_getAmortizedLinearCostFactorOfVehicles(swigCPtr, this);
790 }
791 
793  return mainJNI.RoutingModel_getAmortizedQuadraticCostFactorOfVehicles(swigCPtr, this);
794 }
795 
796  public void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle) {
797  mainJNI.RoutingModel_ConsiderEmptyRouteCostsForVehicle(swigCPtr, this, consider_costs, vehicle);
798  }
799 
800  public boolean AreEmptyRouteCostsConsideredForVehicle(int vehicle) {
801  return mainJNI.RoutingModel_AreEmptyRouteCostsConsideredForVehicle(swigCPtr, this, vehicle);
802  }
803 
809  public void setFirstSolutionEvaluator(LongBinaryOperator evaluator) {
810  mainJNI.RoutingModel_setFirstSolutionEvaluator(swigCPtr, this, evaluator);
811  }
812 
817  public void addLocalSearchOperator(LocalSearchOperator ls_operator) {
818  mainJNI.RoutingModel_addLocalSearchOperator(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator);
819  }
820 
824  public void addSearchMonitor(SearchMonitor monitor) {
825  mainJNI.RoutingModel_addSearchMonitor(swigCPtr, this, SearchMonitor.getCPtr(monitor), monitor);
826  }
827 
833  public void addAtSolutionCallback(Runnable callback) {
834  mainJNI.RoutingModel_addAtSolutionCallback(swigCPtr, this, callback);
835  }
836 
844  mainJNI.RoutingModel_addVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
845  }
846 
852  mainJNI.RoutingModel_addVariableMaximizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
853  }
854 
859  public void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost) {
860  mainJNI.RoutingModel_AddWeightedVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, cost);
861  }
862 
867  public void addVariableTargetToFinalizer(IntVar var, long target) {
868  mainJNI.RoutingModel_addVariableTargetToFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, target);
869  }
870 
879  public void closeModel() {
880  mainJNI.RoutingModel_closeModel(swigCPtr, this);
881  }
882 
887  public void closeModelWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
888  mainJNI.RoutingModel_closeModelWithParameters(swigCPtr, this, search_parameters.toByteArray());
889  }
890 
899  public Assignment solve(Assignment assignment) {
900  long cPtr = mainJNI.RoutingModel_solve__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
901  return (cPtr == 0) ? null : new Assignment(cPtr, false);
902  }
903 
912  public Assignment solve() {
913  long cPtr = mainJNI.RoutingModel_solve__SWIG_1(swigCPtr, this);
914  return (cPtr == 0) ? null : new Assignment(cPtr, false);
915  }
916 
926  public Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
927  long cPtr = mainJNI.RoutingModel_solveWithParameters(swigCPtr, this, search_parameters.toByteArray());
928  return (cPtr == 0) ? null : new Assignment(cPtr, false);
929  }
930 
931  public Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
932  long cPtr = mainJNI.RoutingModel_solveFromAssignmentWithParameters(swigCPtr, this, Assignment.getCPtr(assignment), assignment, search_parameters.toByteArray());
933  return (cPtr == 0) ? null : new Assignment(cPtr, false);
934  }
935 
943  public void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment) {
944  mainJNI.RoutingModel_setAssignmentFromOtherModelAssignment(swigCPtr, this, Assignment.getCPtr(target_assignment), target_assignment, RoutingModel.getCPtr(source_model), source_model, Assignment.getCPtr(source_assignment), source_assignment);
945  }
946 
954  public long computeLowerBound() {
955  return mainJNI.RoutingModel_computeLowerBound(swigCPtr, this);
956  }
957 
961  public int status() {
962  return mainJNI.RoutingModel_status(swigCPtr, this);
963  }
964 
975  public IntVar applyLocks(long[] locks) {
976  long cPtr = mainJNI.RoutingModel_applyLocks(swigCPtr, this, locks);
977  return (cPtr == 0) ? null : new IntVar(cPtr, false);
978  }
979 
990  public boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes) {
991  return mainJNI.RoutingModel_applyLocksToAllVehicles(swigCPtr, this, locks, close_routes);
992  }
993 
1001  long cPtr = mainJNI.RoutingModel_preAssignment(swigCPtr, this);
1002  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1003  }
1004 
1006  long cPtr = mainJNI.RoutingModel_mutablePreAssignment(swigCPtr, this);
1007  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1008  }
1009 
1015  public boolean writeAssignment(String file_name) {
1016  return mainJNI.RoutingModel_writeAssignment(swigCPtr, this, file_name);
1017  }
1018 
1024  public Assignment readAssignment(String file_name) {
1025  long cPtr = mainJNI.RoutingModel_readAssignment(swigCPtr, this, file_name);
1026  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1027  }
1028 
1034  long cPtr = mainJNI.RoutingModel_restoreAssignment(swigCPtr, this, Assignment.getCPtr(solution), solution);
1035  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1036  }
1037 
1045  public Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices) {
1046  long cPtr = mainJNI.RoutingModel_readAssignmentFromRoutes(swigCPtr, this, routes, ignore_inactive_indices);
1047  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1048  }
1049 
1068  public boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment) {
1069  return mainJNI.RoutingModel_routesToAssignment(swigCPtr, this, routes, ignore_inactive_indices, close_routes, Assignment.getCPtr(assignment), assignment);
1070  }
1071 
1077  public void assignmentToRoutes(Assignment assignment, long[][] routes) {
1078  mainJNI.RoutingModel_assignmentToRoutes(swigCPtr, this, Assignment.getCPtr(assignment), assignment, routes);
1079  }
1080 
1105  long cPtr = mainJNI.RoutingModel_compactAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1106  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1107  }
1108 
1115  long cPtr = mainJNI.RoutingModel_compactAndCheckAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1116  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1117  }
1118 
1122  public void addToAssignment(IntVar var) {
1123  mainJNI.RoutingModel_addToAssignment(swigCPtr, this, IntVar.getCPtr(var), var);
1124  }
1125 
1126  public void addIntervalToAssignment(IntervalVar interval) {
1127  mainJNI.RoutingModel_addIntervalToAssignment(swigCPtr, this, IntervalVar.getCPtr(interval), interval);
1128  }
1129 
1138  mainJNI.RoutingModel_addLocalSearchFilter(swigCPtr, this, LocalSearchFilter.getCPtr(filter), filter);
1139  }
1140 
1145  public long start(int vehicle) {
1146  return mainJNI.RoutingModel_start(swigCPtr, this, vehicle);
1147  }
1148 
1152  public long end(int vehicle) {
1153  return mainJNI.RoutingModel_end(swigCPtr, this, vehicle);
1154  }
1155 
1159  public boolean isStart(long index) {
1160  return mainJNI.RoutingModel_isStart(swigCPtr, this, index);
1161  }
1162 
1166  public boolean isEnd(long index) {
1167  return mainJNI.RoutingModel_isEnd(swigCPtr, this, index);
1168  }
1169 
1174  public int VehicleIndex(long index) {
1175  return mainJNI.RoutingModel_VehicleIndex(swigCPtr, this, index);
1176  }
1177 
1183  public long next(Assignment assignment, long index) {
1184  return mainJNI.RoutingModel_next(swigCPtr, this, Assignment.getCPtr(assignment), assignment, index);
1185  }
1186 
1190  public boolean isVehicleUsed(Assignment assignment, int vehicle) {
1191  return mainJNI.RoutingModel_isVehicleUsed(swigCPtr, this, Assignment.getCPtr(assignment), assignment, vehicle);
1192  }
1193 
1198  public IntVar[] nexts() {
1199  return mainJNI.RoutingModel_nexts(swigCPtr, this);
1200 }
1201 
1206  public IntVar[] vehicleVars() {
1207  return mainJNI.RoutingModel_vehicleVars(swigCPtr, this);
1208 }
1209 
1214  public IntVar nextVar(long index) {
1215  long cPtr = mainJNI.RoutingModel_nextVar(swigCPtr, this, index);
1216  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1217  }
1218 
1222  public IntVar activeVar(long index) {
1223  long cPtr = mainJNI.RoutingModel_activeVar(swigCPtr, this, index);
1224  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1225  }
1226 
1231  public IntVar activeVehicleVar(int vehicle) {
1232  long cPtr = mainJNI.RoutingModel_activeVehicleVar(swigCPtr, this, vehicle);
1233  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1234  }
1235 
1240  public IntVar VehicleCostsConsideredVar(int vehicle) {
1241  long cPtr = mainJNI.RoutingModel_VehicleCostsConsideredVar(swigCPtr, this, vehicle);
1242  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1243  }
1244 
1249  public IntVar vehicleVar(long index) {
1250  long cPtr = mainJNI.RoutingModel_vehicleVar(swigCPtr, this, index);
1251  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1252  }
1253 
1257  public IntVar costVar() {
1258  long cPtr = mainJNI.RoutingModel_costVar(swigCPtr, this);
1259  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1260  }
1261 
1266  public long getArcCostForVehicle(long from_index, long to_index, long vehicle) {
1267  return mainJNI.RoutingModel_getArcCostForVehicle(swigCPtr, this, from_index, to_index, vehicle);
1268  }
1269 
1274  return mainJNI.RoutingModel_costsAreHomogeneousAcrossVehicles(swigCPtr, this);
1275  }
1276 
1281  public long getHomogeneousCost(long from_index, long to_index) {
1282  return mainJNI.RoutingModel_getHomogeneousCost(swigCPtr, this, from_index, to_index);
1283  }
1284 
1289  public long getArcCostForFirstSolution(long from_index, long to_index) {
1290  return mainJNI.RoutingModel_getArcCostForFirstSolution(swigCPtr, this, from_index, to_index);
1291  }
1292 
1301  public long getArcCostForClass(long from_index, long to_index, long cost_class_index) {
1302  return mainJNI.RoutingModel_getArcCostForClass(swigCPtr, this, from_index, to_index, cost_class_index);
1303  }
1304 
1308  public int getCostClassIndexOfVehicle(long vehicle) {
1309  return mainJNI.RoutingModel_getCostClassIndexOfVehicle(swigCPtr, this, vehicle);
1310 }
1311 
1316  public boolean hasVehicleWithCostClassIndex(int cost_class_index) {
1317  return mainJNI.RoutingModel_hasVehicleWithCostClassIndex(swigCPtr, this, cost_class_index);
1318  }
1319 
1323  public int getCostClassesCount() {
1324  return mainJNI.RoutingModel_getCostClassesCount(swigCPtr, this);
1325  }
1326 
1331  return mainJNI.RoutingModel_getNonZeroCostClassesCount(swigCPtr, this);
1332  }
1333 
1334  public int getVehicleClassIndexOfVehicle(long vehicle) {
1335  return mainJNI.RoutingModel_getVehicleClassIndexOfVehicle(swigCPtr, this, vehicle);
1336 }
1337 
1341  public int getVehicleClassesCount() {
1342  return mainJNI.RoutingModel_getVehicleClassesCount(swigCPtr, this);
1343  }
1344 
1348  public int[] getSameVehicleIndicesOfIndex(int node) {
1349  return mainJNI.RoutingModel_getSameVehicleIndicesOfIndex(swigCPtr, this, node);
1350 }
1351 
1353  return new RoutingModel.VehicleTypeContainer(mainJNI.RoutingModel_GetVehicleTypeContainer(swigCPtr, this), false);
1354  }
1355 
1376  public boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2) {
1377  return mainJNI.RoutingModel_arcIsMoreConstrainedThanArc(swigCPtr, this, from, to1, to2);
1378  }
1379 
1386  public String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print) {
1387  return mainJNI.RoutingModel_debugOutputAssignment(swigCPtr, this, Assignment.getCPtr(solution_assignment), solution_assignment, dimension_to_print);
1388  }
1389 
1399  public Solver solver() {
1400  long cPtr = mainJNI.RoutingModel_solver(swigCPtr, this);
1401  return (cPtr == 0) ? null : new Solver(cPtr, false);
1402  }
1403 
1407  public boolean checkLimit() {
1408  return mainJNI.RoutingModel_checkLimit(swigCPtr, this);
1409  }
1410 
1415  public int nodes() {
1416  return mainJNI.RoutingModel_nodes(swigCPtr, this);
1417  }
1418 
1422  public int vehicles() {
1423  return mainJNI.RoutingModel_vehicles(swigCPtr, this);
1424  }
1425 
1429  public long size() {
1430  return mainJNI.RoutingModel_size(swigCPtr, this);
1431  }
1432 
1437  public long getNumberOfDecisionsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
1438  return mainJNI.RoutingModel_getNumberOfDecisionsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1439  }
1440 
1441  public long getNumberOfRejectsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
1442  return mainJNI.RoutingModel_getNumberOfRejectsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1443  }
1444 
1448  public boolean isMatchingModel() {
1449  return mainJNI.RoutingModel_isMatchingModel(swigCPtr, this);
1450  }
1451 
1466  public DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer) {
1467  long cPtr = mainJNI.RoutingModel_makeGuidedSlackFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, initializer);
1468  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1469  }
1470 
1487  long cPtr = mainJNI.RoutingModel_makeSelfDependentDimensionFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
1488  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1489  }
1490 
1491  // Status
1499  public final static int ROUTING_NOT_SOLVED = mainJNI.RoutingModel_ROUTING_NOT_SOLVED_get();
1503  public final static int ROUTING_SUCCESS = mainJNI.RoutingModel_ROUTING_SUCCESS_get();
1507  public final static int ROUTING_FAIL = mainJNI.RoutingModel_ROUTING_FAIL_get();
1511  public final static int ROUTING_FAIL_TIMEOUT = mainJNI.RoutingModel_ROUTING_FAIL_TIMEOUT_get();
1515  public final static int ROUTING_INVALID = mainJNI.RoutingModel_ROUTING_INVALID_get();
1516 
1517  // PickupAndDeliveryPolicy
1525  public final static int PICKUP_AND_DELIVERY_NO_ORDER = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_NO_ORDER_get();
1529  public final static int PICKUP_AND_DELIVERY_LIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_LIFO_get();
1533  public final static int PICKUP_AND_DELIVERY_FIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_FIFO_get();
1534 
1535  // VisitTypePolicy
1553  public final static int TYPE_ADDED_TO_VEHICLE = mainJNI.RoutingModel_TYPE_ADDED_TO_VEHICLE_get();
1560  public final static int ADDED_TYPE_REMOVED_FROM_VEHICLE = mainJNI.RoutingModel_ADDED_TYPE_REMOVED_FROM_VEHICLE_get();
1565  public final static int TYPE_ON_VEHICLE_UP_TO_VISIT = mainJNI.RoutingModel_TYPE_ON_VEHICLE_UP_TO_VISIT_get();
1572  public final static int TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED = mainJNI.RoutingModel_TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED_get();
1573 
1574 }
An Assignment is a variable -> domains mapping, used to report solutions to the user.
Definition: Assignment.java:15
A DecisionBuilder is responsible for creating the search tree.
Local Search Filters are used for fast neighbor pruning.
This class represent a reversible FIFO structure.
Dimensions represent quantities accumulated at nodes along the routes.
Manager for any NodeIndex <-> variable index conversion.
Struct used to sort and store vehicles by their type.
void setVehicles_per_vehicle_class(SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t value)
SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t getVehicles_per_vehicle_class()
void setSorted_vehicle_classes_per_type(SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t value)
SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t getSorted_vehicle_classes_per_type()
void setArcCostEvaluatorOfAllVehicles(int evaluator_index)
Sets the cost function of the model such that the cost of a segment of a route between node 'from' a...
IntVar activeVar(long index)
Returns the active variable of the node corresponding to index.
boolean isVehicleUsed(Assignment assignment, int vehicle)
Returns true if the route of 'vehicle' is non empty in 'assignment'.
boolean isMatchingModel()
Returns true if a vehicle/node matching problem is detected.
long end(int vehicle)
Returns the variable index of the ending node of a vehicle route.
int vehicles()
Returns the number of vehicle routes in the model.
int VehicleIndex(long index)
Returns the vehicle of the given start/end index, and -1 if the given index is not a vehicle start/e...
int GetMaximumNumberOfActiveVehicles()
Returns the maximum number of active vehicles.
long getArcCostForClass(long from_index, long to_index, long cost_class_index)
Returns the cost of the segment between two nodes for a given cost class.
static final int TYPE_ON_VEHICLE_UP_TO_VISIT
With the following policy, the visit enforces that type 'T' is considered on the route from its star...
void addVariableMaximizedByFinalizer(IntVar var)
Adds a variable to maximize in the solution finalizer (see above for information on the solution fin...
int getVehicleClassesCount()
Returns the number of different vehicle classes in the model.
Assignment compactAndCheckAssignment(Assignment assignment)
Same as CompactAssignment() but also checks the validity of the final compact solution; if it is not...
boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
Assignment restoreAssignment(Assignment solution)
Restores an assignment as a solution in the routing model and returns the new solution.
static final int ROUTING_FAIL_TIMEOUT
Time limit reached before finding a solution with RoutingModel::Solve().
long size()
Returns the number of next variables in the model.
void addRequiredTypeAlternativesWhenAddingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives)
If type_D depends on type_R when adding type_D, any node_D of type_D and VisitTypePolicy TYPE_ADDED_...
void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle)
static long getKNoPenalty()
Constant used to express a hard constraint instead of a soft penalty.
void addLocalSearchOperator(LocalSearchOperator ls_operator)
Adds a local search operator to the set of operators used to solve the vehicle routing problem.
int addDisjunction(long[] indices, long penalty)
Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
static int getKNoDisjunction()
Constant used to express the "no disjunction" index, returned when a node does not appear in any dis...
boolean writeAssignment(String file_name)
Writes the current solution to a file containing an AssignmentProto.
long next(Assignment assignment, long index)
Assignment inspection Returns the variable index of the node directly after the node corresponding ...
void closeModel()
Closes the current routing model; after this method is called, no modification to the model can be d...
IntVar activeVehicleVar(int vehicle)
Returns the active variable of the vehicle.
static int getKNoDimension()
Constant used to express the "no dimension" index, returned when a dimension name does not correspon...
Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks)
For every vehicle of the routing model:
boolean isStart(long index)
Returns true if 'index' represents the first node of a route.
SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenAddingType(int type)
Returns the set of requirement alternatives when adding the given type.
int getCostClassIndexOfVehicle(long vehicle)
Get the cost class index of the given vehicle.
void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle)
IntBoolPair addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name)
long start(int vehicle)
Model inspection.
long getDisjunctionPenalty(int index)
Returns the penalty of the node disjunction of index 'index'.
int getNumberOfDisjunctions()
Returns the number of node disjunctions in the model.
static final int TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED
The visit doesn't have an impact on the number of types 'T' on the route, as it's (virtually) added ...
long getArcCostForFirstSolution(long from_index, long to_index)
Returns the cost of the arc in the context of the first solution strategy.
boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2)
Returns whether the arc from->to1 is more constrained than from->to2, taking into account,...
int[] getSameVehicleIndicesOfIndex(int node)
Returns variable indices of nodes constrained to be on the same route.
void addVariableMinimizedByFinalizer(IntVar var)
Adds a variable to minimize in the solution finalizer.
IntVar[] nexts()
Returns all next variables of the model, such that Nexts(i) is the next variable of the node corresp...
void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost)
Adds a variable to minimize in the solution finalizer, with a weighted priority: the higher the more...
void closeVisitTypes()
This function should be called once all node visit types have been set and prior to adding any incom...
boolean hasSameVehicleTypeRequirements()
Returns true iff any same-route (resp.
IntVar vehicleVar(long index)
Returns the vehicle variable of the node corresponding to index.
static final int TYPE_ADDED_TO_VEHICLE
Set the node visit types and incompatibilities/requirements between the types (see below).
IntVar VehicleCostsConsideredVar(int vehicle)
Returns the variable specifying whether or not costs are considered for vehicle.
Assignment preAssignment()
Returns an assignment used to fix some of the variables of the problem.
Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Solves the current routing model with the given parameters.
boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
int registerUnaryTransitVector(long[] values)
Registers 'callback' and returns its index.
static final int ADDED_TYPE_REMOVED_FROM_VEHICLE
When visited, one instance of type 'T' previously added to the route (TYPE_ADDED_TO_VEHICLE),...
Assignment readAssignment(String file_name)
Reads an assignment from a file and returns the current solution.
int getNumOfSingletonNodes()
Returns the number of non-start/end nodes which do not appear in a pickup/delivery pair.
int getNonZeroCostClassesCount()
Ditto, minus the 'always zero', built-in cost class.
int status()
Returns the current status of the routing model.
boolean isVehicleAllowedForIndex(int vehicle, long index)
Returns true if a vehicle is allowed to visit a given node.
IntVar[] vehicleVars()
Returns all vehicle variables of the model, such that VehicleVars(i) is the vehicle variable of the ...
RoutingDimension getMutableDimension(String dimension_name)
Returns a dimension from its name.
int registerPositiveTransitCallback(LongBinaryOperator callback)
static final int ROUTING_INVALID
Model, model parameters or flags are not valid.
String getPrimaryConstrainedDimension()
Get the primary constrained dimension, or an empty string if it is unset.
boolean hasDimension(String dimension_name)
Returns true if a dimension exists for a given dimension name.
Solver solver()
Returns a vector cumul_bounds, for which cumul_bounds[i][j] is a pair containing the minimum and max...
static final int PICKUP_AND_DELIVERY_LIFO
Deliveries must be performed in reverse order of pickups.
void addHardTypeIncompatibility(int type1, int type2)
Incompatibilities: Two nodes with "hard" incompatible types cannot share the same route at all,...
void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle)
Sets the linear and quadratic cost factor of the given vehicle.
void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction)
Same as AddPickupAndDelivery but notifying that the performed node from the disjunction of index 'pi...
long getArcCostForVehicle(long from_index, long to_index, long vehicle)
Returns the cost of the transit arc between two nodes for a given vehicle.
int getCostClassesCount()
Returns the number of different cost classes in the model.
void addRequiredTypeAlternativesWhenRemovingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives)
The following requirements apply when visiting dependent nodes that remove their type from the route...
boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes)
Applies lock chains to all vehicles to the next search, such that locks[p] is the lock chain for rou...
DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer)
The next few members are in the public section only for testing purposes.
void setPrimaryConstrainedDimension(String dimension_name)
Set the given dimension as "primary constrained".
void addVariableTargetToFinalizer(IntVar var, long target)
Add a variable to set the closest possible to the target value in the solution finalizer.
void SetMaximumNumberOfActiveVehicles(int max_active_vehicles)
Constrains the maximum number of active vehicles, aka the number of vehicles which do not have an em...
RoutingDimension getDimensionOrDie(String dimension_name)
Returns a dimension from its name.
int registerTransitCallback(LongBinaryOperator callback)
long getDisjunctionMaxCardinality(int index)
Returns the maximum number of possible active nodes of the node disjunction of index 'index'.
boolean isEnd(long index)
Returns true if 'index' represents the last node of a route.
boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment)
Fills an assignment from a specification of the routes of the vehicles.
void setFixedCostOfAllVehicles(long cost)
Sets the fixed cost of all vehicle routes.
void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle)
Sets the cost function for a given vehicle route.
RoutingModel(RoutingIndexManager index_manager)
Constructor taking an index manager.
int addDisjunction(long[] indices, long penalty, long max_cardinality)
Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
void addSearchMonitor(SearchMonitor monitor)
Adds a search monitor to the search used to solve the routing model.
long[] getDisjunctionIndices(int index)
Returns the variable indices of the nodes in the disjunction of index 'index'.
void addTemporalTypeIncompatibility(int type1, int type2)
Assignment solve()
Solves the current routing model; closes the current model.
void ignoreDisjunctionsAlreadyForcedToZero()
SPECIAL: Makes the solver ignore all the disjunctions whose active variables are all trivially zero ...
void setAllowedVehiclesForIndex(int[] vehicles, long index)
Sets the vehicles which can visit a given node.
void setVisitType(long index, int type, int type_policy)
void addAtSolutionCallback(Runnable callback)
Adds a callback called each time a solution is found during the search.
static final int PICKUP_AND_DELIVERY_FIFO
Deliveries must be performed in the same order as pickups.
long computeLowerBound()
Computes a lower bound to the routing problem solving a linear assignment problem.
void assignmentToRoutes(Assignment assignment, long[][] routes)
Converts the solution in the given assignment to routes for all vehicles.
SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenRemovingType(int type)
Returns the set of requirement alternatives when removing the given type.
void addSoftSameVehicleConstraint(long[] indices, long cost)
Adds a soft constraint to force a set of variable indices to be on the same vehicle.
IntBoolPair addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name)
Creates a dimension where the transit variable is constrained to be equal to 'values[i][next(i)]' fo...
String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print)
Print some debugging information about an assignment, including the feasible intervals of the CumulV...
boolean costsAreHomogeneousAcrossVehicles()
Whether costs are homogeneous across all vehicles.
IntVar applyLocks(long[] locks)
Applies a lock chain to the next search.
long getFixedCostOfVehicle(int vehicle)
Returns the route fixed cost taken into account if the route of the vehicle is not empty,...
static final int ROUTING_FAIL
No solution found to the problem after calling RoutingModel::Solve().
boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
long getHomogeneousCost(long from_index, long to_index)
Returns the cost of the segment between two nodes supposing all vehicle costs are the same (returns ...
boolean checkLimit()
Returns true if the search limit has been crossed.
static final int ROUTING_SUCCESS
Problem solved successfully after calling RoutingModel::Solve().
long getDepot()
Returns the variable index of the first starting or ending node of all routes.
void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor)
The following methods set the linear and quadratic cost factors of vehicles (must be positive values...
int registerPositiveUnaryTransitCallback(LongUnaryOperator callback)
Assignment solve(Assignment assignment)
Solves the current routing model; closes the current model.
int nodes()
Sizes and indices Returns the number of nodes in the model.
int addDisjunction(long[] indices)
Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
long unperformedPenalty(long var_index)
Get the "unperformed" penalty of a node.
long unperformedPenaltyOrValue(long default_value, long var_index)
Same as above except that it returns default_value instead of 0 when penalty is not well defined (de...
void addLocalSearchFilter(LocalSearchFilter filter)
Adds a custom local search filter to the list of filters used to speed up local search by pruning un...
long getNumberOfDecisionsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Returns statistics on first solution search, number of decisions sent to filters,...
void setFixedCostOfVehicle(long cost, int vehicle)
Sets the fixed cost of one vehicle route.
IntVar nextVar(long index)
Returns the next variable of the node corresponding to index.
boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
Model creation Methods to add dimensions to routes; dimensions represent quantities accumulated at ...
RoutingModel.VehicleTypeContainer GetVehicleTypeContainer()
IntBoolPair addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name)
Creates a dimension where the transit variable is constrained to be equal to 'values[i]' for node i;...
Assignment compactAssignment(Assignment assignment)
Converts the solution in the given assignment to routes for all vehicles.
int registerUnaryTransitCallback(LongUnaryOperator callback)
boolean hasVehicleWithCostClassIndex(int cost_class_index)
Returns true iff the model contains a vehicle with the given cost_class_index.
RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters)
void addPickupAndDelivery(long pickup, long delivery)
Notifies that index1 and index2 form a pair of nodes which should belong to the same route.
Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
IntVar costVar()
Returns the global cost variable which is being minimized.
void addToAssignment(IntVar var)
Adds an extra variable to the vehicle routing assignment.
static final int PICKUP_AND_DELIVERY_NO_ORDER
Types of precedence policy applied to pickup and delivery pairs.
RoutingModel(long cPtr, boolean cMemoryOwn)
IntBoolPair addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name)
Creates a dimension where the transit variable is constrained to be equal to 'value'; 'capacity' is ...
void setFirstSolutionEvaluator(LongBinaryOperator evaluator)
Gets/sets the evaluator used during the search.
long getNumberOfRejectsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
boolean hasHardTypeIncompatibilities()
Returns true iff any hard (resp.
Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices)
Restores the routes as the current solution.
void closeModelWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Same as above taking search parameters (as of 10/2015 some the parameters have to be set when closin...
DecisionBuilder makeSelfDependentDimensionFinalizer(RoutingDimension dimension)
MakeSelfDependentDimensionFinalizer is a finalizer for the slacks of a self-dependent dimension.
int[] getDisjunctionIndices(long index)
Returns the indices of the disjunctions to which an index belongs.
SWIGTYPE_p_absl__flat_hash_setT_int_t getTemporalTypeIncompatibilitiesOfType(int type)
static final int ROUTING_NOT_SOLVED
Status of the search.
void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment)
Given a "source_model" and its "source_assignment", resets "target_assignment" with the IntVar varia...
void setPickupAndDeliveryPolicyOfAllVehicles(int policy)
Sets the Pickup and delivery policy of all vehicles.
A search monitor is a simple set of callbacks to monitor all search events.
Solver Class A solver represents the main computation engine.
Definition: Solver.java:73