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
9package 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
13import java.util.function.LongBinaryOperator;
14// Used to wrap RoutingTransitCallback1
15// see https://docs.oracle.com/javase/8/docs/api/java/util/function/LongUnaryOperator.html
16import java.util.function.LongUnaryOperator;
17
18public 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
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
142 return mainJNI.RoutingModel_VehicleTypeContainer_type_index_of_vehicle_get(swigCPtr, this);
143 }
144
145 public void setSorted_vehicle_classes_per_type(SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t value) {
146 mainJNI.RoutingModel_VehicleTypeContainer_sorted_vehicle_classes_per_type_set(swigCPtr, this, SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t.getCPtr(value));
147 }
148
149 public SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t getSorted_vehicle_classes_per_type() {
150 long cPtr = mainJNI.RoutingModel_VehicleTypeContainer_sorted_vehicle_classes_per_type_get(swigCPtr, this);
151 return (cPtr == 0) ? null : new SWIGTYPE_p_std__vectorT_std__setT_operations_research__RoutingModel__VehicleTypeContainer__VehicleClassEntry_t_t(cPtr, false);
152 }
153
154 public void setVehicles_per_vehicle_class(SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t value) {
155 mainJNI.RoutingModel_VehicleTypeContainer_vehicles_per_vehicle_class_set(swigCPtr, this, SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t.getCPtr(value));
156 }
157
158 public SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t getVehicles_per_vehicle_class() {
159 return new SWIGTYPE_p_std__vectorT_std__dequeT_int_t_t(mainJNI.RoutingModel_VehicleTypeContainer_vehicles_per_vehicle_class_get(swigCPtr, this), true);
160 }
161
163 this(mainJNI.new_RoutingModel_VehicleTypeContainer(), true);
164 }
165
166 }
167
171 public static long getKNoPenalty() {
172 return mainJNI.RoutingModel_kNoPenalty_get();
173 }
174
179 public static int getKNoDisjunction() {
180 return mainJNI.RoutingModel_kNoDisjunction_get();
181}
182
187 public static int getKNoDimension() {
188 return mainJNI.RoutingModel_kNoDimension_get();
189}
190
196 public RoutingModel(RoutingIndexManager index_manager) {
197 this(mainJNI.new_RoutingModel__SWIG_0(RoutingIndexManager.getCPtr(index_manager), index_manager), true);
198 }
199
200 public RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters) {
201 this(mainJNI.new_RoutingModel__SWIG_1(RoutingIndexManager.getCPtr(index_manager), index_manager, parameters.toByteArray()), true);
202 }
203
207 public int registerUnaryTransitVector(long[] values) {
208 return mainJNI.RoutingModel_registerUnaryTransitVector(swigCPtr, this, values);
209 }
210
211 public int registerUnaryTransitCallback(LongUnaryOperator callback) {
212 return mainJNI.RoutingModel_registerUnaryTransitCallback(swigCPtr, this, callback);
213 }
214
215 public int registerPositiveUnaryTransitCallback(LongUnaryOperator callback) {
216 return mainJNI.RoutingModel_registerPositiveUnaryTransitCallback(swigCPtr, this, callback);
217 }
218
219 public int registerTransitMatrix(long[][] values) {
220 return mainJNI.RoutingModel_registerTransitMatrix(swigCPtr, this, values);
221 }
222
223 public int registerTransitCallback(LongBinaryOperator callback) {
224 return mainJNI.RoutingModel_registerTransitCallback(swigCPtr, this, callback);
225 }
226
227 public int registerPositiveTransitCallback(LongBinaryOperator callback) {
228 return mainJNI.RoutingModel_registerPositiveTransitCallback(swigCPtr, this, callback);
229 }
230
253 public boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
254 return mainJNI.RoutingModel_addDimension(swigCPtr, this, evaluator_index, slack_max, capacity, fix_start_cumul_to_zero, name);
255 }
256
257 public boolean addDimensionWithVehicleTransits(int[] evaluator_indices, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name) {
258 return mainJNI.RoutingModel_addDimensionWithVehicleTransits(swigCPtr, this, evaluator_indices, slack_max, capacity, fix_start_cumul_to_zero, name);
259 }
260
261 public boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
262 return mainJNI.RoutingModel_addDimensionWithVehicleCapacity(swigCPtr, this, evaluator_index, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
263 }
264
265 public boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name) {
266 return mainJNI.RoutingModel_addDimensionWithVehicleTransitAndCapacity(swigCPtr, this, evaluator_indices, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
267 }
268
279 public IntBoolPair addConstantDimensionWithSlack(long value, long capacity, long slack_max, boolean fix_start_cumul_to_zero, String name) {
280 return new IntBoolPair(mainJNI.RoutingModel_addConstantDimensionWithSlack(swigCPtr, this, value, capacity, slack_max, fix_start_cumul_to_zero, name), true);
281 }
282
283 public IntBoolPair addConstantDimension(long value, long capacity, boolean fix_start_cumul_to_zero, String name) {
284 return new IntBoolPair(mainJNI.RoutingModel_addConstantDimension(swigCPtr, this, value, capacity, fix_start_cumul_to_zero, name), true);
285 }
286
298 public IntBoolPair addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
299 return new IntBoolPair(mainJNI.RoutingModel_addVectorDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name), true);
300 }
301
313 public IntBoolPair addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name) {
314 return new IntBoolPair(mainJNI.RoutingModel_addMatrixDimension(swigCPtr, this, values, capacity, fix_start_cumul_to_zero, name), true);
315 }
316
328 public Constraint MakePathSpansAndTotalSlacks(RoutingDimension dimension, IntVar[] spans, IntVar[] total_slacks) {
329 long cPtr = mainJNI.RoutingModel_MakePathSpansAndTotalSlacks(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, spans, total_slacks);
330 return (cPtr == 0) ? null : new Constraint(cPtr, false);
331 }
332
333 public SWIGTYPE_p_std__vectorT_std__unique_ptrT_operations_research__GlobalDimensionCumulOptimizer_t_t GetGlobalDimensionCumulMPOptimizers() {
334 return new SWIGTYPE_p_std__vectorT_std__unique_ptrT_operations_research__GlobalDimensionCumulOptimizer_t_t(mainJNI.RoutingModel_GetGlobalDimensionCumulMPOptimizers(swigCPtr, this), false);
335 }
336
337 public SWIGTYPE_p_operations_research__GlobalDimensionCumulOptimizer GetMutableGlobalCumulMPOptimizer(RoutingDimension dimension) {
338 long cPtr = mainJNI.RoutingModel_GetMutableGlobalCumulMPOptimizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
339 return (cPtr == 0) ? null : new SWIGTYPE_p_operations_research__GlobalDimensionCumulOptimizer(cPtr, false);
340 }
341
345 public boolean hasDimension(String dimension_name) {
346 return mainJNI.RoutingModel_hasDimension(swigCPtr, this, dimension_name);
347 }
348
352 public RoutingDimension getDimensionOrDie(String dimension_name) {
353 return new RoutingDimension(mainJNI.RoutingModel_getDimensionOrDie(swigCPtr, this, dimension_name), false);
354 }
355
360 public RoutingDimension getMutableDimension(String dimension_name) {
361 long cPtr = mainJNI.RoutingModel_getMutableDimension(swigCPtr, this, dimension_name);
362 return (cPtr == 0) ? null : new RoutingDimension(cPtr, false);
363 }
364
371 public void setPrimaryConstrainedDimension(String dimension_name) {
372 mainJNI.RoutingModel_setPrimaryConstrainedDimension(swigCPtr, this, dimension_name);
373 }
374
379 return mainJNI.RoutingModel_getPrimaryConstrainedDimension(swigCPtr, this);
380 }
381
387 return mainJNI.RoutingModel_GetDimensionResourceGroupIndices(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
388}
389
408 public int addDisjunction(long[] indices, long penalty, long max_cardinality) {
409 return mainJNI.RoutingModel_addDisjunction__SWIG_0(swigCPtr, this, indices, penalty, max_cardinality);
410}
411
430 public int addDisjunction(long[] indices, long penalty) {
431 return mainJNI.RoutingModel_addDisjunction__SWIG_1(swigCPtr, this, indices, penalty);
432}
433
452 public int addDisjunction(long[] indices) {
453 return mainJNI.RoutingModel_addDisjunction__SWIG_2(swigCPtr, this, indices);
454}
455
459 public int[] getDisjunctionIndices(long index) {
460 return mainJNI.RoutingModel_getDisjunctionIndices(swigCPtr, this, index);
461}
462
467 public long[] GetDisjunctionNodeIndices(int index) {
468 return mainJNI.RoutingModel_GetDisjunctionNodeIndices(swigCPtr, this, index);
469}
470
474 public long getDisjunctionPenalty(int index) {
475 return mainJNI.RoutingModel_getDisjunctionPenalty(swigCPtr, this, index);
476 }
477
482 public long getDisjunctionMaxCardinality(int index) {
483 return mainJNI.RoutingModel_getDisjunctionMaxCardinality(swigCPtr, this, index);
484 }
485
490 return mainJNI.RoutingModel_getNumberOfDisjunctions(swigCPtr, this);
491 }
492
501 mainJNI.RoutingModel_ignoreDisjunctionsAlreadyForcedToZero(swigCPtr, this);
502 }
503
509 public void addSoftSameVehicleConstraint(long[] indices, long cost) {
510 mainJNI.RoutingModel_addSoftSameVehicleConstraint(swigCPtr, this, indices, cost);
511 }
512
519 public void setAllowedVehiclesForIndex(int[] vehicles, long index) {
520 mainJNI.RoutingModel_setAllowedVehiclesForIndex(swigCPtr, this, vehicles, index);
521 }
522
526 public boolean isVehicleAllowedForIndex(int vehicle, long index) {
527 return mainJNI.RoutingModel_isVehicleAllowedForIndex(swigCPtr, this, vehicle, index);
528 }
529
545 public void addPickupAndDelivery(long pickup, long delivery) {
546 mainJNI.RoutingModel_addPickupAndDelivery(swigCPtr, this, pickup, delivery);
547 }
548
554 public void addPickupAndDeliverySets(int pickup_disjunction, int delivery_disjunction) {
555 mainJNI.RoutingModel_addPickupAndDeliverySets(swigCPtr, this, pickup_disjunction, delivery_disjunction);
556 }
557
563 mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfAllVehicles(swigCPtr, this, policy);
564 }
565
566 public void setPickupAndDeliveryPolicyOfVehicle(int policy, int vehicle) {
567 mainJNI.RoutingModel_setPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, policy, vehicle);
568 }
569
570 public int getPickupAndDeliveryPolicyOfVehicle(int vehicle) {
571 return mainJNI.RoutingModel_getPickupAndDeliveryPolicyOfVehicle(swigCPtr, this, vehicle);
572 }
573
579 return mainJNI.RoutingModel_getNumOfSingletonNodes(swigCPtr, this);
580 }
581
582 public void setVisitType(long index, int type, int type_policy) {
583 mainJNI.RoutingModel_setVisitType(swigCPtr, this, index, type, type_policy);
584 }
585
586 public int getVisitType(long index) {
587 return mainJNI.RoutingModel_getVisitType(swigCPtr, this, index);
588 }
589
590 public int[] GetSingleNodesOfType(int type) {
591 return mainJNI.RoutingModel_GetSingleNodesOfType(swigCPtr, this, type);
592}
593
594 public int[] GetPairIndicesOfType(int type) {
595 return mainJNI.RoutingModel_GetPairIndicesOfType(swigCPtr, this, type);
596}
597
598 public int GetVisitTypePolicy(long index) {
599 return mainJNI.RoutingModel_GetVisitTypePolicy(swigCPtr, this, index);
600 }
601
607 public void closeVisitTypes() {
608 mainJNI.RoutingModel_closeVisitTypes(swigCPtr, this);
609 }
610
612 return mainJNI.RoutingModel_getNumberOfVisitTypes(swigCPtr, this);
613 }
614
621 public void addHardTypeIncompatibility(int type1, int type2) {
622 mainJNI.RoutingModel_addHardTypeIncompatibility(swigCPtr, this, type1, type2);
623 }
624
625 public void addTemporalTypeIncompatibility(int type1, int type2) {
626 mainJNI.RoutingModel_addTemporalTypeIncompatibility(swigCPtr, this, type1, type2);
627 }
628
629 public SWIGTYPE_p_absl__flat_hash_setT_int_t getTemporalTypeIncompatibilitiesOfType(int type) {
630 return new SWIGTYPE_p_absl__flat_hash_setT_int_t(mainJNI.RoutingModel_getTemporalTypeIncompatibilitiesOfType(swigCPtr, this, type), false);
631 }
632
638 return mainJNI.RoutingModel_hasHardTypeIncompatibilities(swigCPtr, this);
639 }
640
642 return mainJNI.RoutingModel_hasTemporalTypeIncompatibilities(swigCPtr, this);
643 }
644
651 public void addRequiredTypeAlternativesWhenAddingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
652 mainJNI.RoutingModel_addRequiredTypeAlternativesWhenAddingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
653 }
654
662 public void addRequiredTypeAlternativesWhenRemovingType(int dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t required_type_alternatives) {
663 mainJNI.RoutingModel_addRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, dependent_type, SWIGTYPE_p_absl__flat_hash_setT_int_t.getCPtr(required_type_alternatives));
664 }
665
669 public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenAddingType(int type) {
670 return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenAddingType(swigCPtr, this, type), false);
671 }
672
676 public SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenRemovingType(int type) {
677 return new SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t(mainJNI.RoutingModel_GetRequiredTypeAlternativesWhenRemovingType(swigCPtr, this, type), false);
678 }
679
685 return mainJNI.RoutingModel_hasSameVehicleTypeRequirements(swigCPtr, this);
686 }
687
689 return mainJNI.RoutingModel_hasTemporalTypeRequirements(swigCPtr, this);
690 }
691
698 public long unperformedPenalty(long var_index) {
699 return mainJNI.RoutingModel_unperformedPenalty(swigCPtr, this, var_index);
700 }
701
707 public long unperformedPenaltyOrValue(long default_value, long var_index) {
708 return mainJNI.RoutingModel_unperformedPenaltyOrValue(swigCPtr, this, default_value, var_index);
709 }
710
716 public long getDepot() {
717 return mainJNI.RoutingModel_getDepot(swigCPtr, this);
718 }
719
726 public void SetMaximumNumberOfActiveVehicles(int max_active_vehicles) {
727 mainJNI.RoutingModel_SetMaximumNumberOfActiveVehicles(swigCPtr, this, max_active_vehicles);
728 }
729
734 return mainJNI.RoutingModel_GetMaximumNumberOfActiveVehicles(swigCPtr, this);
735 }
736
742 public void setArcCostEvaluatorOfAllVehicles(int evaluator_index) {
743 mainJNI.RoutingModel_setArcCostEvaluatorOfAllVehicles(swigCPtr, this, evaluator_index);
744 }
745
749 public void setArcCostEvaluatorOfVehicle(int evaluator_index, int vehicle) {
750 mainJNI.RoutingModel_setArcCostEvaluatorOfVehicle(swigCPtr, this, evaluator_index, vehicle);
751 }
752
757 public void setFixedCostOfAllVehicles(long cost) {
758 mainJNI.RoutingModel_setFixedCostOfAllVehicles(swigCPtr, this, cost);
759 }
760
764 public void setFixedCostOfVehicle(long cost, int vehicle) {
765 mainJNI.RoutingModel_setFixedCostOfVehicle(swigCPtr, this, cost, vehicle);
766 }
767
773 public long getFixedCostOfVehicle(int vehicle) {
774 return mainJNI.RoutingModel_getFixedCostOfVehicle(swigCPtr, this, vehicle);
775 }
776
794 public void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor) {
795 mainJNI.RoutingModel_setAmortizedCostFactorsOfAllVehicles(swigCPtr, this, linear_cost_factor, quadratic_cost_factor);
796 }
797
801 public void setAmortizedCostFactorsOfVehicle(long linear_cost_factor, long quadratic_cost_factor, int vehicle) {
802 mainJNI.RoutingModel_setAmortizedCostFactorsOfVehicle(swigCPtr, this, linear_cost_factor, quadratic_cost_factor, vehicle);
803 }
804
806 return mainJNI.RoutingModel_getAmortizedLinearCostFactorOfVehicles(swigCPtr, this);
807}
808
810 return mainJNI.RoutingModel_getAmortizedQuadraticCostFactorOfVehicles(swigCPtr, this);
811}
812
813 public void ConsiderEmptyRouteCostsForVehicle(boolean consider_costs, int vehicle) {
814 mainJNI.RoutingModel_ConsiderEmptyRouteCostsForVehicle(swigCPtr, this, consider_costs, vehicle);
815 }
816
817 public boolean AreEmptyRouteCostsConsideredForVehicle(int vehicle) {
818 return mainJNI.RoutingModel_AreEmptyRouteCostsConsideredForVehicle(swigCPtr, this, vehicle);
819 }
820
826 public void setFirstSolutionEvaluator(LongBinaryOperator evaluator) {
827 mainJNI.RoutingModel_setFirstSolutionEvaluator(swigCPtr, this, evaluator);
828 }
829
835 mainJNI.RoutingModel_addLocalSearchOperator(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator);
836 }
837
841 public void addSearchMonitor(SearchMonitor monitor) {
842 mainJNI.RoutingModel_addSearchMonitor(swigCPtr, this, SearchMonitor.getCPtr(monitor), monitor);
843 }
844
850 public void addAtSolutionCallback(Runnable callback) {
851 mainJNI.RoutingModel_addAtSolutionCallback(swigCPtr, this, callback);
852 }
853
861 mainJNI.RoutingModel_addVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
862 }
863
869 mainJNI.RoutingModel_addVariableMaximizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var);
870 }
871
877 mainJNI.RoutingModel_AddWeightedVariableMinimizedByFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, cost);
878 }
879
884 public void addVariableTargetToFinalizer(IntVar var, long target) {
885 mainJNI.RoutingModel_addVariableTargetToFinalizer(swigCPtr, this, IntVar.getCPtr(var), var, target);
886 }
887
896 public void closeModel() {
897 mainJNI.RoutingModel_closeModel(swigCPtr, this);
898 }
899
904 public void closeModelWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
905 mainJNI.RoutingModel_closeModelWithParameters(swigCPtr, this, search_parameters.toByteArray());
906 }
907
916 public Assignment solve(Assignment assignment) {
917 long cPtr = mainJNI.RoutingModel_solve__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
918 return (cPtr == 0) ? null : new Assignment(cPtr, false);
919 }
920
929 public Assignment solve() {
930 long cPtr = mainJNI.RoutingModel_solve__SWIG_1(swigCPtr, this);
931 return (cPtr == 0) ? null : new Assignment(cPtr, false);
932 }
933
943 public Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
944 long cPtr = mainJNI.RoutingModel_solveWithParameters(swigCPtr, this, search_parameters.toByteArray());
945 return (cPtr == 0) ? null : new Assignment(cPtr, false);
946 }
947
952 public Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
953 long cPtr = mainJNI.RoutingModel_solveFromAssignmentWithParameters(swigCPtr, this, Assignment.getCPtr(assignment), assignment, search_parameters.toByteArray());
954 return (cPtr == 0) ? null : new Assignment(cPtr, false);
955 }
956
961 public Assignment SolveFromAssignmentsWithParameters(SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t assignments, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters, SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t solutions) {
962 long cPtr = mainJNI.RoutingModel_SolveFromAssignmentsWithParameters__SWIG_0(swigCPtr, this, SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t.getCPtr(assignments), search_parameters.toByteArray(), SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t.getCPtr(solutions));
963 return (cPtr == 0) ? null : new Assignment(cPtr, false);
964 }
965
970 public Assignment SolveFromAssignmentsWithParameters(SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t assignments, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
971 long cPtr = mainJNI.RoutingModel_SolveFromAssignmentsWithParameters__SWIG_1(swigCPtr, this, SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t.getCPtr(assignments), search_parameters.toByteArray());
972 return (cPtr == 0) ? null : new Assignment(cPtr, false);
973 }
974
982 public void setAssignmentFromOtherModelAssignment(Assignment target_assignment, RoutingModel source_model, Assignment source_assignment) {
983 mainJNI.RoutingModel_setAssignmentFromOtherModelAssignment(swigCPtr, this, Assignment.getCPtr(target_assignment), target_assignment, RoutingModel.getCPtr(source_model), source_model, Assignment.getCPtr(source_assignment), source_assignment);
984 }
985
993 public long computeLowerBound() {
994 return mainJNI.RoutingModel_computeLowerBound(swigCPtr, this);
995 }
996
1000 public int status() {
1001 return mainJNI.RoutingModel_status(swigCPtr, this);
1002 }
1003
1014 public IntVar applyLocks(long[] locks) {
1015 long cPtr = mainJNI.RoutingModel_applyLocks(swigCPtr, this, locks);
1016 return (cPtr == 0) ? null : new IntVar(cPtr, false);
1017 }
1018
1029 public boolean applyLocksToAllVehicles(long[][] locks, boolean close_routes) {
1030 return mainJNI.RoutingModel_applyLocksToAllVehicles(swigCPtr, this, locks, close_routes);
1031 }
1032
1040 long cPtr = mainJNI.RoutingModel_preAssignment(swigCPtr, this);
1041 return (cPtr == 0) ? null : new Assignment(cPtr, false);
1042 }
1043
1045 long cPtr = mainJNI.RoutingModel_mutablePreAssignment(swigCPtr, this);
1046 return (cPtr == 0) ? null : new Assignment(cPtr, false);
1047 }
1048
1054 public boolean writeAssignment(String file_name) {
1055 return mainJNI.RoutingModel_writeAssignment(swigCPtr, this, file_name);
1056 }
1057
1063 public Assignment readAssignment(String file_name) {
1064 long cPtr = mainJNI.RoutingModel_readAssignment(swigCPtr, this, file_name);
1065 return (cPtr == 0) ? null : new Assignment(cPtr, false);
1066 }
1067
1073 long cPtr = mainJNI.RoutingModel_restoreAssignment(swigCPtr, this, Assignment.getCPtr(solution), solution);
1074 return (cPtr == 0) ? null : new Assignment(cPtr, false);
1075 }
1076
1084 public Assignment readAssignmentFromRoutes(long[][] routes, boolean ignore_inactive_indices) {
1085 long cPtr = mainJNI.RoutingModel_readAssignmentFromRoutes(swigCPtr, this, routes, ignore_inactive_indices);
1086 return (cPtr == 0) ? null : new Assignment(cPtr, false);
1087 }
1088
1107 public boolean routesToAssignment(long[][] routes, boolean ignore_inactive_indices, boolean close_routes, Assignment assignment) {
1108 return mainJNI.RoutingModel_routesToAssignment(swigCPtr, this, routes, ignore_inactive_indices, close_routes, Assignment.getCPtr(assignment), assignment);
1109 }
1110
1116 public void assignmentToRoutes(Assignment assignment, long[][] routes) {
1117 mainJNI.RoutingModel_assignmentToRoutes(swigCPtr, this, Assignment.getCPtr(assignment), assignment, routes);
1118 }
1119
1144 long cPtr = mainJNI.RoutingModel_compactAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1145 return (cPtr == 0) ? null : new Assignment(cPtr, false);
1146 }
1147
1154 long cPtr = mainJNI.RoutingModel_compactAndCheckAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
1155 return (cPtr == 0) ? null : new Assignment(cPtr, false);
1156 }
1157
1161 public void addToAssignment(IntVar var) {
1162 mainJNI.RoutingModel_addToAssignment(swigCPtr, this, IntVar.getCPtr(var), var);
1163 }
1164
1165 public void addIntervalToAssignment(IntervalVar interval) {
1166 mainJNI.RoutingModel_addIntervalToAssignment(swigCPtr, this, IntervalVar.getCPtr(interval), interval);
1167 }
1168
1177 mainJNI.RoutingModel_addLocalSearchFilter(swigCPtr, this, LocalSearchFilter.getCPtr(filter), filter);
1178 }
1179
1184 public long start(int vehicle) {
1185 return mainJNI.RoutingModel_start(swigCPtr, this, vehicle);
1186 }
1187
1191 public long end(int vehicle) {
1192 return mainJNI.RoutingModel_end(swigCPtr, this, vehicle);
1193 }
1194
1198 public boolean isStart(long index) {
1199 return mainJNI.RoutingModel_isStart(swigCPtr, this, index);
1200 }
1201
1205 public boolean isEnd(long index) {
1206 return mainJNI.RoutingModel_isEnd(swigCPtr, this, index);
1207 }
1208
1213 public int VehicleIndex(long index) {
1214 return mainJNI.RoutingModel_VehicleIndex(swigCPtr, this, index);
1215 }
1216
1222 public long next(Assignment assignment, long index) {
1223 return mainJNI.RoutingModel_next(swigCPtr, this, Assignment.getCPtr(assignment), assignment, index);
1224 }
1225
1229 public boolean isVehicleUsed(Assignment assignment, int vehicle) {
1230 return mainJNI.RoutingModel_isVehicleUsed(swigCPtr, this, Assignment.getCPtr(assignment), assignment, vehicle);
1231 }
1232
1237 public IntVar[] nexts() {
1238 return mainJNI.RoutingModel_nexts(swigCPtr, this);
1239}
1240
1245 public IntVar[] vehicleVars() {
1246 return mainJNI.RoutingModel_vehicleVars(swigCPtr, this);
1247}
1248
1253 public IntVar nextVar(long index) {
1254 long cPtr = mainJNI.RoutingModel_nextVar(swigCPtr, this, index);
1255 return (cPtr == 0) ? null : new IntVar(cPtr, false);
1256 }
1257
1261 public IntVar activeVar(long index) {
1262 long cPtr = mainJNI.RoutingModel_activeVar(swigCPtr, this, index);
1263 return (cPtr == 0) ? null : new IntVar(cPtr, false);
1264 }
1265
1270 public IntVar activeVehicleVar(int vehicle) {
1271 long cPtr = mainJNI.RoutingModel_activeVehicleVar(swigCPtr, this, vehicle);
1272 return (cPtr == 0) ? null : new IntVar(cPtr, false);
1273 }
1274
1279 public IntVar VehicleCostsConsideredVar(int vehicle) {
1280 long cPtr = mainJNI.RoutingModel_VehicleCostsConsideredVar(swigCPtr, this, vehicle);
1281 return (cPtr == 0) ? null : new IntVar(cPtr, false);
1282 }
1283
1288 public IntVar vehicleVar(long index) {
1289 long cPtr = mainJNI.RoutingModel_vehicleVar(swigCPtr, this, index);
1290 return (cPtr == 0) ? null : new IntVar(cPtr, false);
1291 }
1292
1296 public IntVar costVar() {
1297 long cPtr = mainJNI.RoutingModel_costVar(swigCPtr, this);
1298 return (cPtr == 0) ? null : new IntVar(cPtr, false);
1299 }
1300
1305 public long getArcCostForVehicle(long from_index, long to_index, long vehicle) {
1306 return mainJNI.RoutingModel_getArcCostForVehicle(swigCPtr, this, from_index, to_index, vehicle);
1307 }
1308
1313 return mainJNI.RoutingModel_costsAreHomogeneousAcrossVehicles(swigCPtr, this);
1314 }
1315
1320 public long getHomogeneousCost(long from_index, long to_index) {
1321 return mainJNI.RoutingModel_getHomogeneousCost(swigCPtr, this, from_index, to_index);
1322 }
1323
1328 public long getArcCostForFirstSolution(long from_index, long to_index) {
1329 return mainJNI.RoutingModel_getArcCostForFirstSolution(swigCPtr, this, from_index, to_index);
1330 }
1331
1340 public long getArcCostForClass(long from_index, long to_index, long cost_class_index) {
1341 return mainJNI.RoutingModel_getArcCostForClass(swigCPtr, this, from_index, to_index, cost_class_index);
1342 }
1343
1347 public int getCostClassIndexOfVehicle(long vehicle) {
1348 return mainJNI.RoutingModel_getCostClassIndexOfVehicle(swigCPtr, this, vehicle);
1349}
1350
1355 public boolean hasVehicleWithCostClassIndex(int cost_class_index) {
1356 return mainJNI.RoutingModel_hasVehicleWithCostClassIndex(swigCPtr, this, cost_class_index);
1357 }
1358
1362 public int getCostClassesCount() {
1363 return mainJNI.RoutingModel_getCostClassesCount(swigCPtr, this);
1364 }
1365
1370 return mainJNI.RoutingModel_getNonZeroCostClassesCount(swigCPtr, this);
1371 }
1372
1373 public int getVehicleClassIndexOfVehicle(long vehicle) {
1374 return mainJNI.RoutingModel_getVehicleClassIndexOfVehicle(swigCPtr, this, vehicle);
1375}
1376
1381 public int GetVehicleOfClass(int vehicle_class) {
1382 return mainJNI.RoutingModel_GetVehicleOfClass(swigCPtr, this, vehicle_class);
1383 }
1384
1389 return mainJNI.RoutingModel_getVehicleClassesCount(swigCPtr, this);
1390 }
1391
1395 public int[] getSameVehicleIndicesOfIndex(int node) {
1396 return mainJNI.RoutingModel_getSameVehicleIndicesOfIndex(swigCPtr, this, node);
1397}
1398
1400 return new RoutingModel.VehicleTypeContainer(mainJNI.RoutingModel_GetVehicleTypeContainer(swigCPtr, this), false);
1401 }
1402
1423 public boolean arcIsMoreConstrainedThanArc(long from, long to1, long to2) {
1424 return mainJNI.RoutingModel_arcIsMoreConstrainedThanArc(swigCPtr, this, from, to1, to2);
1425 }
1426
1433 public String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print) {
1434 return mainJNI.RoutingModel_debugOutputAssignment(swigCPtr, this, Assignment.getCPtr(solution_assignment), solution_assignment, dimension_to_print);
1435 }
1436
1446 public Solver solver() {
1447 long cPtr = mainJNI.RoutingModel_solver(swigCPtr, this);
1448 return (cPtr == 0) ? null : new Solver(cPtr, false);
1449 }
1450
1454 public boolean checkLimit() {
1455 return mainJNI.RoutingModel_checkLimit(swigCPtr, this);
1456 }
1457
1462 public int nodes() {
1463 return mainJNI.RoutingModel_nodes(swigCPtr, this);
1464 }
1465
1469 public int vehicles() {
1470 return mainJNI.RoutingModel_vehicles(swigCPtr, this);
1471 }
1472
1476 public long size() {
1477 return mainJNI.RoutingModel_size(swigCPtr, this);
1478 }
1479
1484 public long getNumberOfDecisionsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
1485 return mainJNI.RoutingModel_getNumberOfDecisionsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1486 }
1487
1488 public long getNumberOfRejectsInFirstSolution(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters) {
1489 return mainJNI.RoutingModel_getNumberOfRejectsInFirstSolution(swigCPtr, this, search_parameters.toByteArray());
1490 }
1491
1495 public boolean isMatchingModel() {
1496 return mainJNI.RoutingModel_isMatchingModel(swigCPtr, this);
1497 }
1498
1513 public DecisionBuilder makeGuidedSlackFinalizer(RoutingDimension dimension, LongUnaryOperator initializer) {
1514 long cPtr = mainJNI.RoutingModel_makeGuidedSlackFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension, initializer);
1515 return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1516 }
1517
1534 long cPtr = mainJNI.RoutingModel_makeSelfDependentDimensionFinalizer(swigCPtr, this, RoutingDimension.getCPtr(dimension), dimension);
1535 return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
1536 }
1537
1538 // Status
1546 public final static int ROUTING_NOT_SOLVED = mainJNI.RoutingModel_ROUTING_NOT_SOLVED_get();
1550 public final static int ROUTING_SUCCESS = mainJNI.RoutingModel_ROUTING_SUCCESS_get();
1554 public final static int ROUTING_FAIL = mainJNI.RoutingModel_ROUTING_FAIL_get();
1558 public final static int ROUTING_FAIL_TIMEOUT = mainJNI.RoutingModel_ROUTING_FAIL_TIMEOUT_get();
1562 public final static int ROUTING_INVALID = mainJNI.RoutingModel_ROUTING_INVALID_get();
1563
1564 // PickupAndDeliveryPolicy
1572 public final static int PICKUP_AND_DELIVERY_NO_ORDER = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_NO_ORDER_get();
1576 public final static int PICKUP_AND_DELIVERY_LIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_LIFO_get();
1580 public final static int PICKUP_AND_DELIVERY_FIFO = mainJNI.RoutingModel_PICKUP_AND_DELIVERY_FIFO_get();
1581
1582 // VisitTypePolicy
1600 public final static int TYPE_ADDED_TO_VEHICLE = mainJNI.RoutingModel_TYPE_ADDED_TO_VEHICLE_get();
1607 public final static int ADDED_TYPE_REMOVED_FROM_VEHICLE = mainJNI.RoutingModel_ADDED_TYPE_REMOVED_FROM_VEHICLE_get();
1612 public final static int TYPE_ON_VEHICLE_UP_TO_VISIT = mainJNI.RoutingModel_TYPE_ON_VEHICLE_UP_TO_VISIT_get();
1619 public final static int TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED = mainJNI.RoutingModel_TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED_get();
1620
1621}
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.
Classes to which this template function can be applied to as of 04/2014.
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)
Assignment SolveFromAssignmentsWithParameters(SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t assignments, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Same as above but will try all assignments in order as first solutions until one succeeds.
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,...
void addVariableMinimizedByFinalizer(IntVar var)
Adds a variable to minimize in the solution finalizer.
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[] nexts()
Returns all next variables of the model, such that Nexts(i) is the next variable of the node corresp...
IntVar vehicleVar(long index)
Returns the vehicle variable of the node corresponding to index.
static final int TYPE_ADDED_TO_VEHICLE
Set the node visit types and incompatibilities/requirements between the types (see below).
IntVar VehicleCostsConsideredVar(int vehicle)
Returns the variable specifying whether or not costs are considered for vehicle.
Assignment preAssignment()
Returns an assignment used to fix some of the variables of the problem.
Assignment solveWithParameters(com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Solves the current routing model with the given parameters.
boolean addDimensionWithVehicleTransitAndCapacity(int[] evaluator_indices, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
int[] getSameVehicleIndicesOfIndex(int node)
Returns variable indices of nodes constrained to be on the same route.
int registerUnaryTransitVector(long[] values)
Registers 'callback' and returns its index.
static final int ADDED_TYPE_REMOVED_FROM_VEHICLE
When visited, one instance of type 'T' previously added to the route (TYPE_ADDED_TO_VEHICLE),...
Assignment readAssignment(String file_name)
Reads an assignment from a file and returns the current solution.
int[] GetDimensionResourceGroupIndices(RoutingDimension dimension)
Returns the indices of resource groups for this dimension.
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.
int GetVehicleOfClass(int vehicle_class)
Returns a vehicle of the given vehicle class, and -1 if there are no vehicles for this class.
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.
Assignment SolveFromAssignmentsWithParameters(SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t assignments, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters, SWIGTYPE_p_std__vectorT_operations_research__Assignment_const_p_t solutions)
Same as above but will try all assignments in order as first solutions until one succeeds.
int registerTransitCallback(LongBinaryOperator callback)
SWIGTYPE_p_std__vectorT_std__unique_ptrT_operations_research__GlobalDimensionCumulOptimizer_t_t GetGlobalDimensionCumulMPOptimizers()
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.
void addTemporalTypeIncompatibility(int type1, int type2)
Assignment solve()
Solves the current routing model; closes the current model.
void ignoreDisjunctionsAlreadyForcedToZero()
SPECIAL: Makes the solver ignore all the disjunctions whose active variables are all trivially zero ...
void setAllowedVehiclesForIndex(int[] vehicles, long index)
Sets the vehicles which can visit a given node.
void setVisitType(long index, int type, int type_policy)
void addAtSolutionCallback(Runnable callback)
Adds a callback called each time a solution is found during the search.
static final int PICKUP_AND_DELIVERY_FIFO
Deliveries must be performed in the same order as pickups.
long computeLowerBound()
Computes a lower bound to the routing problem solving a linear assignment problem.
void assignmentToRoutes(Assignment assignment, long[][] routes)
Converts the solution in the given assignment to routes for all vehicles.
SWIGTYPE_p_std__vectorT_absl__flat_hash_setT_int_t_t GetRequiredTypeAlternativesWhenRemovingType(int type)
Returns the set of requirement alternatives when removing the given type.
void addSoftSameVehicleConstraint(long[] indices, long cost)
Adds a soft constraint to force a set of variable indices to be on the same vehicle.
IntBoolPair addMatrixDimension(long[][] values, long capacity, boolean fix_start_cumul_to_zero, String name)
Creates a dimension where the transit variable is constrained to be equal to 'values[i][next(i)]' fo...
String debugOutputAssignment(Assignment solution_assignment, String dimension_to_print)
Print some debugging information about an assignment, including the feasible intervals of the CumulV...
boolean costsAreHomogeneousAcrossVehicles()
Whether costs are homogeneous across all vehicles.
IntVar applyLocks(long[] locks)
Applies a lock chain to the next search.
long getFixedCostOfVehicle(int vehicle)
Returns the route fixed cost taken into account if the route of the vehicle is not empty,...
static final int ROUTING_FAIL
No solution found to the problem after calling RoutingModel::Solve().
boolean addDimensionWithVehicleCapacity(int evaluator_index, long slack_max, long[] vehicle_capacities, boolean fix_start_cumul_to_zero, String name)
long getHomogeneousCost(long from_index, long to_index)
Returns the cost of the segment between two nodes supposing all vehicle costs are the same (returns ...
boolean checkLimit()
Returns true if the search limit has been crossed.
static final int ROUTING_SUCCESS
Problem solved successfully after calling RoutingModel::Solve().
long getDepot()
Returns the variable index of the first starting or ending node of all routes.
void setAmortizedCostFactorsOfAllVehicles(long linear_cost_factor, long quadratic_cost_factor)
The following methods set the linear and quadratic cost factors of vehicles (must be positive values...
int registerPositiveUnaryTransitCallback(LongUnaryOperator callback)
long[] GetDisjunctionNodeIndices(int index)
Returns the variable indices of the nodes in the disjunction of index 'index'.
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,...
SWIGTYPE_p_operations_research__GlobalDimensionCumulOptimizer GetMutableGlobalCumulMPOptimizer(RoutingDimension dimension)
void setFixedCostOfVehicle(long cost, int vehicle)
Sets the fixed cost of one vehicle route.
IntVar nextVar(long index)
Returns the next variable of the node corresponding to index.
boolean addDimension(int evaluator_index, long slack_max, long capacity, boolean fix_start_cumul_to_zero, String name)
Model creation Methods to add dimensions to routes; dimensions represent quantities accumulated at ...
RoutingModel.VehicleTypeContainer GetVehicleTypeContainer()
IntBoolPair addVectorDimension(long[] values, long capacity, boolean fix_start_cumul_to_zero, String name)
Creates a dimension where the transit variable is constrained to be equal to 'values[i]' for node i;...
Assignment compactAssignment(Assignment assignment)
Converts the solution in the given assignment to routes for all vehicles.
int registerUnaryTransitCallback(LongUnaryOperator callback)
boolean hasVehicleWithCostClassIndex(int cost_class_index)
Returns true iff the model contains a vehicle with the given cost_class_index.
RoutingModel(RoutingIndexManager index_manager, com.google.ortools.constraintsolver.RoutingModelParameters parameters)
void addPickupAndDelivery(long pickup, long delivery)
Notifies that index1 and index2 form a pair of nodes which should belong to the same route.
int[] getDisjunctionIndices(long index)
Returns the indices of the disjunctions to which an index belongs.
Assignment solveFromAssignmentWithParameters(Assignment assignment, com.google.ortools.constraintsolver.RoutingSearchParameters search_parameters)
Same as above, except that if assignment is not null, it will be used as the initial solution.
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.
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