Fix CapacitatedVehicleRoutingProblemWithTimeWindows
This commit is contained in:
@@ -14,8 +14,6 @@
|
||||
// limitations under the License.
|
||||
import com.google.ortools.constraintsolver.Assignment;
|
||||
import com.google.ortools.constraintsolver.FirstSolutionStrategy;
|
||||
import com.google.ortools.constraintsolver.LongLongToLong;
|
||||
import com.google.ortools.constraintsolver.LongToLong;
|
||||
import com.google.ortools.constraintsolver.IntVar;
|
||||
import com.google.ortools.constraintsolver.RoutingDimension;
|
||||
import com.google.ortools.constraintsolver.RoutingIndexManager;
|
||||
@@ -25,6 +23,8 @@ import com.google.ortools.constraintsolver.main;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.function.LongBinaryOperator;
|
||||
import java.util.function.LongUnaryOperator;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
// A pair class
|
||||
@@ -87,10 +87,9 @@ public class CapacitatedVehicleRoutingProblemWithTimeWindows {
|
||||
* @param manager Node Index Manager.
|
||||
* @param costCoefficient The coefficient to apply to the evaluator.
|
||||
*/
|
||||
private LongLongToLong buildManhattanCallback(RoutingIndexManager manager, int costCoefficient) {
|
||||
return new LongLongToLong() {
|
||||
@Override
|
||||
public long run(long firstIndex, long secondIndex) {
|
||||
private LongBinaryOperator buildManhattanCallback(RoutingIndexManager manager, int costCoefficient) {
|
||||
return new LongBinaryOperator() {
|
||||
public long applyAsLong(long firstIndex, long secondIndex) {
|
||||
try {
|
||||
int firstNode = manager.indexToNode(firstIndex);
|
||||
int secondNode = manager.indexToNode(secondIndex);
|
||||
@@ -179,16 +178,15 @@ public class CapacitatedVehicleRoutingProblemWithTimeWindows {
|
||||
|
||||
// Setting up dimensions
|
||||
final int bigNumber = 100000;
|
||||
final LongLongToLong callback = buildManhattanCallback(manager, 1);
|
||||
final LongBinaryOperator callback = buildManhattanCallback(manager, 1);
|
||||
final String timeStr = "time";
|
||||
model.addDimension(
|
||||
model.registerTransitCallback(callback), bigNumber, bigNumber, false, timeStr);
|
||||
RoutingDimension timeDimension = model.getMutableDimension(timeStr);
|
||||
|
||||
LongToLong demandCallback =
|
||||
new LongToLong() {
|
||||
@Override
|
||||
public long run(long index) {
|
||||
LongUnaryOperator demandCallback =
|
||||
new LongUnaryOperator() {
|
||||
public long applyAsLong(long index) {
|
||||
try {
|
||||
int node = manager.indexToNode(index);
|
||||
if (node < numberOfOrders) {
|
||||
@@ -207,7 +205,7 @@ public class CapacitatedVehicleRoutingProblemWithTimeWindows {
|
||||
RoutingDimension capacityDimension = model.getMutableDimension(capacityStr);
|
||||
|
||||
// Setting up vehicles
|
||||
LongLongToLong[] callbacks = new LongLongToLong[numberOfVehicles];
|
||||
LongBinaryOperator[] callbacks = new LongBinaryOperator[numberOfVehicles];
|
||||
for (int vehicle = 0; vehicle < numberOfVehicles; ++vehicle) {
|
||||
final int costCoefficient = vehicleCostCoefficients.get(vehicle);
|
||||
callbacks[vehicle] = buildManhattanCallback(manager, costCoefficient);
|
||||
|
||||
Reference in New Issue
Block a user