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 
204  public int registerUnaryTransitCallback(LongUnaryOperator callback) {
205  return mainJNI.RoutingModel_registerUnaryTransitCallback(swigCPtr, this, callback);
206  }
207 
208  public int registerPositiveUnaryTransitCallback(LongUnaryOperator callback) {
209  return mainJNI.RoutingModel_registerPositiveUnaryTransitCallback(swigCPtr, this, callback);
210  }
211 
212  public int registerTransitCallback(LongBinaryOperator callback) {
213  return mainJNI.RoutingModel_registerTransitCallback(swigCPtr, this, callback);
214  }
215 
216  public int registerPositiveTransitCallback(LongBinaryOperator callback) {
217  return mainJNI.RoutingModel_registerPositiveTransitCallback(swigCPtr, this, callback);
218  }
219 
242  public boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
243  return mainJNI.RoutingModel_addDimension(swigCPtr, this, evaluator_index, slack_max, capacity, fix_start_cumul_to_zero, name);
244  }
245 
246  public boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
247  return mainJNI.RoutingModel_addDimensionWithVehicleTransits(swigCPtr, this, evaluator_indices, slack_max, capacity, fix_start_cumul_to_zero, name);
248  }
249 
250  public boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
251  return mainJNI.RoutingModel_addDimensionWithVehicleCapacity(swigCPtr, this, evaluator_index, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
252  }
253 
254  public boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
255  return mainJNI.RoutingModel_addDimensionWithVehicleTransitAndCapacity(swigCPtr, this, evaluator_indices, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
256  }
257 
268  public IntBoolPair addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name) {
269  return new IntBoolPair(mainJNI.RoutingModel_addConstantDimensionWithSlack(swigCPtr, this, value, capacity, slack_max, fix_start_cumul_to_zero, name), true);
270  }
271 
272  public IntBoolPair addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name) {
273  return new IntBoolPair(mainJNI.RoutingModel_addConstantDimension(swigCPtr, this, value, capacity, fix_start_cumul_to_zero, name), true);
274  }
275 
287  public Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks) {
288  long cPtr = mainJNI.RoutingModel_MakePathSpansAndTotalSlacks(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, spans, total_slacks);
289  return (cPtr == 0) ? null : new Constraint(cPtr, false);
290  }
291 
295  public boolean hasDimension(String dimension_name) {
296  return mainJNI.RoutingModel_hasDimension(swigCPtr, this, dimension_name);
297  }
298 
302  public RoutingDimension getDimensionOrDie(String dimension_name) {
303  return new RoutingDimension(mainJNI.RoutingModel_getDimensionOrDie(swigCPtr, this, dimension_name), false);
304  }
305 
310  public RoutingDimension getMutableDimension(String dimension_name) {
311  long cPtr = mainJNI.RoutingModel_getMutableDimension(swigCPtr, this, dimension_name);
312  return (cPtr == 0) ? null : new RoutingDimension(cPtr, false);
313  }
314 
321  public void setPrimaryConstrainedDimension(String dimension_name) {
322  mainJNI.RoutingModel_setPrimaryConstrainedDimension(swigCPtr, this, dimension_name);
323  }
324 
329  return mainJNI.RoutingModel_getPrimaryConstrainedDimension(swigCPtr, this);
330  }
331 
350  public int addDisjunction(long[] indices, long penalty, long max_cardinality) {
351  return mainJNI.RoutingModel_addDisjunction__SWIG_0(swigCPtr, this, indices, penalty, max_cardinality);
352 }
353 
372  public int addDisjunction(long[] indices, long penalty) {
373  return mainJNI.RoutingModel_addDisjunction__SWIG_1(swigCPtr, this, indices, penalty);
374 }
375 
394  public int addDisjunction(long[] indices) {
395  return mainJNI.RoutingModel_addDisjunction__SWIG_2(swigCPtr, this, indices);
396 }
397 
401  public int[] getDisjunctionIndices(long index) {
402  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_0(swigCPtr, this, index);
403 }
404 
409  public long[] getDisjunctionIndices(int index) {
410  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_1(swigCPtr, this, index);
411 }
412 
416  public long getDisjunctionPenalty(int index) {
417  return mainJNI.RoutingModel_getDisjunctionPenalty(swigCPtr, this, index);
418  }
419 
424  public long getDisjunctionMaxCardinality(int index) {
425  return mainJNI.RoutingModel_getDisjunctionMaxCardinality(swigCPtr, this, index);
426  }
427 
431  public int getNumberOfDisjunctions() {
432  return mainJNI.RoutingModel_getNumberOfDisjunctions(swigCPtr, this);
433  }
434 
443  mainJNI.RoutingModel_ignoreDisjunctionsAlreadyForcedToZero(swigCPtr, this);
444  }
445 
451  public void addSoftSameVehicleConstraint(long[] indices, long cost) {
452  mainJNI.RoutingModel_addSoftSameVehicleConstraint(swigCPtr, this, indices, cost);
453  }
454 
461  public void setAllowedVehiclesForIndex(int[] vehicles, long index) {
462  mainJNI.RoutingModel_setAllowedVehiclesForIndex(swigCPtr, this, vehicles, index);
463  }
464 
468  public boolean isVehicleAllowedForIndex(int vehicle, long index) {
469  return mainJNI.RoutingModel_isVehicleAllowedForIndex(swigCPtr, this, vehicle, index);
470  }
471 
487  public void addPickupAndDelivery(long pickup, long delivery) {
488  mainJNI.RoutingModel_addPickupAndDelivery(swigCPtr, this, pickup, delivery);
489  }
490 
496  public void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction) {
497  mainJNI.RoutingModel_addPickupAndDeliverySets(swigCPtr, this, pickup_disjunction, delivery_disjunction);
498  }
499 
504  public void setPickupAndDeliveryPolicyOfAllVehicles(int policy) {
505  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfAllVehicles(swigCPtr, this, policy);
506  }
507 
508  public void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle) {
509  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, policy, vehicle);
510  }
511 
512  public int getPickupAndDeliveryPolicyOfVehicle(int vehicle) {
513  return mainJNI.RoutingModel_getPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, vehicle);
514  }
515 
520  public int getNumOfSingletonNodes() {
521  return mainJNI.RoutingModel_getNumOfSingletonNodes(swigCPtr, this);
522  }
523 
524  public void setVisitType(long index, int type, int type_policy) {
525  mainJNI.RoutingModel_setVisitType(swigCPtr, this, index, type, type_policy);
526  }
527 
528  public int getVisitType(long index) {
529  return mainJNI.RoutingModel_getVisitType(swigCPtr, this, index);
530  }
531 
532  public int[] GetSingleNodesOfType(int type) {
533  return mainJNI.RoutingModel_GetSingleNodesOfType(swigCPtr, this, type);
534 }
535 
536  public int[] GetPairIndicesOfType(int type) {
537  return mainJNI.RoutingModel_GetPairIndicesOfType(swigCPtr, this, type);
538 }
539 
540  public int GetVisitTypePolicy(long index) {
541  return mainJNI.RoutingModel_GetVisitTypePolicy(swigCPtr, this, index);
542  }
543 
549  public void closeVisitTypes() {
550  mainJNI.RoutingModel_closeVisitTypes(swigCPtr, this);
551  }
552 
553  public int getNumberOfVisitTypes() {
554  return mainJNI.RoutingModel_getNumberOfVisitTypes(swigCPtr, this);
555  }
556 
563  public void addHardTypeIncompatibility(int type1, int type2) {
564  mainJNI.RoutingModel_addHardTypeIncompatibility(swigCPtr, this, type1, type2);
565  }
566 
567  public void addTemporalTypeIncompatibility(int type1, int type2) {
568  mainJNI.RoutingModel_addTemporalTypeIncompatibility(swigCPtr, this, type1, type2);
569  }
570 
571  public SWIGTYPE_p_absl__flat_hash_setT_int_t getTemporalTypeIncompatibilitiesOfType(int type) {
572  return new SWIGTYPE_p_absl__flat_hash_setT_int_t(mainJNI.RoutingModel_getTemporalTypeIncompatibilitiesOfType(swigCPtr, this, type), false);
573  }
574 
579  public boolean hasHardTypeIncompatibilities() {
580  return mainJNI.RoutingModel_hasHardTypeIncompatibilities(swigCPtr, this);
581  }
582 
584  return mainJNI.RoutingModel_hasTemporalTypeIncompatibilities(swigCPtr, this);
585  }
586 
593  public void addRequiredTypeAlternativesWhenAddingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
594  mainJNI.RoutingModel_addRequiredTypeAlternativesWhenAddingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
595  }
596 
604  public void addRequiredTypeAlternativesWhenRemovingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
605  mainJNI.RoutingModel_addRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
606  }
607 
611  public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenAddingType(int type) {
612  return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenAddingType(swigCPtr, this, type), false);
613  }
614 
618  public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenRemovingType(int type) {
619  return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, type), false);
620  }
621 
627  return mainJNI.RoutingModel_hasSameVehicleTypeRequirements(swigCPtr, this);
628  }
629 
630  public boolean hasTemporalTypeRequirements() {
631  return mainJNI.RoutingModel_hasTemporalTypeRequirements(swigCPtr, this);
632  }
633 
640  public long unperformedPenalty(long var_index) {
641  return mainJNI.RoutingModel_unperformedPenalty(swigCPtr, this, var_index);
642  }
643 
649  public long unperformedPenaltyOrValue(long default_value, long var_index) {
650  return mainJNI.RoutingModel_unperformedPenaltyOrValue(swigCPtr, this, default_value, var_index);
651  }
652 
658  public long getDepot() {
659  return mainJNI.RoutingModel_getDepot(swigCPtr, this);
660  }
661 
668  public void SetMaximumNumberOfActiveVehicles(int max_active_vehicles) {
669  mainJNI.RoutingModel_SetMaximumNumberOfActiveVehicles(swigCPtr, this, max_active_vehicles);
670  }
671 
676  return mainJNI.RoutingModel_GetMaximumNumberOfActiveVehicles(swigCPtr, this);
677  }
678 
684  public void setArcCostEvaluatorOfAllVehicles(int evaluator_index) {
685  mainJNI.RoutingModel_setArcCostEvaluatorOfAllVehicles(swigCPtr, this, evaluator_index);
686  }
687 
691  public void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle) {
692  mainJNI.RoutingModel_setArcCostEvaluatorOfVehicle(swigCPtr, this, evaluator_index, vehicle);
693  }
694 
699  public void setFixedCostOfAllVehicles(long cost) {
700  mainJNI.RoutingModel_setFixedCostOfAllVehicles(swigCPtr, this, cost);
701  }
702 
706  public void setFixedCostOfVehicle(long cost, int vehicle) {
707  mainJNI.RoutingModel_setFixedCostOfVehicle(swigCPtr, this, cost, vehicle);
708  }
709 
715  public long getFixedCostOfVehicle(int vehicle) {
716  return mainJNI.RoutingModel_getFixedCostOfVehicle(swigCPtr, this, vehicle);
717  }
718 
736  public void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor) {
737  mainJNI.RoutingModel_setAmortizedCostFactorsOfAllVehicles(swigCPtr, this, linear_cost_factor, quadratic_cost_factor);
738  }
739 
743  public void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle) {
744  mainJNI.RoutingModel_setAmortizedCostFactorsOfVehicle(swigCPtr, this, linear_cost_factor, quadratic_cost_factor, vehicle);
745  }
746 
748  return mainJNI.RoutingModel_getAmortizedLinearCostFactorOfVehicles(swigCPtr, this);
749 }
750 
752  return mainJNI.RoutingModel_getAmortizedQuadraticCostFactorOfVehicles(swigCPtr, this);
753 }
754 
755  public void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle) {
756  mainJNI.RoutingModel_ConsiderEmptyRouteCostsForVehicle(swigCPtr, this, consider_costs, vehicle);
757  }
758 
759  public boolean AreEmptyRouteCostsConsideredForVehicle(int vehicle) {
760  return mainJNI.RoutingModel_AreEmptyRouteCostsConsideredForVehicle(swigCPtr, this, vehicle);
761  }
762 
768  public void setFirstSolutionEvaluator(LongBinaryOperator evaluator) {
769  mainJNI.RoutingModel_setFirstSolutionEvaluator(swigCPtr, this, evaluator);
770  }
771 
776  public void addLocalSearchOperator(LocalSearchOperator ls_operator) {
777  mainJNI.RoutingModel_addLocalSearchOperator(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator);
778  }
779 
783  public void addSearchMonitor(SearchMonitor monitor) {
784  mainJNI.RoutingModel_addSearchMonitor(swigCPtr, this, SearchMonitor.getCPtr(monitor), monitor);
785  }
786 
792  public void addAtSolutionCallback(Runnable callback) {
793  mainJNI.RoutingModel_addAtSolutionCallback(swigCPtr, this, callback);
794  }
795 
803  mainJNI.RoutingModel_addVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
804  }
805 
811  mainJNI.RoutingModel_addVariableMaximizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
812  }
813 
818  public void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost) {
819  mainJNI.RoutingModel_AddWeightedVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, cost);
820  }
821 
826  public void addVariableTargetToFinalizer(IntVar var, long target) {
827  mainJNI.RoutingModel_addVariableTargetToFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, target);
828  }
829 
838  public void closeModel() {
839  mainJNI.RoutingModel_closeModel(swigCPtr, this);
840  }
841 
846  public void closeModelWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
847  mainJNI.RoutingModel_closeModelWithParameters(swigCPtr, this, search_parameters.toByteArray());
848  }
849 
858  public Assignment solve(Assignment assignment) {
859  long cPtr = mainJNI.RoutingModel_solve__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
860  return (cPtr == 0) ? null : new Assignment(cPtr, false);
861  }
862 
871  public Assignment solve() {
872  long cPtr = mainJNI.RoutingModel_solve__SWIG_1(swigCPtr, this);
873  return (cPtr == 0) ? null : new Assignment(cPtr, false);
874  }
875 
885  public Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
886  long cPtr = mainJNI.RoutingModel_solveWithParameters(swigCPtr, this, search_parameters.toByteArray());
887  return (cPtr == 0) ? null : new Assignment(cPtr, false);
888  }
889 
890  public Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
891  long cPtr = mainJNI.RoutingModel_solveFromAssignmentWithParameters(swigCPtr, this, Assignment.getCPtr(assignment), assignment, search_parameters.toByteArray());
892  return (cPtr == 0) ? null : new Assignment(cPtr, false);
893  }
894 
902  public void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment) {
903  mainJNI.RoutingModel_setAssignmentFromOtherModelAssignment(swigCPtr, this, Assignment.getCPtr(target_assignment), target_assignment, RoutingModel.getCPtr(source_model), source_model, Assignment.getCPtr(source_assignment), source_assignment);
904  }
905 
913  public long computeLowerBound() {
914  return mainJNI.RoutingModel_computeLowerBound(swigCPtr, this);
915  }
916 
920  public int status() {
921  return mainJNI.RoutingModel_status(swigCPtr, this);
922  }
923 
934  public IntVar applyLocks(long[] locks) {
935  long cPtr = mainJNI.RoutingModel_applyLocks(swigCPtr, this, locks);
936  return (cPtr == 0) ? null : new IntVar(cPtr, false);
937  }
938 
949  public boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes) {
950  return mainJNI.RoutingModel_applyLocksToAllVehicles(swigCPtr, this, locks, close_routes);
951  }
952 
960  long cPtr = mainJNI.RoutingModel_preAssignment(swigCPtr, this);
961  return (cPtr == 0) ? null : new Assignment(cPtr, false);
962  }
963 
965  long cPtr = mainJNI.RoutingModel_mutablePreAssignment(swigCPtr, this);
966  return (cPtr == 0) ? null : new Assignment(cPtr, false);
967  }
968 
974  public boolean writeAssignment(String file_name) {
975  return mainJNI.RoutingModel_writeAssignment(swigCPtr, this, file_name);
976  }
977 
983  public Assignment readAssignment(String file_name) {
984  long cPtr = mainJNI.RoutingModel_readAssignment(swigCPtr, this, file_name);
985  return (cPtr == 0) ? null : new Assignment(cPtr, false);
986  }
987 
993  long cPtr = mainJNI.RoutingModel_restoreAssignment(swigCPtr, this, Assignment.getCPtr(solution), solution);
994  return (cPtr == 0) ? null : new Assignment(cPtr, false);
995  }
996 
1004  public Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices) {
1005  long cPtr = mainJNI.RoutingModel_readAssignmentFromRoutes(swigCPtr, this, routes, ignore_inactive_indices);
1006  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1007  }
1008 
1027  public boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment) {
1028  return mainJNI.RoutingModel_routesToAssignment(swigCPtr, this, routes, ignore_inactive_indices, close_routes, Assignment.getCPtr(assignment), assignment);
1029  }
1030 
1036  public void assignmentToRoutes(Assignment assignment, long[][] routes) {
1037  mainJNI.RoutingModel_assignmentToRoutes(swigCPtr, this, Assignment.getCPtr(assignment), assignment, routes);
1038  }
1039 
1064  long cPtr = mainJNI.RoutingModel_compactAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1065  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1066  }
1067 
1074  long cPtr = mainJNI.RoutingModel_compactAndCheckAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1075  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1076  }
1077 
1081  public void addToAssignment(IntVar var) {
1082  mainJNI.RoutingModel_addToAssignment(swigCPtr, this, IntVar.getCPtr(var), var);
1083  }
1084 
1085  public void addIntervalToAssignment(IntervalVar interval) {
1086  mainJNI.RoutingModel_addIntervalToAssignment(swigCPtr, this, IntervalVar.getCPtr(interval), interval);
1087  }
1088 
1097  mainJNI.RoutingModel_addLocalSearchFilter(swigCPtr, this, LocalSearchFilter.getCPtr(filter), filter);
1098  }
1099 
1104  public long start(int vehicle) {
1105  return mainJNI.RoutingModel_start(swigCPtr, this, vehicle);
1106  }
1107 
1111  public long end(int vehicle) {
1112  return mainJNI.RoutingModel_end(swigCPtr, this, vehicle);
1113  }
1114 
1118  public boolean isStart(long index) {
1119  return mainJNI.RoutingModel_isStart(swigCPtr, this, index);
1120  }
1121 
1125  public boolean isEnd(long index) {
1126  return mainJNI.RoutingModel_isEnd(swigCPtr, this, index);
1127  }
1128 
1133  public int VehicleIndex(long index) {
1134  return mainJNI.RoutingModel_VehicleIndex(swigCPtr, this, index);
1135  }
1136 
1142  public long next(Assignment assignment, long index) {
1143  return mainJNI.RoutingModel_next(swigCPtr, this, Assignment.getCPtr(assignment), assignment, index);
1144  }
1145 
1149  public boolean isVehicleUsed(Assignment assignment, int vehicle) {
1150  return mainJNI.RoutingModel_isVehicleUsed(swigCPtr, this, Assignment.getCPtr(assignment), assignment, vehicle);
1151  }
1152 
1157  public IntVar[] nexts() {
1158  return mainJNI.RoutingModel_nexts(swigCPtr, this);
1159 }
1160 
1165  public IntVar[] vehicleVars() {
1166  return mainJNI.RoutingModel_vehicleVars(swigCPtr, this);
1167 }
1168 
1173  public IntVar nextVar(long index) {
1174  long cPtr = mainJNI.RoutingModel_nextVar(swigCPtr, this, index);
1175  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1176  }
1177 
1181  public IntVar activeVar(long index) {
1182  long cPtr = mainJNI.RoutingModel_activeVar(swigCPtr, this, index);
1183  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1184  }
1185 
1190  public IntVar activeVehicleVar(int vehicle) {
1191  long cPtr = mainJNI.RoutingModel_activeVehicleVar(swigCPtr, this, vehicle);
1192  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1193  }
1194 
1199  public IntVar VehicleCostsConsideredVar(int vehicle) {
1200  long cPtr = mainJNI.RoutingModel_VehicleCostsConsideredVar(swigCPtr, this, vehicle);
1201  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1202  }
1203 
1208  public IntVar vehicleVar(long index) {
1209  long cPtr = mainJNI.RoutingModel_vehicleVar(swigCPtr, this, index);
1210  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1211  }
1212 
1216  public IntVar costVar() {
1217  long cPtr = mainJNI.RoutingModel_costVar(swigCPtr, this);
1218  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1219  }
1220 
1225  public long getArcCostForVehicle(long from_index, long to_index, long vehicle) {
1226  return mainJNI.RoutingModel_getArcCostForVehicle(swigCPtr, this, from_index, to_index, vehicle);
1227  }
1228 
1233  return mainJNI.RoutingModel_costsAreHomogeneousAcrossVehicles(swigCPtr, this);
1234  }
1235 
1240  public long getHomogeneousCost(long from_index, long to_index) {
1241  return mainJNI.RoutingModel_getHomogeneousCost(swigCPtr, this, from_index, to_index);
1242  }
1243 
1248  public long getArcCostForFirstSolution(long from_index, long to_index) {
1249  return mainJNI.RoutingModel_getArcCostForFirstSolution(swigCPtr, this, from_index, to_index);
1250  }
1251 
1260  public long getArcCostForClass(long from_index, long to_index, long cost_class_index) {
1261  return mainJNI.RoutingModel_getArcCostForClass(swigCPtr, this, from_index, to_index, cost_class_index);
1262  }
1263 
1267  public int getCostClassIndexOfVehicle(long vehicle) {
1268  return mainJNI.RoutingModel_getCostClassIndexOfVehicle(swigCPtr, this, vehicle);
1269 }
1270 
1275  public boolean hasVehicleWithCostClassIndex(int cost_class_index) {
1276  return mainJNI.RoutingModel_hasVehicleWithCostClassIndex(swigCPtr, this, cost_class_index);
1277  }
1278 
1282  public int getCostClassesCount() {
1283  return mainJNI.RoutingModel_getCostClassesCount(swigCPtr, this);
1284  }
1285 
1290  return mainJNI.RoutingModel_getNonZeroCostClassesCount(swigCPtr, this);
1291  }
1292 
1293  public int getVehicleClassIndexOfVehicle(long vehicle) {
1294  return mainJNI.RoutingModel_getVehicleClassIndexOfVehicle(swigCPtr, this, vehicle);
1295 }
1296 
1300  public int getVehicleClassesCount() {
1301  return mainJNI.RoutingModel_getVehicleClassesCount(swigCPtr, this);
1302  }
1303 
1307  public int[] getSameVehicleIndicesOfIndex(int node) {
1308  return mainJNI.RoutingModel_getSameVehicleIndicesOfIndex(swigCPtr, this, node);
1309 }
1310 
1312  return new RoutingModel.VehicleTypeContainer(mainJNI.RoutingModel_GetVehicleTypeContainer(swigCPtr, this), false);
1313  }
1314 
1335  public boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2) {
1336  return mainJNI.RoutingModel_arcIsMoreConstrainedThanArc(swigCPtr, this, from, to1, to2);
1337  }
1338 
1345  public String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print) {
1346  return mainJNI.RoutingModel_debugOutputAssignment(swigCPtr, this, Assignment.getCPtr(solution_assignment), solution_assignment, dimension_to_print);
1347  }
1348 
1358  public Solver solver() {
1359  long cPtr = mainJNI.RoutingModel_solver(swigCPtr, this);
1360  return (cPtr == 0) ? null : new Solver(cPtr, false);
1361  }
1362 
1366  public boolean checkLimit() {
1367  return mainJNI.RoutingModel_checkLimit(swigCPtr, this);
1368  }
1369 
1374  public int nodes() {
1375  return mainJNI.RoutingModel_nodes(swigCPtr, this);
1376  }
1377 
1381  public int vehicles() {
1382  return mainJNI.RoutingModel_vehicles(swigCPtr, this);
1383  }
1384 
1388  public long size() {
1389  return mainJNI.RoutingModel_size(swigCPtr, this);
1390  }
1391 
1396  public long getNumberOfDecisionsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
1397  return mainJNI.RoutingModel_getNumberOfDecisionsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1398  }
1399 
1400  public long getNumberOfRejectsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
1401  return mainJNI.RoutingModel_getNumberOfRejectsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1402  }
1403 
1407  public boolean isMatchingModel() {
1408  return mainJNI.RoutingModel_isMatchingModel(swigCPtr, this);
1409  }
1410 
1425  public DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer) {
1426  long cPtr = mainJNI.RoutingModel_makeGuidedSlackFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, initializer);
1427  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1428  }
1429 
1446  long cPtr = mainJNI.RoutingModel_makeSelfDependentDimensionFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
1447  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1448  }
1449 
1450  public int registerUnaryTransitVector(long[] values) {
1451  return mainJNI.RoutingModel_registerUnaryTransitVector(swigCPtr, this, values);
1452  }
1453 
1454  public int registerTransitMatrix(long[][] values) {
1455  return mainJNI.RoutingModel_registerTransitMatrix(swigCPtr, this, values);
1456  }
1457 
1458  public IntBoolPair addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
1459  return new IntBoolPair(mainJNI.RoutingModel_addVectorDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name), true);
1460  }
1461 
1462  public IntBoolPair addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
1463  return new IntBoolPair(mainJNI.RoutingModel_addMatrixDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name), true);
1464  }
1465 
1466  // Status
1474  public final static int ROUTING_NOT_SOLVED = mainJNI.RoutingModel_ROUTING_NOT_SOLVED_get();
1478  public final static int ROUTING_SUCCESS = mainJNI.RoutingModel_ROUTING_SUCCESS_get();
1482  public final static int ROUTING_FAIL = mainJNI.RoutingModel_ROUTING_FAIL_get();
1486  public final static int ROUTING_FAIL_TIMEOUT = mainJNI.RoutingModel_ROUTING_FAIL_TIMEOUT_get();
1490  public final static int ROUTING_INVALID = mainJNI.RoutingModel_ROUTING_INVALID_get();
1491 
1492  // PickupAndDeliveryPolicy
1500  public final static int PICKUP_AND_DELIVERY_NO_ORDER = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_NO_ORDER_get();
1504  public final static int PICKUP_AND_DELIVERY_LIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_LIFO_get();
1508  public final static int PICKUP_AND_DELIVERY_FIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_FIFO_get();
1509 
1510  // VisitTypePolicy
1528  public final static int TYPE_ADDED_TO_VEHICLE = mainJNI.RoutingModel_TYPE_ADDED_TO_VEHICLE_get();
1535  public final static int ADDED_TYPE_REMOVED_FROM_VEHICLE = mainJNI.RoutingModel_ADDED_TYPE_REMOVED_FROM_VEHICLE_get();
1540  public final static int TYPE_ON_VEHICLE_UP_TO_VISIT = mainJNI.RoutingModel_TYPE_ON_VEHICLE_UP_TO_VISIT_get();
1547  public final static int TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED = mainJNI.RoutingModel_TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED_get();
1548 
1549 }
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)
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)
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)
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