From 25cae86d6bd76b25afcec688080a76a1332a2bc0 Mon Sep 17 00:00:00 2001 From: Mizux Seiha Date: Tue, 18 Aug 2020 17:16:35 +0200 Subject: [PATCH] routing: Update CVRP sample --- .../doc/vrp_capacity_solution.svg | 58 +++++++++---------- .../constraint_solver/samples/VrpCapacity.cs | 3 + .../samples/VrpCapacity.java | 4 ++ ortools/constraint_solver/samples/cvrp.py | 4 ++ .../constraint_solver/samples/vrp_capacity.cc | 9 ++- .../constraint_solver/samples/vrp_capacity.py | 3 + 6 files changed, 49 insertions(+), 32 deletions(-) diff --git a/ortools/constraint_solver/doc/vrp_capacity_solution.svg b/ortools/constraint_solver/doc/vrp_capacity_solution.svg index 539a6e982d..c95a1e47c6 100644 --- a/ortools/constraint_solver/doc/vrp_capacity_solution.svg +++ b/ortools/constraint_solver/doc/vrp_capacity_solution.svg @@ -41,58 +41,58 @@ width="1022.6666666666666" height="750.6666666666666" viewBox="-55.3333333333333 - - - + + - - - -1 + + + 4 3 - -15 - + +1 + +7 + - - + + 14 16 10 - -2 - - - - + +9 + + - - -7 - -13 + + + 12 11 - - - - + +15 + +13 + + + + - -9 8 + +2 6 diff --git a/ortools/constraint_solver/samples/VrpCapacity.cs b/ortools/constraint_solver/samples/VrpCapacity.cs index cabe3a679e..ccb2253e7b 100644 --- a/ortools/constraint_solver/samples/VrpCapacity.cs +++ b/ortools/constraint_solver/samples/VrpCapacity.cs @@ -16,6 +16,7 @@ using System; using System.Collections.Generic; using Google.OrTools.ConstraintSolver; +using Google.Protobuf.WellKnownTypes; // Duration // [END import] /// @@ -143,6 +144,8 @@ public class VrpCapacity { operations_research_constraint_solver.DefaultRoutingSearchParameters(); searchParameters.FirstSolutionStrategy = FirstSolutionStrategy.Types.Value.PathCheapestArc; + searchParameters.LocalSearchMetaheuristic = LocalSearchMetaheuristic.Types.Value.GuidedLocalSearch; + searchParameters.TimeLimit = new Duration { Seconds = 1 }; // [END parameters] // Solve the problem. diff --git a/ortools/constraint_solver/samples/VrpCapacity.java b/ortools/constraint_solver/samples/VrpCapacity.java index 587875bd30..ed4aa916df 100644 --- a/ortools/constraint_solver/samples/VrpCapacity.java +++ b/ortools/constraint_solver/samples/VrpCapacity.java @@ -16,10 +16,12 @@ package com.google.ortools.constraintsolver.samples; // [START import] import com.google.ortools.constraintsolver.Assignment; import com.google.ortools.constraintsolver.FirstSolutionStrategy; +import com.google.ortools.constraintsolver.LocalSearchMetaheuristic; import com.google.ortools.constraintsolver.RoutingIndexManager; import com.google.ortools.constraintsolver.RoutingModel; import com.google.ortools.constraintsolver.RoutingSearchParameters; import com.google.ortools.constraintsolver.main; +import com.google.protobuf.Duration; import java.util.logging.Logger; // [END import] @@ -145,6 +147,8 @@ public class VrpCapacity { main.defaultRoutingSearchParameters() .toBuilder() .setFirstSolutionStrategy(FirstSolutionStrategy.Value.PATH_CHEAPEST_ARC) + .setLocalSearchMetaheuristic(LocalSearchMetaheuristic.Value.GUIDED_LOCAL_SEARCH) + .setTimeLimit(Duration.newBuilder().setSeconds(1).build()) .build(); // [END parameters] diff --git a/ortools/constraint_solver/samples/cvrp.py b/ortools/constraint_solver/samples/cvrp.py index ba0c34a641..e8dc2fa267 100755 --- a/ortools/constraint_solver/samples/cvrp.py +++ b/ortools/constraint_solver/samples/cvrp.py @@ -186,6 +186,10 @@ def main(): search_parameters = pywrapcp.DefaultRoutingSearchParameters() search_parameters.first_solution_strategy = ( routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC) # pylint: disable=no-member + search_parameters.local_search_metaheuristic = ( + routing_enums_pb2.LocalSearchMetaheuristic.GUIDED_LOCAL_SEARCH) + search_parameters.time_limit.FromSeconds(1) + # Solve the problem. assignment = routing.SolveWithParameters(search_parameters) print_solution(data, routing, manager, assignment) diff --git a/ortools/constraint_solver/samples/vrp_capacity.cc b/ortools/constraint_solver/samples/vrp_capacity.cc index 44d2e727d8..742f0a5246 100644 --- a/ortools/constraint_solver/samples/vrp_capacity.cc +++ b/ortools/constraint_solver/samples/vrp_capacity.cc @@ -161,14 +161,17 @@ void VrpCapacity() { // Setting first solution heuristic. // [START parameters] - RoutingSearchParameters searchParameters = DefaultRoutingSearchParameters(); - searchParameters.set_first_solution_strategy( + RoutingSearchParameters search_parameters = DefaultRoutingSearchParameters(); + search_parameters.set_first_solution_strategy( FirstSolutionStrategy::PATH_CHEAPEST_ARC); + search_parameters.set_local_search_metaheuristic( + LocalSearchMetaheuristic::GUIDED_LOCAL_SEARCH); + search_parameters.mutable_time_limit()->set_seconds(1); // [END parameters] // Solve the problem. // [START solve] - const Assignment* solution = routing.SolveWithParameters(searchParameters); + const Assignment* solution = routing.SolveWithParameters(search_parameters); // [END solve] // Print solution on console. diff --git a/ortools/constraint_solver/samples/vrp_capacity.py b/ortools/constraint_solver/samples/vrp_capacity.py index dd21372efe..da01eab3a9 100644 --- a/ortools/constraint_solver/samples/vrp_capacity.py +++ b/ortools/constraint_solver/samples/vrp_capacity.py @@ -194,6 +194,9 @@ def main(): search_parameters = pywrapcp.DefaultRoutingSearchParameters() search_parameters.first_solution_strategy = ( routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC) + search_parameters.local_search_metaheuristic = ( + routing_enums_pb2.LocalSearchMetaheuristic.GUIDED_LOCAL_SEARCH) + search_parameters.time_limit.FromSeconds(1) # [END parameters] # Solve the problem.