Google OR-Tools: ortools/constraint_solver/routing_filters.cc File Reference
#include "ortools/constraint_solver/routing_filters.h"
#include <stddef.h>
#include <algorithm>
#include <cstdint>
#include <deque>
#include <functional>
#include <limits>
#include <memory>
#include <optional>
#include <string>
#include <tuple>
#include <utility>
#include <vector>
#include "absl/algorithm/container.h"
#include "absl/container/btree_set.h"
#include "absl/container/flat_hash_map.h"
#include "absl/container/flat_hash_set.h"
#include "absl/flags/flag.h"
#include "absl/functional/any_invocable.h"
#include "absl/log/check.h"
#include "absl/log/log.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
#include "ortools/base/map_util.h"
#include "ortools/base/strong_vector.h"
#include "ortools/base/types.h"
#include "ortools/constraint_solver/constraint_solver.h"
#include "ortools/constraint_solver/constraint_solveri.h"
#include "ortools/constraint_solver/routing.h"
#include "ortools/constraint_solver/routing_breaks.h"
#include "ortools/constraint_solver/routing_filter_committables.h"
#include "ortools/constraint_solver/routing_lp_scheduling.h"
#include "ortools/constraint_solver/routing_parameters.pb.h"
#include "ortools/constraint_solver/routing_types.h"
#include "ortools/util/bitset.h"
#include "ortools/util/piecewise_linear_function.h"
#include "ortools/util/saturated_arithmetic.h"
#include "ortools/util/sorted_interval_list.h"
Functions
ABSL_FLAG (bool, routing_strong_debug_checks, false, "Run stronger checks in debug; these stronger tests might change " "the complexity of the code in particular.") IntVarLocalSearchFilter * operations_research::MakeRouteConstraintFilter (const RoutingModel &routing_model) Returns a filter tracking route constraints.IntVarLocalSearchFilter * operations_research::MakeMaxActiveVehiclesFilter (const RoutingModel &routing_model) Returns a filter ensuring that max active vehicles constraints are enforced.
IntVarLocalSearchFilter * operations_research::MakeActiveNodeGroupFilter (const RoutingModel &routing_model) IntVarLocalSearchFilter * operations_research::MakeOrderedActivityGroupFilter (const RoutingModel &routing_model) IntVarLocalSearchFilter * operations_research::MakeNodeDisjunctionFilter (const RoutingModel &routing_model, bool filter_cost) Returns a filter ensuring that node disjunction constraints are enforced.
IntVarLocalSearchFilter * operations_research::MakeVehicleAmortizedCostFilter (const RoutingModel &routing_model) Returns a filter computing vehicle amortized costs.
IntVarLocalSearchFilter * operations_research::MakeSameVehicleCostFilter (const RoutingModel &routing_model) Returns a filter computing same vehicle costs.
IntVarLocalSearchFilter * operations_research::MakeTypeRegulationsFilter (const RoutingModel &routing_model) Returns a filter ensuring type regulation constraints are enforced.
bool operations_research::FillDimensionValuesFromRoutingDimension (int path, int64_t capacity, int64_t span_upper_bound, absl::Span< const DimensionValues::Interval > cumul_of_node, absl::Span< const DimensionValues::Interval > slack_of_node, absl::AnyInvocable< int64_t(int64_t, int64_t) const > evaluator, DimensionValues &dimension_values) void operations_research::FillPrePostVisitValues (int path, const DimensionValues &dimension_values, std::optional< absl::AnyInvocable< int64_t(int64_t, int64_t) const > > pre_travel_evaluator, std::optional< absl::AnyInvocable< int64_t(int64_t, int64_t) const > > post_travel_evaluator, PrePostVisitValues &visit_values) bool operations_research::PropagateLightweightVehicleBreaks (int path, DimensionValues &dimension_values, absl::Span< const std::pair< int64_t, int64_t > > interbreaks) IntVarLocalSearchFilter * operations_research::MakePathCumulFilter (const RoutingDimension &dimension, bool propagate_own_objective_value, bool filter_objective_cost, bool may_use_optimizers) Returns a filter handling dimension costs and constraints.
void operations_research::AppendLightWeightDimensionFilters (const PathState *path_state, const std::vector< RoutingDimension * > &dimensions, std::vector< LocalSearchFilterManager::FilterEvent > *filters) void operations_research::AppendDimensionCumulFilters (const std::vector< RoutingDimension * > &dimensions, const RoutingSearchParameters ¶meters, bool filter_objective_cost, bool use_chain_cumul_filter, std::vector< LocalSearchFilterManager::FilterEvent > *filters) LocalSearchFilter * operations_research::MakePickupDeliveryFilter (const RoutingModel &routing_model, const PathState *path_state, absl::Span< const PickupDeliveryPair > pairs, const std::vector< RoutingModel::PickupAndDeliveryPolicy > &vehicle_policies) LocalSearchFilter * operations_research::MakeVehicleVarFilter (const RoutingModel &routing_model, const PathState *path_state) Returns a filter checking that vehicle variable domains are respected.
IntVarLocalSearchFilter * operations_research::MakeCumulBoundsPropagatorFilter (const RoutingDimension &dimension) Returns a filter handling dimension cumul bounds.
IntVarLocalSearchFilter * operations_research::MakeGlobalLPCumulFilter (GlobalDimensionCumulOptimizer *lp_optimizer, GlobalDimensionCumulOptimizer *mp_optimizer, bool filter_objective_cost) Returns a filter checking global linear constraints and costs.
LocalSearchFilter * operations_research::MakeResourceAssignmentFilter (LocalDimensionCumulOptimizer *lp_optimizer, LocalDimensionCumulOptimizer *mp_optimizer, bool propagate_own_objective_value, bool filter_objective_cost) IntVarLocalSearchFilter * operations_research::MakeCPFeasibilityFilter (RoutingModel *routing_model) Returns a filter checking the current solution using CP propagation.
LocalSearchFilter * operations_research::MakePathStateFilter (Solver *solver, std::unique_ptr< PathState > path_state, const std::vector< IntVar * > &nexts) LocalSearchFilter * operations_research::MakeDimensionFilter (Solver *solver, std::unique_ptr< DimensionChecker > checker, absl::string_view dimension_name) LocalSearchFilter * operations_research::MakeLightVehicleBreaksFilter (Solver *solver, std::unique_ptr< LightVehicleBreaksChecker > checker, absl::string_view dimension_name) LocalSearchFilter * operations_research::MakePathEnergyCostFilter (Solver *solver, std::unique_ptr< PathEnergyCostChecker > checker, absl::string_view dimension_name)