![]() |
Google OR-Tools v9.14
a fast and portable software suite for combinatorial optimization
|
Definition at line 365 of file routing_search.h.
#include <routing_search.h>
Classes | |
| struct | EvaluatorCache |
| struct | Seed |
| struct | SeedQueue |
| clang-format off More... | |
| struct | StartEndValue |
Public Member Functions | |
| CheapestInsertionFilteredHeuristic (RoutingModel *model, std::function< bool()> stop_search, std::function< int64_t(int64_t, int64_t, int64_t)> evaluator, std::function< int64_t(int64_t)> penalty_evaluator, LocalSearchFilterManager *filter_manager) | |
| Takes ownership of evaluator. | |
| ~CheapestInsertionFilteredHeuristic () override=default | |
| Public Member Functions inherited from operations_research::RoutingFilteredHeuristic | |
| RoutingFilteredHeuristic (RoutingModel *model, std::function< bool()> stop_search, LocalSearchFilterManager *filter_manager) | |
| RoutingFilteredHeuristic. | |
| ~RoutingFilteredHeuristic () override=default | |
| Assignment * | BuildSolutionFromRoutes (const std::function< int64_t(int64_t)> &next_accessor) |
| Builds a solution starting from the routes formed by the next accessor. | |
| RoutingModel * | model () const |
| int | GetStartChainEnd (int vehicle) const |
| Returns the end of the start chain of vehicle,. | |
| int | GetEndChainStart (int vehicle) const |
| Returns the start of the end chain of vehicle,. | |
| void | MakeDisjunctionNodesUnperformed (int64_t node) |
| void | AddUnassignedNodesToEmptyVehicles () |
| Adds all unassigned nodes to empty vehicles. | |
| bool | MakeUnassignedNodesUnperformed () |
| Make all unassigned nodes unperformed, always returns true. | |
| void | MakePartiallyPerformedPairsUnperformed () |
| Public Member Functions inherited from operations_research::IntVarFilteredHeuristic | |
| IntVarFilteredHeuristic (Solver *solver, const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, LocalSearchFilterManager *filter_manager) | |
| — First solution heuristics — | |
| virtual | ~IntVarFilteredHeuristic ()=default |
| Assignment * | BuildSolution () |
| int64_t | number_of_decisions () const |
| int64_t | number_of_rejects () const |
| virtual std::string | DebugString () const |
Protected Member Functions | |
| std::vector< std::vector< StartEndValue > > | ComputeStartEndDistanceForVehicles (absl::Span< const int > vehicles) |
| void | InitializeSeedQueue (std::vector< std::vector< StartEndValue > > *start_end_distances_per_node, SeedQueue *sq) |
| void | AddSeedNodeToQueue (int node, std::vector< StartEndValue > *start_end_distances, SeedQueue *sq) |
| clang-format on | |
| void | InsertBetween (int64_t node, int64_t predecessor, int64_t successor, int vehicle=-1) |
| int64_t | GetEvaluatorInsertionCostForNodeAtPosition (int64_t node_to_insert, int64_t insert_after, int64_t insert_before, int vehicle) const |
| std::optional< int64_t > | GetInsertionCostForNodeAtPosition (int64_t node_to_insert, int64_t insert_after, int64_t insert_before, int vehicle, int hint_weight=0) |
| std::optional< int64_t > | GetInsertionCostForPairAtPositions (int64_t pickup_to_insert, int64_t pickup_insert_after, int64_t delivery_to_insert, int64_t delivery_insert_after, int vehicle, int hint_weight=0) |
| int64_t | GetUnperformedValue (int64_t node_to_insert) const |
| bool | HasHintedNext (int node) const |
| bool | HasHintedPrev (int node) const |
| bool | IsHint (int node, int64_t next) const |
| Protected Member Functions inherited from operations_research::RoutingFilteredHeuristic | |
| bool | StopSearch () override |
| Returns true if the search must be stopped. | |
| virtual void | SetVehicleIndex (int64_t, int) |
| virtual void | ResetVehicleIndices () |
| bool | VehicleIsEmpty (int vehicle) const |
| void | SetNext (int64_t node, int64_t next, int vehicle) |
| Protected Member Functions inherited from operations_research::IntVarFilteredHeuristic | |
| void | ResetSolution () |
| Resets the data members for a new solution. | |
| virtual void | Initialize () |
| Initialize the heuristic; called before starting to build a new solution. | |
| virtual bool | BuildSolutionInternal ()=0 |
| Virtual method to redefine how to build a solution. | |
| std::optional< int64_t > | Evaluate (bool commit, bool ignore_upper_bound=false, bool update_upper_bound=true) |
| void | SetValue (int64_t index, int64_t value) |
| const std::vector< int > & | delta_indices () const |
| Returns the indices of the nodes currently in the insertion delta. | |
| int64_t | Value (int64_t index) const |
| bool | Contains (int64_t index) const |
| Returns true if the variable of index 'index' is in the current solution. | |
| IntVar * | Var (int64_t index) const |
| Returns the variable of index 'index'. | |
| int64_t | SecondaryVarIndex (int64_t index) const |
| Returns the index of a secondary var. | |
| bool | HasSecondaryVars () const |
| Returns true if there are secondary variables. | |
| bool | IsSecondaryVar (int64_t index) const |
| Returns true if 'index' is a secondary variable index. | |
| void | SynchronizeFilters () |
| Synchronizes filters with an assignment (the current solution). | |
Protected Attributes | |
| std::function< int64_t(int64_t, int64_t, int64_t)> | evaluator_ |
| std::vector< EvaluatorCache > | evaluator_cache_ |
| std::function< int64_t(int64_t)> | penalty_evaluator_ |
| std::vector< int > | hint_next_values_ |
| std::vector< int > | hint_prev_values_ |
| Protected Attributes inherited from operations_research::IntVarFilteredHeuristic | |
| Assignment *const | assignment_ |
| operations_research::CheapestInsertionFilteredHeuristic::CheapestInsertionFilteredHeuristic | ( | RoutingModel * | model, |
| std::function< bool()> | stop_search, | ||
| std::function< int64_t(int64_t, int64_t, int64_t)> | evaluator, | ||
| std::function< int64_t(int64_t)> | penalty_evaluator, | ||
| LocalSearchFilterManager * | filter_manager ) |
Takes ownership of evaluator.
CheapestInsertionFilteredHeuristic.
Definition at line 749 of file routing_search.cc.
|
overridedefault |
|
protected |
clang-format on
Adds a Seed corresponding to the given 'node' to sq.priority_queue, based on the last entry in its 'start_end_distances' (from which it's deleted).
Put the best StartEndValue for this node in the priority queue.
Definition at line 831 of file routing_search.cc.
|
protected |
Computes and returns the distance of each uninserted node to every vehicle in 'vehicles' as a std::vector<std::vector<StartEndValue>>, start_end_distances_per_node. For each node, start_end_distances_per_node[node] is sorted in decreasing order.
Sort the distances for the node to all start/ends of available vehicles in decreasing order.
Definition at line 796 of file routing_search.cc.
|
protected |
Returns the cost of inserting 'node_to_insert' between 'insert_after' and 'insert_before' on the 'vehicle' when the evaluator_ is defined, i.e. evaluator_(insert_after-->node) + evaluator_(node-->insert_before)
Definition at line 879 of file routing_search.cc.
|
protected |
Same as above, except that when the evaluator_ is not defined, the cost is determined by Evaluate-ing the insertion of the node through the filter manager, returning std::nullopt when the insertion is not feasible.
Definition at line 895 of file routing_search.cc.
|
protected |
Same as above for the insertion of a pickup/delivery pair at the given positions.
Definition at line 908 of file routing_search.cc.
|
protected |
Returns the cost of unperforming node 'node_to_insert'. Returns kint64max if penalty callback is null or if the node cannot be unperformed.
Definition at line 933 of file routing_search.cc.
|
inlineprotected |
Definition at line 476 of file routing_search.h.
|
inlineprotected |
Definition at line 480 of file routing_search.h.
|
protected |
Initializes sq->priority_queue by inserting the best entry corresponding to each node, i.e. the last element of start_end_distances_per_node[node], which is supposed to be sorted in decreasing order.
Definition at line 852 of file routing_search.cc.
|
protected |
Inserts 'node' just after 'predecessor', and just before 'successor' on the route of 'vehicle', resulting in the following subsequence: predecessor -> node -> successor. If 'node' is part of a disjunction, other nodes of the disjunction are made unperformed.
Definition at line 864 of file routing_search.cc.
|
inlineprotected |
Definition at line 484 of file routing_search.h.
|
protected |
Definition at line 488 of file routing_search.h.
|
mutableprotected |
Definition at line 490 of file routing_search.h.
|
protected |
Definition at line 492 of file routing_search.h.
|
protected |
Definition at line 493 of file routing_search.h.
|
protected |
Definition at line 491 of file routing_search.h.