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 
201  this(mainJNI.new_RoutingModel__SWIG_1(RoutingIndexManager.getCPtr(index_manager), index_manager, parameters.toByteArray()), true);
202  }
203 
207  public int registerUnaryTransitCallback(LongUnaryOperator callback) {
208  return mainJNI.RoutingModel_registerUnaryTransitCallback(swigCPtr, this, callback);
209  }
210 
211  public int RegisterPositiveUnaryTransitCallback(LongUnaryOperator callback) {
212  return mainJNI.RoutingModel_RegisterPositiveUnaryTransitCallback(swigCPtr, this, callback);
213  }
214 
215  public int registerTransitCallback(LongBinaryOperator callback) {
216  return mainJNI.RoutingModel_registerTransitCallback(swigCPtr, this, callback);
217  }
218 
219  public int registerPositiveTransitCallback(LongBinaryOperator callback) {
220  return mainJNI.RoutingModel_registerPositiveTransitCallback(swigCPtr, this, callback);
221  }
222 
245  public boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
246  return mainJNI.RoutingModel_addDimension(swigCPtr, this, evaluator_index, slack_max, capacity, fix_start_cumul_to_zero, name);
247  }
248 
249  public boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
250  return mainJNI.RoutingModel_addDimensionWithVehicleTransits(swigCPtr, this, evaluator_indices, slack_max, capacity, fix_start_cumul_to_zero, name);
251  }
252 
253  public boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
254  return mainJNI.RoutingModel_addDimensionWithVehicleCapacity(swigCPtr, this, evaluator_index, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
255  }
256 
257  public boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
258  return mainJNI.RoutingModel_addDimensionWithVehicleTransitAndCapacity(swigCPtr, this, evaluator_indices, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
259  }
260 
269  public boolean addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name) {
270  return mainJNI.RoutingModel_addConstantDimensionWithSlack(swigCPtr, this, value, capacity, slack_max, fix_start_cumul_to_zero, name);
271  }
272 
273  public boolean addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name) {
274  return mainJNI.RoutingModel_addConstantDimension(swigCPtr, this, value, capacity, fix_start_cumul_to_zero, name);
275  }
276 
286  public boolean addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
287  return mainJNI.RoutingModel_addVectorDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name);
288  }
289 
301  public Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks) {
302  long cPtr = mainJNI.RoutingModel_MakePathSpansAndTotalSlacks(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, spans, total_slacks);
303  return (cPtr == 0) ? null : new Constraint(cPtr, false);
304  }
305 
309  public boolean hasDimension(String dimension_name) {
310  return mainJNI.RoutingModel_hasDimension(swigCPtr, this, dimension_name);
311  }
312 
316  public RoutingDimension getDimensionOrDie(String dimension_name) {
317  return new RoutingDimension(mainJNI.RoutingModel_getDimensionOrDie(swigCPtr, this, dimension_name), false);
318  }
319 
324  public RoutingDimension getMutableDimension(String dimension_name) {
325  long cPtr = mainJNI.RoutingModel_getMutableDimension(swigCPtr, this, dimension_name);
326  return (cPtr == 0) ? null : new RoutingDimension(cPtr, false);
327  }
328 
335  public void setPrimaryConstrainedDimension(String dimension_name) {
336  mainJNI.RoutingModel_setPrimaryConstrainedDimension(swigCPtr, this, dimension_name);
337  }
338 
343  return mainJNI.RoutingModel_getPrimaryConstrainedDimension(swigCPtr, this);
344  }
345 
364  public int addDisjunction(long[] indices, long penalty, long max_cardinality) {
365  return mainJNI.RoutingModel_addDisjunction__SWIG_0(swigCPtr, this, indices, penalty, max_cardinality);
366 }
367 
386  public int addDisjunction(long[] indices, long penalty) {
387  return mainJNI.RoutingModel_addDisjunction__SWIG_1(swigCPtr, this, indices, penalty);
388 }
389 
408  public int addDisjunction(long[] indices) {
409  return mainJNI.RoutingModel_addDisjunction__SWIG_2(swigCPtr, this, indices);
410 }
411 
415  public int[] getDisjunctionIndices(long index) {
416  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_0(swigCPtr, this, index);
417 }
418 
423  public long[] getDisjunctionIndices(int index) {
424  return mainJNI.RoutingModel_getDisjunctionIndices__SWIG_1(swigCPtr, this, index);
425 }
426 
430  public long getDisjunctionPenalty(int index) {
431  return mainJNI.RoutingModel_getDisjunctionPenalty(swigCPtr, this, index);
432  }
433 
438  public long getDisjunctionMaxCardinality(int index) {
439  return mainJNI.RoutingModel_getDisjunctionMaxCardinality(swigCPtr, this, index);
440  }
441 
445  public int getNumberOfDisjunctions() {
446  return mainJNI.RoutingModel_getNumberOfDisjunctions(swigCPtr, this);
447  }
448 
457  mainJNI.RoutingModel_ignoreDisjunctionsAlreadyForcedToZero(swigCPtr, this);
458  }
459 
465  public void addSoftSameVehicleConstraint(long[] indices, long cost) {
466  mainJNI.RoutingModel_addSoftSameVehicleConstraint(swigCPtr, this, indices, cost);
467  }
468 
475  public void setAllowedVehiclesForIndex(int[] vehicles, long index) {
476  mainJNI.RoutingModel_setAllowedVehiclesForIndex(swigCPtr, this, vehicles, index);
477  }
478 
482  public boolean isVehicleAllowedForIndex(int vehicle, long index) {
483  return mainJNI.RoutingModel_isVehicleAllowedForIndex(swigCPtr, this, vehicle, index);
484  }
485 
501  public void addPickupAndDelivery(long pickup, long delivery) {
502  mainJNI.RoutingModel_addPickupAndDelivery(swigCPtr, this, pickup, delivery);
503  }
504 
510  public void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction) {
511  mainJNI.RoutingModel_addPickupAndDeliverySets(swigCPtr, this, pickup_disjunction, delivery_disjunction);
512  }
513 
518  public void setPickupAndDeliveryPolicyOfAllVehicles(int policy) {
519  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfAllVehicles(swigCPtr, this, policy);
520  }
521 
522  public void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle) {
523  mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, policy, vehicle);
524  }
525 
526  public int getPickupAndDeliveryPolicyOfVehicle(int vehicle) {
527  return mainJNI.RoutingModel_getPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, vehicle);
528  }
529 
534  public int getNumOfSingletonNodes() {
535  return mainJNI.RoutingModel_getNumOfSingletonNodes(swigCPtr, this);
536  }
537 
538  public void setVisitType(long index, int type, int type_policy) {
539  mainJNI.RoutingModel_setVisitType(swigCPtr, this, index, type, type_policy);
540  }
541 
542  public int getVisitType(long index) {
543  return mainJNI.RoutingModel_getVisitType(swigCPtr, this, index);
544  }
545 
546  public int[] GetSingleNodesOfType(int type) {
547  return mainJNI.RoutingModel_GetSingleNodesOfType(swigCPtr, this, type);
548 }
549 
550  public int[] GetPairIndicesOfType(int type) {
551  return mainJNI.RoutingModel_GetPairIndicesOfType(swigCPtr, this, type);
552 }
553 
554  public int GetVisitTypePolicy(long index) {
555  return mainJNI.RoutingModel_GetVisitTypePolicy(swigCPtr, this, index);
556  }
557 
563  public void closeVisitTypes() {
564  mainJNI.RoutingModel_closeVisitTypes(swigCPtr, this);
565  }
566 
567  public int getNumberOfVisitTypes() {
568  return mainJNI.RoutingModel_getNumberOfVisitTypes(swigCPtr, this);
569  }
570 
577  public void addHardTypeIncompatibility(int type1, int type2) {
578  mainJNI.RoutingModel_addHardTypeIncompatibility(swigCPtr, this, type1, type2);
579  }
580 
581  public void addTemporalTypeIncompatibility(int type1, int type2) {
582  mainJNI.RoutingModel_addTemporalTypeIncompatibility(swigCPtr, this, type1, type2);
583  }
584 
585  public SWIGTYPE_p_absl__flat_hash_setT_int_t getTemporalTypeIncompatibilitiesOfType(int type) {
586  return new SWIGTYPE_p_absl__flat_hash_setT_int_t(mainJNI.RoutingModel_getTemporalTypeIncompatibilitiesOfType(swigCPtr, this, type), false);
587  }
588 
593  public boolean hasHardTypeIncompatibilities() {
594  return mainJNI.RoutingModel_hasHardTypeIncompatibilities(swigCPtr, this);
595  }
596 
598  return mainJNI.RoutingModel_hasTemporalTypeIncompatibilities(swigCPtr, this);
599  }
600 
607  public void addRequiredTypeAlternativesWhenAddingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
608  mainJNI.RoutingModel_addRequiredTypeAlternativesWhenAddingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
609  }
610 
618  public void addRequiredTypeAlternativesWhenRemovingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
619  mainJNI.RoutingModel_addRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
620  }
621 
625  public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenAddingType(int type) {
626  return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenAddingType(swigCPtr, this, type), false);
627  }
628 
632  public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenRemovingType(int type) {
633  return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, type), false);
634  }
635 
641  return mainJNI.RoutingModel_hasSameVehicleTypeRequirements(swigCPtr, this);
642  }
643 
644  public boolean hasTemporalTypeRequirements() {
645  return mainJNI.RoutingModel_hasTemporalTypeRequirements(swigCPtr, this);
646  }
647 
654  public long unperformedPenalty(long var_index) {
655  return mainJNI.RoutingModel_unperformedPenalty(swigCPtr, this, var_index);
656  }
657 
663  public long unperformedPenaltyOrValue(long default_value, long var_index) {
664  return mainJNI.RoutingModel_unperformedPenaltyOrValue(swigCPtr, this, default_value, var_index);
665  }
666 
672  public long getDepot() {
673  return mainJNI.RoutingModel_getDepot(swigCPtr, this);
674  }
675 
682  public void SetMaximumNumberOfActiveVehicles(int max_active_vehicles) {
683  mainJNI.RoutingModel_SetMaximumNumberOfActiveVehicles(swigCPtr, this, max_active_vehicles);
684  }
685 
690  return mainJNI.RoutingModel_GetMaximumNumberOfActiveVehicles(swigCPtr, this);
691  }
692 
698  public void setArcCostEvaluatorOfAllVehicles(int evaluator_index) {
699  mainJNI.RoutingModel_setArcCostEvaluatorOfAllVehicles(swigCPtr, this, evaluator_index);
700  }
701 
705  public void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle) {
706  mainJNI.RoutingModel_setArcCostEvaluatorOfVehicle(swigCPtr, this, evaluator_index, vehicle);
707  }
708 
713  public void setFixedCostOfAllVehicles(long cost) {
714  mainJNI.RoutingModel_setFixedCostOfAllVehicles(swigCPtr, this, cost);
715  }
716 
720  public void setFixedCostOfVehicle(long cost, int vehicle) {
721  mainJNI.RoutingModel_setFixedCostOfVehicle(swigCPtr, this, cost, vehicle);
722  }
723 
729  public long getFixedCostOfVehicle(int vehicle) {
730  return mainJNI.RoutingModel_getFixedCostOfVehicle(swigCPtr, this, vehicle);
731  }
732 
750  public void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor) {
751  mainJNI.RoutingModel_setAmortizedCostFactorsOfAllVehicles(swigCPtr, this, linear_cost_factor, quadratic_cost_factor);
752  }
753 
757  public void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle) {
758  mainJNI.RoutingModel_setAmortizedCostFactorsOfVehicle(swigCPtr, this, linear_cost_factor, quadratic_cost_factor, vehicle);
759  }
760 
762  return mainJNI.RoutingModel_getAmortizedLinearCostFactorOfVehicles(swigCPtr, this);
763 }
764 
766  return mainJNI.RoutingModel_getAmortizedQuadraticCostFactorOfVehicles(swigCPtr, this);
767 }
768 
769  public void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle) {
770  mainJNI.RoutingModel_ConsiderEmptyRouteCostsForVehicle(swigCPtr, this, consider_costs, vehicle);
771  }
772 
773  public boolean AreEmptyRouteCostsConsideredForVehicle(int vehicle) {
774  return mainJNI.RoutingModel_AreEmptyRouteCostsConsideredForVehicle(swigCPtr, this, vehicle);
775  }
776 
782  public void setFirstSolutionEvaluator(LongBinaryOperator evaluator) {
783  mainJNI.RoutingModel_setFirstSolutionEvaluator(swigCPtr, this, evaluator);
784  }
785 
790  public void addLocalSearchOperator(LocalSearchOperator ls_operator) {
791  mainJNI.RoutingModel_addLocalSearchOperator(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator);
792  }
793 
797  public void addSearchMonitor(SearchMonitor monitor) {
798  mainJNI.RoutingModel_addSearchMonitor(swigCPtr, this, SearchMonitor.getCPtr(monitor), monitor);
799  }
800 
806  public void addAtSolutionCallback(Runnable callback) {
807  mainJNI.RoutingModel_addAtSolutionCallback(swigCPtr, this, callback);
808  }
809 
817  mainJNI.RoutingModel_addVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
818  }
819 
825  mainJNI.RoutingModel_addVariableMaximizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
826  }
827 
832  public void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost) {
833  mainJNI.RoutingModel_AddWeightedVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, cost);
834  }
835 
840  public void addVariableTargetToFinalizer(IntVar var, long target) {
841  mainJNI.RoutingModel_addVariableTargetToFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, target);
842  }
843 
852  public void closeModel() {
853  mainJNI.RoutingModel_closeModel(swigCPtr, this);
854  }
855 
861  mainJNI.RoutingModel_closeModelWithParameters(swigCPtr, this, search_parameters.toByteArray());
862  }
863 
872  public Assignment solve(Assignment assignment) {
873  long cPtr = mainJNI.RoutingModel_solve__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
874  return (cPtr == 0) ? null : new Assignment(cPtr, false);
875  }
876 
885  public Assignment solve() {
886  long cPtr = mainJNI.RoutingModel_solve__SWIG_1(swigCPtr, this);
887  return (cPtr == 0) ? null : new Assignment(cPtr, false);
888  }
889 
900  long cPtr = mainJNI.RoutingModel_solveWithParameters(swigCPtr, this, search_parameters.toByteArray());
901  return (cPtr == 0) ? null : new Assignment(cPtr, false);
902  }
903 
905  long cPtr = mainJNI.RoutingModel_solveFromAssignmentWithParameters(swigCPtr, this, Assignment.getCPtr(assignment), assignment, search_parameters.toByteArray());
906  return (cPtr == 0) ? null : new Assignment(cPtr, false);
907  }
908 
916  public void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment) {
917  mainJNI.RoutingModel_setAssignmentFromOtherModelAssignment(swigCPtr, this, Assignment.getCPtr(target_assignment), target_assignment, RoutingModel.getCPtr(source_model), source_model, Assignment.getCPtr(source_assignment), source_assignment);
918  }
919 
927  public long computeLowerBound() {
928  return mainJNI.RoutingModel_computeLowerBound(swigCPtr, this);
929  }
930 
934  public int status() {
935  return mainJNI.RoutingModel_status(swigCPtr, this);
936  }
937 
948  public IntVar applyLocks(long[] locks) {
949  long cPtr = mainJNI.RoutingModel_applyLocks(swigCPtr, this, locks);
950  return (cPtr == 0) ? null : new IntVar(cPtr, false);
951  }
952 
963  public boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes) {
964  return mainJNI.RoutingModel_applyLocksToAllVehicles(swigCPtr, this, locks, close_routes);
965  }
966 
974  long cPtr = mainJNI.RoutingModel_preAssignment(swigCPtr, this);
975  return (cPtr == 0) ? null : new Assignment(cPtr, false);
976  }
977 
979  long cPtr = mainJNI.RoutingModel_mutablePreAssignment(swigCPtr, this);
980  return (cPtr == 0) ? null : new Assignment(cPtr, false);
981  }
982 
988  public boolean writeAssignment(String file_name) {
989  return mainJNI.RoutingModel_writeAssignment(swigCPtr, this, file_name);
990  }
991 
997  public Assignment readAssignment(String file_name) {
998  long cPtr = mainJNI.RoutingModel_readAssignment(swigCPtr, this, file_name);
999  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1000  }
1001 
1007  long cPtr = mainJNI.RoutingModel_restoreAssignment(swigCPtr, this, Assignment.getCPtr(solution), solution);
1008  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1009  }
1010 
1018  public Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices) {
1019  long cPtr = mainJNI.RoutingModel_readAssignmentFromRoutes(swigCPtr, this, routes, ignore_inactive_indices);
1020  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1021  }
1022 
1041  public boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment) {
1042  return mainJNI.RoutingModel_routesToAssignment(swigCPtr, this, routes, ignore_inactive_indices, close_routes, Assignment.getCPtr(assignment), assignment);
1043  }
1044 
1050  public void assignmentToRoutes(Assignment assignment, long[][] routes) {
1051  mainJNI.RoutingModel_assignmentToRoutes(swigCPtr, this, Assignment.getCPtr(assignment), assignment, routes);
1052  }
1053 
1078  long cPtr = mainJNI.RoutingModel_compactAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1079  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1080  }
1081 
1088  long cPtr = mainJNI.RoutingModel_compactAndCheckAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1089  return (cPtr == 0) ? null : new Assignment(cPtr, false);
1090  }
1091 
1095  public void addToAssignment(IntVar var) {
1096  mainJNI.RoutingModel_addToAssignment(swigCPtr, this, IntVar.getCPtr(var), var);
1097  }
1098 
1099  public void addIntervalToAssignment(IntervalVar interval) {
1100  mainJNI.RoutingModel_addIntervalToAssignment(swigCPtr, this, IntervalVar.getCPtr(interval), interval);
1101  }
1102 
1111  mainJNI.RoutingModel_addLocalSearchFilter(swigCPtr, this, LocalSearchFilter.getCPtr(filter), filter);
1112  }
1113 
1118  public long start(int vehicle) {
1119  return mainJNI.RoutingModel_start(swigCPtr, this, vehicle);
1120  }
1121 
1125  public long end(int vehicle) {
1126  return mainJNI.RoutingModel_end(swigCPtr, this, vehicle);
1127  }
1128 
1132  public boolean isStart(long index) {
1133  return mainJNI.RoutingModel_isStart(swigCPtr, this, index);
1134  }
1135 
1139  public boolean isEnd(long index) {
1140  return mainJNI.RoutingModel_isEnd(swigCPtr, this, index);
1141  }
1142 
1147  public int VehicleIndex(int index) {
1148  return mainJNI.RoutingModel_VehicleIndex(swigCPtr, this, index);
1149  }
1150 
1156  public long next(Assignment assignment, long index) {
1157  return mainJNI.RoutingModel_next(swigCPtr, this, Assignment.getCPtr(assignment), assignment, index);
1158  }
1159 
1163  public boolean isVehicleUsed(Assignment assignment, int vehicle) {
1164  return mainJNI.RoutingModel_isVehicleUsed(swigCPtr, this, Assignment.getCPtr(assignment), assignment, vehicle);
1165  }
1166 
1171  public IntVar[] nexts() {
1172  return mainJNI.RoutingModel_nexts(swigCPtr, this);
1173 }
1174 
1179  public IntVar[] vehicleVars() {
1180  return mainJNI.RoutingModel_vehicleVars(swigCPtr, this);
1181 }
1182 
1187  public IntVar nextVar(long index) {
1188  long cPtr = mainJNI.RoutingModel_nextVar(swigCPtr, this, index);
1189  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1190  }
1191 
1195  public IntVar activeVar(long index) {
1196  long cPtr = mainJNI.RoutingModel_activeVar(swigCPtr, this, index);
1197  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1198  }
1199 
1204  public IntVar activeVehicleVar(int vehicle) {
1205  long cPtr = mainJNI.RoutingModel_activeVehicleVar(swigCPtr, this, vehicle);
1206  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1207  }
1208 
1213  public IntVar VehicleCostsConsideredVar(int vehicle) {
1214  long cPtr = mainJNI.RoutingModel_VehicleCostsConsideredVar(swigCPtr, this, vehicle);
1215  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1216  }
1217 
1222  public IntVar vehicleVar(long index) {
1223  long cPtr = mainJNI.RoutingModel_vehicleVar(swigCPtr, this, index);
1224  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1225  }
1226 
1230  public IntVar costVar() {
1231  long cPtr = mainJNI.RoutingModel_costVar(swigCPtr, this);
1232  return (cPtr == 0) ? null : new IntVar(cPtr, false);
1233  }
1234 
1239  public long getArcCostForVehicle(long from_index, long to_index, long vehicle) {
1240  return mainJNI.RoutingModel_getArcCostForVehicle(swigCPtr, this, from_index, to_index, vehicle);
1241  }
1242 
1247  return mainJNI.RoutingModel_costsAreHomogeneousAcrossVehicles(swigCPtr, this);
1248  }
1249 
1254  public long getHomogeneousCost(long from_index, long to_index) {
1255  return mainJNI.RoutingModel_getHomogeneousCost(swigCPtr, this, from_index, to_index);
1256  }
1257 
1262  public long getArcCostForFirstSolution(long from_index, long to_index) {
1263  return mainJNI.RoutingModel_getArcCostForFirstSolution(swigCPtr, this, from_index, to_index);
1264  }
1265 
1274  public long getArcCostForClass(long from_index, long to_index, long cost_class_index) {
1275  return mainJNI.RoutingModel_getArcCostForClass(swigCPtr, this, from_index, to_index, cost_class_index);
1276  }
1277 
1281  public int getCostClassIndexOfVehicle(long vehicle) {
1282  return mainJNI.RoutingModel_getCostClassIndexOfVehicle(swigCPtr, this, vehicle);
1283 }
1284 
1289  public boolean hasVehicleWithCostClassIndex(int cost_class_index) {
1290  return mainJNI.RoutingModel_hasVehicleWithCostClassIndex(swigCPtr, this, cost_class_index);
1291  }
1292 
1296  public int getCostClassesCount() {
1297  return mainJNI.RoutingModel_getCostClassesCount(swigCPtr, this);
1298  }
1299 
1304  return mainJNI.RoutingModel_getNonZeroCostClassesCount(swigCPtr, this);
1305  }
1306 
1307  public int getVehicleClassIndexOfVehicle(long vehicle) {
1308  return mainJNI.RoutingModel_getVehicleClassIndexOfVehicle(swigCPtr, this, vehicle);
1309 }
1310 
1314  public int getVehicleClassesCount() {
1315  return mainJNI.RoutingModel_getVehicleClassesCount(swigCPtr, this);
1316  }
1317 
1321  public int[] getSameVehicleIndicesOfIndex(int node) {
1322  return mainJNI.RoutingModel_getSameVehicleIndicesOfIndex(swigCPtr, this, node);
1323 }
1324 
1326  return new RoutingModel.VehicleTypeContainer(mainJNI.RoutingModel_GetVehicleTypeContainer(swigCPtr, this), false);
1327  }
1328 
1349  public boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2) {
1350  return mainJNI.RoutingModel_arcIsMoreConstrainedThanArc(swigCPtr, this, from, to1, to2);
1351  }
1352 
1359  public String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print) {
1360  return mainJNI.RoutingModel_debugOutputAssignment(swigCPtr, this, Assignment.getCPtr(solution_assignment), solution_assignment, dimension_to_print);
1361  }
1362 
1372  public Solver solver() {
1373  long cPtr = mainJNI.RoutingModel_solver(swigCPtr, this);
1374  return (cPtr == 0) ? null : new Solver(cPtr, false);
1375  }
1376 
1380  public boolean checkLimit() {
1381  return mainJNI.RoutingModel_checkLimit(swigCPtr, this);
1382  }
1383 
1388  public int nodes() {
1389  return mainJNI.RoutingModel_nodes(swigCPtr, this);
1390  }
1391 
1395  public int vehicles() {
1396  return mainJNI.RoutingModel_vehicles(swigCPtr, this);
1397  }
1398 
1402  public long size() {
1403  return mainJNI.RoutingModel_size(swigCPtr, this);
1404  }
1405 
1411  return mainJNI.RoutingModel_getNumberOfDecisionsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1412  }
1413 
1415  return mainJNI.RoutingModel_getNumberOfRejectsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1416  }
1417 
1421  public boolean isMatchingModel() {
1422  return mainJNI.RoutingModel_isMatchingModel(swigCPtr, this);
1423  }
1424 
1439  public DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer) {
1440  long cPtr = mainJNI.RoutingModel_makeGuidedSlackFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, initializer);
1441  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1442  }
1443 
1460  long cPtr = mainJNI.RoutingModel_makeSelfDependentDimensionFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
1461  return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1462  }
1463 
1464  public void addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
1465  mainJNI.RoutingModel_addMatrixDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name);
1466  }
1467 
1468  // Status
1476  public final static int ROUTING_NOT_SOLVED = mainJNI.RoutingModel_ROUTING_NOT_SOLVED_get();
1480  public final static int ROUTING_SUCCESS = mainJNI.RoutingModel_ROUTING_SUCCESS_get();
1484  public final static int ROUTING_FAIL = mainJNI.RoutingModel_ROUTING_FAIL_get();
1488  public final static int ROUTING_FAIL_TIMEOUT = mainJNI.RoutingModel_ROUTING_FAIL_TIMEOUT_get();
1492  public final static int ROUTING_INVALID = mainJNI.RoutingModel_ROUTING_INVALID_get();
1493 
1494  // PickupAndDeliveryPolicy
1502  public final static int PICKUP_AND_DELIVERY_NO_ORDER = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_NO_ORDER_get();
1506  public final static int PICKUP_AND_DELIVERY_LIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_LIFO_get();
1510  public final static int PICKUP_AND_DELIVERY_FIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_FIFO_get();
1511 
1512  // VisitTypePolicy
1530  public final static int TYPE_ADDED_TO_VEHICLE = mainJNI.RoutingModel_TYPE_ADDED_TO_VEHICLE_get();
1537  public final static int ADDED_TYPE_REMOVED_FROM_VEHICLE = mainJNI.RoutingModel_ADDED_TYPE_REMOVED_FROM_VEHICLE_get();
1542  public final static int TYPE_ON_VEHICLE_UP_TO_VISIT = mainJNI.RoutingModel_TYPE_ON_VEHICLE_UP_TO_VISIT_get();
1549  public final static int TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED = mainJNI.RoutingModel_TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED_get();
1550 
1551 }
static final int ADDED_TYPE_REMOVED_FROM_VEHICLE
When visited, one instance of type 'T' previously added to the route (TYPE_ADDED_TO_VEHICLE),...
boolean isStart(long index)
Returns true if 'index' represents the first node of a route.
IntVar[] nexts()
Returns all next variables of the model, such that Nexts(i) is the next variable of the node corresp...
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...
A constraint is the main modeling object.
void addLocalSearchFilter(LocalSearchFilter filter)
Adds a custom local search filter to the list of filters used to speed up local search by pruning un...
Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks)
For every vehicle of the routing model:
Manager for any NodeIndex <-> variable index conversion.
SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t getSorted_vehicle_classes_per_type()
void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle)
Sets the linear and quadratic cost factor of the given vehicle.
void ignoreDisjunctionsAlreadyForcedToZero()
SPECIAL: Makes the solver ignore all the disjunctions whose active variables are all trivially zero ...
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.
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[] GetPairIndicesOfType(int type)
void addAtSolutionCallback(Runnable callback)
Adds a callback called each time a solution is found during the search.
int[] getSameVehicleIndicesOfIndex(int node)
Returns variable indices of nodes constrained to be on the same route.
int getVehicleClassIndexOfVehicle(long vehicle)
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...
RoutingModel(long cPtr, boolean cMemoryOwn)
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_...
boolean hasTemporalTypeRequirements()
RoutingModel.VehicleTypeContainer GetVehicleTypeContainer()
int getNumberOfDisjunctions()
Returns the number of node disjunctions in the model.
long size()
Returns the number of next variables in the model.
void setPickupAndDeliveryPolicyOfAllVehicles(int policy)
Sets the Pickup and delivery policy of all vehicles.
Assignment solve(Assignment assignment)
Solves the current routing model; closes the current model.
IntVar[] vehicleVars()
Returns all vehicle variables of the model, such that VehicleVars(i) is the vehicle variable of the ...
void setVisitType(long index, int type, int type_policy)
void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle)
IntVar applyLocks(long[] locks)
Applies a lock chain to the next search.
String getPrimaryConstrainedDimension()
Get the primary constrained dimension, or an empty string if it is unset.
void addTemporalTypeIncompatibility(int type1, int type2)
int getVehicleClassesCount()
Returns the number of different vehicle classes in the model.
void addLocalSearchOperator(LocalSearchOperator ls_operator)
Adds a local search operator to the set of operators used to solve the vehicle routing problem.
boolean isVehicleUsed(Assignment assignment, int vehicle)
Returns true if the route of 'vehicle' is non empty in 'assignment'.
int RegisterPositiveUnaryTransitCallback(LongUnaryOperator callback)
void setVehicles_per_vehicle_class(SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t value)
void addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name)
IntVar costVar()
Returns the global cost variable which is being minimized.
int getVehicle_class()
static int getKNoDimension()
Constant used to express the "no dimension" index, returned when a dimension name does not correspon...
long computeLowerBound()
Computes a lower bound to the routing problem solving a linear assignment problem.
IntVar VehicleCostsConsideredVar(int vehicle)
Returns the variable specifying whether or not costs are considered for vehicle.
void setFirstSolutionEvaluator(LongBinaryOperator evaluator)
Gets/sets the evaluator used during the search.
int GetVisitTypePolicy(long index)
void setAllowedVehiclesForIndex(int[] vehicles, long index)
Sets the vehicles which can visit a given node.
VehicleClassEntry()
long getArcCostForFirstSolution(long from_index, long to_index)
Returns the cost of the arc in the context of the first solution strategy.
boolean hasTemporalTypeIncompatibilities()
void closeVisitTypes()
This function should be called once all node visit types have been set and prior to adding any incom...
Assignment compactAssignment(Assignment assignment)
Converts the solution in the given assignment to routes for all vehicles.
The class IntVar is a subset of IntExpr.
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...
int[] GetSingleNodesOfType(int type)
Struct used to sort and store vehicles by their type.
VehicleTypeContainer(long cPtr, boolean cMemoryOwn)
boolean costsAreHomogeneousAcrossVehicles()
Whether costs are homogeneous across all vehicles.
void setFixedCostOfVehicle(long cost, int vehicle)
Sets the fixed cost of one vehicle route.
static final int ROUTING_INVALID
Model, model parameters or flags are not valid.
void setFixedCostOfAllVehicles(long cost)
Sets the fixed cost of all vehicle routes.
Assignment readAssignment(String file_name)
Reads an assignment from a file and returns the current solution.
void setSorted_vehicle_classes_per_type(SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t value)
A DecisionBuilder is responsible for creating the search tree.
long getDisjunctionMaxCardinality(int index)
Returns the maximum number of possible active nodes of the node disjunction of index 'index'.
void AddWeightedVariableMinimizedByFinalizer(IntVar var, long cost)
Adds a variable to minimize in the solution finalizer, with a weighted priority: the higher the more...
void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle)
Sets the cost function for a given vehicle route.
int getCostClassesCount()
Returns the number of different cost classes in the model.
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...
RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters)
void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle)
int addDisjunction(long[] indices, long penalty)
Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
boolean hasSameVehicleTypeRequirements()
Returns true iff any same-route (resp.
Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices)
Restores the routes as the current solution.
boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
boolean hasDimension(String dimension_name)
Returns true if a dimension exists for a given dimension name.
void addVariableTargetToFinalizer(IntVar var, long target)
Add a variable to set the closest possible to the target value in the solution finalizer.
int vehicles()
Returns the number of vehicle routes in the model.
boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, 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...
Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
static int getKNoDisjunction()
Constant used to express the "no disjunction" index, returned when a node does not appear in any dis...
long getDisjunctionPenalty(int index)
Returns the penalty of the node disjunction of index 'index'.
Assignment compactAndCheckAssignment(Assignment assignment)
Same as CompactAssignment() but also checks the validity of the final compact solution; if it is not...
boolean writeAssignment(String file_name)
Writes the current solution to a file containing an AssignmentProto.
RoutingModel(RoutingIndexManager index_manager)
Constructor taking an index manager.
RoutingDimension getMutableDimension(String dimension_name)
Returns a dimension from its name.
Definition: Assignment.java:9
void SetMaximumNumberOfActiveVehicles(int max_active_vehicles)
Constrains the maximum number of active vehicles, aka the number of vehicles which do not have an em...
int Type(int vehicle)
static final int ROUTING_NOT_SOLVED
Status of the search.
SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t getVehicles_per_vehicle_class()
int registerTransitCallback(LongBinaryOperator callback)
IntVar activeVar(long index)
Returns the active variable of the node corresponding to index.
int NumTypes()
This class represent a reversible FIFO structure.
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.
int getNumOfSingletonNodes()
Returns the number of non-start/end nodes which do not appear in a pickup/delivery pair.
An Assignment is a variable -> domains mapping, used to report solutions to the user.
Definition: Assignment.java:15
void addVariableMinimizedByFinalizer(IntVar var)
Adds a variable to minimize in the solution finalizer.
IntVar nextVar(long index)
Returns the next variable of the node corresponding to index.
int[] getType_index_of_vehicle()
Assignment solve()
Solves the current routing model; closes the current model.
boolean isVehicleAllowedForIndex(int vehicle, long index)
Returns true if a vehicle is allowed to visit a given node.
static final int PICKUP_AND_DELIVERY_FIFO
Deliveries must be performed in the same order as pickups.
static final int ROUTING_SUCCESS
Problem solved successfully after calling RoutingModel::Solve().
boolean checkLimit()
Returns true if the search limit has been crossed.
static final int PICKUP_AND_DELIVERY_LIFO
Deliveries must be performed in reverse order of pickups.
void setVehicle_class(int value)
void addToAssignment(IntVar var)
Adds an extra variable to the vehicle routing assignment.
DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer)
The next few members are in the public section only for testing purposes.
void addSearchMonitor(SearchMonitor monitor)
Adds a search monitor to the search used to solve the routing model.
void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction)
Same as AddPickupAndDelivery but notifying that the performed node from the disjunction of index 'pi...
long end(int vehicle)
Returns the variable index of the ending node of a vehicle route.
void addHardTypeIncompatibility(int type1, int type2)
Incompatibilities: Two nodes with "hard" incompatible types cannot share the same route at all,...
boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
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 registerUnaryTransitCallback(LongUnaryOperator callback)
Registers 'callback' and returns its index.
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[] getAmortizedQuadraticCostFactorOfVehicles()
Assignment restoreAssignment(Assignment solution)
Restores an assignment as a solution in the routing model and returns the new solution.
IntVar vehicleVar(long index)
Returns the vehicle variable of the node corresponding to index.
A search monitor is a simple set of callbacks to monitor all search events.
boolean 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;...
int status()
Returns the current status of the routing model.
DecisionBuilder makeSelfDependentDimensionFinalizer(RoutingDimension dimension)
MakeSelfDependentDimensionFinalizer is a finalizer for the slacks of a self-dependent dimension.
long[] getDisjunctionIndices(int index)
Returns the variable indices of the nodes in the disjunction of index 'index'.
static final int ROUTING_FAIL_TIMEOUT
Time limit reached before finding a solution with RoutingModel::Solve().
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.
int addDisjunction(long[] indices)
Adds a disjunction constraint on the indices: exactly 'max_cardinality' of the indices are active.
void addIntervalToAssignment(IntervalVar interval)
long getNumberOfDecisionsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Returns statistics on first solution search, number of decisions sent to filters,...
long getArcCostForVehicle(long from_index, long to_index, long vehicle)
Returns the cost of the transit arc between two nodes for a given vehicle.
void assignmentToRoutes(Assignment assignment, long[][] routes)
Converts the solution in the given assignment to routes for all vehicles.
boolean hasHardTypeIncompatibilities()
Returns true if any hard (resp.
static long getKNoPenalty()
Constant used to express a hard constraint instead of a soft penalty.
Assignment mutablePreAssignment()
void setType_index_of_vehicle(int[] value)
long next(Assignment assignment, long index)
Assignment inspection Returns the variable index of the node directly after the node corresponding ...
long getFixed_cost()
long unperformedPenalty(long var_index)
Get the "unperformed" penalty of a node.
SWIGTYPE_p_absl__flat_hash_setT_int_t getTemporalTypeIncompatibilitiesOfType(int type)
boolean AreEmptyRouteCostsConsideredForVehicle(int vehicle)
long getFixedCostOfVehicle(int vehicle)
Returns the route fixed cost taken into account if the route of the vehicle is not empty,...
long getDepot()
Returns the variable index of the first starting or ending node of all routes.
VehicleClassEntry(long cPtr, boolean cMemoryOwn)
Dimensions represent quantities accumulated at nodes along the routes.
int nodes()
Sizes and indices Returns the number of nodes in the model.
boolean hasVehicleWithCostClassIndex(int cost_class_index)
Returns true iff the model contains a vehicle with the given cost_class_index.
void setFixed_cost(long value)
VehicleTypeContainer()
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 ...
Local Search Filters are used for fast neighbor pruning.
RoutingDimension getDimensionOrDie(String dimension_name)
Returns a dimension from its name.
IntVar activeVehicleVar(int vehicle)
Returns the active variable of the vehicle.
void closeModel()
Closes the current routing model; after this method is called, no modification to the model can be d...
boolean addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name)
int GetMaximumNumberOfActiveVehicles()
Returns the maximum number of active vehicles.
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...
long getNumberOfRejectsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Assignment preAssignment()
Returns an assignment used to fix some of the variables of the problem.
int getCostClassIndexOfVehicle(long vehicle)
Get the cost class index of the given vehicle.
int[] getDisjunctionIndices(long index)
Returns the indices of the disjunctions to which an index belongs.
void addSoftSameVehicleConstraint(long[] indices, long cost)
Adds a soft contraint to force a set of variable indices to be on the same vehicle.
static final int TYPE_ADDED_TO_VEHICLE
Set the node visit types and incompatibilities/requirements between the types (see below).
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...
Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Solves the current routing model with the given parameters.
void addPickupAndDelivery(long pickup, long delivery)
Notifies that index1 and index2 form a pair of nodes which should belong to the same route.
Interval variables are often used in scheduling.
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 ...
int getPickupAndDeliveryPolicyOfVehicle(int vehicle)
boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2)
Returns whether the arc from->to1 is more constrained than from->to2, taking into account,...
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...
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 addVariableMaximizedByFinalizer(IntVar var)
Adds a variable to maximize in the solution finalizer (see above for information on the solution fin...
long[] getAmortizedLinearCostFactorOfVehicles()
static final int ROUTING_FAIL
No solution found to the problem after calling RoutingModel::Solve().
int getNumberOfVisitTypes()
boolean 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 ...
static final int PICKUP_AND_DELIVERY_NO_ORDER
Types of precedence policy applied to pickup and delivery pairs.
int registerPositiveTransitCallback(LongBinaryOperator callback)
int VehicleIndex(int index)
Returns the vehicle of the given start/end index, and -1 if the given index is not a vehicle start/e...
Solver solver()
Returns a vector cumul_bounds, for which cumul_bounds[i][j] is a pair containing the minimum and max...
boolean isMatchingModel()
Returns true if a vehicle/node matching problem is detected.
Solver Class A solver represents the main computation engine.
Definition: Solver.java:73
int getNonZeroCostClassesCount()
Ditto, minus the 'always zero', built-in cost class.
int getVisitType(long index)
void setPrimaryConstrainedDimension(String dimension_name)
Set the given dimension as "primary constrained".
long start(int vehicle)
Model inspection.
boolean isEnd(long index)
Returns true if 'index' represents the last node of a route.