C++ Reference
C++ Reference: Routing
routing_lp_scheduling.h
Go to the documentation of this file.
const RoutingDimension & dimension() const
Definition: routing_lp_scheduling.h:80
bool PropagateCumulBounds(const std::function< int64_t(int64_t)> &next_accessor, int64_t cumul_offset, const std::vector< RoutingModel::RouteDimensionTravelInfo > *dimension_travel_info_per_route=nullptr)
int64_t CumulMax(int index) const
Definition: routing_lp_scheduling.h:73
int64_t CumulMin(int index) const
Definition: routing_lp_scheduling.h:69
CumulBoundsPropagator(const RoutingDimension *dimension)
DimensionSchedulingStatus OptimizeSingleRoute(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RouteDimensionTravelInfo &dimension_travel_info, RoutingLinearSolverWrapper *solver, std::vector< int64_t > *cumul_values, std::vector< int64_t > *break_values, int64_t *cost, int64_t *transit_cost, bool clear_lp=true)
DimensionCumulOptimizerCore(const RoutingDimension *dimension, bool use_precedence_propagator)
const RoutingDimension * dimension() const
Definition: routing_lp_scheduling.h:700
DimensionSchedulingStatus ComputeSingleRouteSolutionCost(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RouteDimensionTravelInfo &dimension_travel_info, RoutingLinearSolverWrapper *solver, const std::vector< int64_t > &solution_cumul_values, const std::vector< int64_t > &solution_break_values, int64_t *cost, int64_t *transit_cost, int64_t *cost_offset=nullptr, bool reuse_previous_model_if_possible=true, bool clear_lp=false, bool clear_solution_constraints=true, absl::Duration *const solve_duration=nullptr)
DimensionSchedulingStatus Optimize(const std::function< int64_t(int64_t)> &next_accessor, const std::vector< RouteDimensionTravelInfo > &dimension_travel_info_per_route, RoutingLinearSolverWrapper *solver, std::vector< int64_t > *cumul_values, std::vector< int64_t > *break_values, std::vector< std::vector< int >> *resource_indices_per_group, int64_t *cost, int64_t *transit_cost, bool clear_lp=true)
std::vector< DimensionSchedulingStatus > OptimizeSingleRouteWithResources(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const std::function< int64_t(int64_t, int64_t)> &transit_accessor, const RouteDimensionTravelInfo &dimension_travel_info, const std::vector< RoutingModel::ResourceGroup::Resource > &resources, const std::vector< int > &resource_indices, bool optimize_vehicle_costs, RoutingLinearSolverWrapper *solver, std::vector< int64_t > *costs_without_transits, std::vector< std::vector< int64_t >> *cumul_values, std::vector< std::vector< int64_t >> *break_values, bool clear_lp=true)
DimensionSchedulingStatus OptimizeAndPackSingleRoute(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RouteDimensionTravelInfo &dimension_travel_info, const RoutingModel::ResourceGroup::Resource *resource, RoutingLinearSolverWrapper *solver, std::vector< int64_t > *cumul_values, std::vector< int64_t > *break_values)
DimensionSchedulingStatus OptimizeAndPack(const std::function< int64_t(int64_t)> &next_accessor, const std::vector< RouteDimensionTravelInfo > &dimension_travel_info_per_route, RoutingLinearSolverWrapper *solver, std::vector< int64_t > *cumul_values, std::vector< int64_t > *break_values, std::vector< std::vector< int >> *resource_indices_per_group)
GlobalDimensionCumulOptimizer(const RoutingDimension *dimension, RoutingSearchParameters::SchedulingSolver solver_type)
DimensionSchedulingStatus ComputePackedCumuls(const std::function< int64_t(int64_t)> &next_accessor, const std::vector< RoutingModel::RouteDimensionTravelInfo > &dimension_travel_info_per_route, std::vector< int64_t > *packed_cumuls, std::vector< int64_t > *packed_breaks, std::vector< std::vector< int >> *resource_indices_per_group)
DimensionSchedulingStatus ComputeCumulCostWithoutFixedTransits(const std::function< int64_t(int64_t)> &next_accessor, int64_t *optimal_cost_without_transits)
DimensionSchedulingStatus ComputeCumuls(const std::function< int64_t(int64_t)> &next_accessor, const std::vector< RoutingModel::RouteDimensionTravelInfo > &dimension_travel_info_per_route, std::vector< int64_t > *optimal_cumuls, std::vector< int64_t > *optimal_breaks, std::vector< std::vector< int >> *optimal_resource_indices_per_group)
const RoutingDimension * dimension() const
Definition: routing_lp_scheduling.h:933
DimensionSchedulingStatus ComputeRouteCumulCost(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, int64_t *optimal_cost)
DimensionSchedulingStatus ComputeRouteCumulCostWithoutFixedTransits(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, int64_t *optimal_cost_without_transits)
LocalDimensionCumulOptimizer(const RoutingDimension *dimension, RoutingSearchParameters::SchedulingSolver solver_type)
const RoutingDimension * dimension() const
Definition: routing_lp_scheduling.h:888
DimensionSchedulingStatus ComputeRouteSolutionCost(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RoutingModel::RouteDimensionTravelInfo &dimension_travel_info, const std::vector< int64_t > &solution_cumul_values, const std::vector< int64_t > &solution_break_values, int64_t *solution_cost, int64_t *cost_offset=nullptr, bool reuse_previous_model_if_possible=false, bool clear_lp=true, absl::Duration *solve_duration=nullptr)
DimensionSchedulingStatus ComputePackedRouteCumuls(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RoutingModel::RouteDimensionTravelInfo &dimension_travel_info, const RoutingModel::ResourceGroup::Resource *resource, std::vector< int64_t > *packed_cumuls, std::vector< int64_t > *packed_breaks)
std::vector< DimensionSchedulingStatus > ComputeRouteCumulCostsForResourcesWithoutFixedTransits(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const std::function< int64_t(int64_t, int64_t)> &transit_accessor, const std::vector< RoutingModel::ResourceGroup::Resource > &resources, const std::vector< int > &resource_indices, bool optimize_vehicle_costs, std::vector< int64_t > *optimal_costs_without_transits, std::vector< std::vector< int64_t >> *optimal_cumuls, std::vector< std::vector< int64_t >> *optimal_breaks)
DimensionSchedulingStatus ComputeRouteCumulsAndCost(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RoutingModel::RouteDimensionTravelInfo &dimension_travel_info, std::vector< int64_t > *optimal_cumuls, std::vector< int64_t > *optimal_breaks, int64_t *optimal_cost)
DimensionSchedulingStatus ComputeRouteCumuls(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RoutingModel::RouteDimensionTravelInfo &dimension_travel_info, std::vector< int64_t > *optimal_cumuls, std::vector< int64_t > *optimal_breaks)
void SetCoefficient(int ct_index, int index, double coefficient) override
Definition: routing_lp_scheduling.h:536
int NumVariables() const override
Definition: routing_lp_scheduling.h:528
bool IsCPSATSolver() override
Definition: routing_lp_scheduling.h:543
RoutingCPSatWrapper()
Definition: routing_lp_scheduling.h:446
int CreateNewPositiveVariable() override
Definition: routing_lp_scheduling.h:465
bool SetVariableBounds(int index, int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:475
double GetValue(int index) const override
Definition: routing_lp_scheduling.h:608
int64_t GetObjectiveValue() const override
Definition: routing_lp_scheduling.h:605
DimensionSchedulingStatus Solve(absl::Duration duration_limit) override
Definition: routing_lp_scheduling.h:583
~RoutingCPSatWrapper() override
Definition: routing_lp_scheduling.h:459
void AddMaximumConstraint(int max_var, std::vector< int > vars) override
Definition: routing_lp_scheduling.h:557
void AddProductConstraint(int product_var, std::vector< int > vars) override
Definition: routing_lp_scheduling.h:568
std::string PrintModel() const override
void SetEnforcementLiteral(int ct, int condition) override
Definition: routing_lp_scheduling.h:579
double GetObjectiveCoefficient(int index) const override
Definition: routing_lp_scheduling.h:520
int64_t GetVariableUpperBound(int index) const override
Definition: routing_lp_scheduling.h:506
void AddObjectiveConstraint() override
Definition: routing_lp_scheduling.h:544
void SetVariableDisjointBounds(int index, const std::vector< int64_t > &starts, const std::vector< int64_t > &ends) override
Definition: routing_lp_scheduling.h:486
bool SolutionIsInteger() const override
Definition: routing_lp_scheduling.h:611
int CreateNewConstraint(int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:529
bool ModelIsEmpty() const override
Definition: routing_lp_scheduling.h:618
void SetVariableName(int index, absl::string_view name) override
Definition: routing_lp_scheduling.h:472
void Clear() override
Definition: routing_lp_scheduling.h:460
void SetParameters(const std::string &) override
Definition: routing_lp_scheduling.h:614
void SetObjectiveCoefficient(int index, double coefficient) override
Definition: routing_lp_scheduling.h:510
int64_t GetVariableLowerBound(int index) const override
Definition: routing_lp_scheduling.h:503
void ClearObjective() override
Definition: routing_lp_scheduling.h:525
Dimensions represent quantities accumulated at nodes along the routes.
Definition: routing.h:2750
int NumVariables() const override
Definition: routing_lp_scheduling.h:328
bool IsCPSATSolver() override
Definition: routing_lp_scheduling.h:348
void AddProductConstraint(int, std::vector< int >) override
Definition: routing_lp_scheduling.h:377
RoutingGlopWrapper(bool is_relaxation, const glop::GlopParameters ¶meters)
Definition: routing_lp_scheduling.h:264
int CreateNewPositiveVariable() override
Definition: routing_lp_scheduling.h:274
bool SetVariableBounds(int index, int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:280
double GetValue(int index) const override
Definition: routing_lp_scheduling.h:417
void SetEnforcementLiteral(int, int) override
Definition: routing_lp_scheduling.h:379
int64_t GetObjectiveValue() const override
Definition: routing_lp_scheduling.h:414
DimensionSchedulingStatus Solve(absl::Duration duration_limit) override
Definition: routing_lp_scheduling.h:380
void SetCoefficient(int ct, int index, double coefficient) override
Definition: routing_lp_scheduling.h:341
std::string PrintModel() const override
Definition: routing_lp_scheduling.h:434
double GetObjectiveCoefficient(int index) const override
Definition: routing_lp_scheduling.h:320
int64_t GetVariableUpperBound(int index) const override
Definition: routing_lp_scheduling.h:310
void AddObjectiveConstraint() override
Definition: routing_lp_scheduling.h:349
void SetVariableDisjointBounds(int index, const std::vector< int64_t > &starts, const std::vector< int64_t > &ends) override
Definition: routing_lp_scheduling.h:298
bool SolutionIsInteger() const override
Definition: routing_lp_scheduling.h:420
int CreateNewConstraint(int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:331
void SetVariableName(int index, absl::string_view name) override
Definition: routing_lp_scheduling.h:277
void Clear() override
Definition: routing_lp_scheduling.h:269
void SetParameters(const std::string ¶meters) override
Definition: routing_lp_scheduling.h:425
void AddMaximumConstraint(int, std::vector< int >) override
Definition: routing_lp_scheduling.h:375
void SetObjectiveCoefficient(int index, double coefficient) override
Definition: routing_lp_scheduling.h:317
int64_t GetVariableLowerBound(int index) const override
Definition: routing_lp_scheduling.h:307
void ClearObjective() override
Definition: routing_lp_scheduling.h:323
virtual void SetCoefficient(int ct, int index, double coefficient)=0
virtual int NumVariables() const =0
virtual void SetParameters(const std::string ¶meters)=0
virtual bool ModelIsEmpty() const
Definition: routing_lp_scheduling.h:196
virtual double GetObjectiveCoefficient(int index) const =0
virtual void AddProductConstraint(int product_var, std::vector< int > vars)=0
virtual int CreateNewPositiveVariable()=0
int AddLinearConstraint(int64_t lower_bound, int64_t upper_bound, const std::vector< std::pair< int, double >> &variable_coeffs)
Definition: routing_lp_scheduling.h:211
int AddVariable(int64_t lower_bound, int64_t upper_bound)
Definition: routing_lp_scheduling.h:202
virtual bool IsCPSATSolver()=0
virtual void Clear()=0
virtual int64_t GetObjectiveValue() const =0
int AddReifiedLinearConstraint(int64_t lower_bound, int64_t upper_bound, const std::vector< std::pair< int, double >> &weighted_variables)
Definition: routing_lp_scheduling.h:224
virtual void SetVariableName(int index, absl::string_view name)=0
virtual void AddObjectiveConstraint()=0
virtual void ClearObjective()=0
virtual int CreateNewConstraint(int64_t lower_bound, int64_t upper_bound)=0
virtual double GetValue(int index) const =0
virtual DimensionSchedulingStatus Solve(absl::Duration duration_limit)=0
virtual void SetVariableDisjointBounds(int index, const std::vector< int64_t > &starts, const std::vector< int64_t > &ends)=0
virtual bool SetVariableBounds(int index, int64_t lower_bound, int64_t upper_bound)=0
virtual void SetObjectiveCoefficient(int index, double coefficient)=0
virtual void SetEnforcementLiteral(int ct, int condition)=0
virtual std::string PrintModel() const =0
virtual int64_t GetVariableUpperBound(int index) const =0
virtual bool SolutionIsInteger() const =0
virtual ~RoutingLinearSolverWrapper()
Definition: routing_lp_scheduling.h:165
virtual int64_t GetVariableLowerBound(int index) const =0
virtual void AddMaximumConstraint(int max_var, std::vector< int > vars)=0
A Resource sets attributes (costs/constraints) for a set of dimensions.
Definition: routing.h:458
A ResourceGroup defines a set of available Resources with attributes on one or multiple dimensions.
Definition: routing.h:437
Collection of objects used to extend the Constraint Solver library.
Definition: constraint_solver.h:109
int64_t ComputeConvexPiecewiseLinearFormulationValue(const RoutingModel::RouteDimensionTravelInfo::TransitionInfo::PiecewiseLinearFormulation &pwl, int64_t x, double delta=0)
std::vector< SlopeAndYIntercept > PiecewiseLinearFormulationToSlopeAndYIntercept(const RoutingModel::RouteDimensionTravelInfo::TransitionInfo::PiecewiseLinearFormulation &pwl_function, int index_start=0, int index_end=-1)
PiecewiseEvaluationStatus ComputePiecewiseLinearFormulationValue(const RoutingModel::RouteDimensionTravelInfo::TransitionInfo::PiecewiseLinearFormulation &pwl, int64_t x, int64_t *value, double delta=0)
PiecewiseEvaluationStatus
Definition: routing_lp_scheduling.h:988
@ SMALLER_THAN_LOWER_BOUND
@ LARGER_THAN_UPPER_BOUND
DimensionSchedulingStatus
Definition: routing_lp_scheduling.h:153
@ RELAXED_OPTIMAL_ONLY
std::vector< bool > SlopeAndYInterceptToConvexityRegions(const std::vector< SlopeAndYIntercept > &slope_and_y_intercept)
bool ComputeVehicleToResourcesAssignmentCosts(int v, const RoutingModel::ResourceGroup &resource_group, const std::function< int64_t(int64_t)> &next_accessor, const std::function< int64_t(int64_t, int64_t)> &transit_accessor, bool optimize_vehicle_costs, LocalDimensionCumulOptimizer *lp_optimizer, LocalDimensionCumulOptimizer *mp_optimizer, std::vector< int64_t > *assignment_costs, std::vector< std::vector< int64_t >> *cumul_values, std::vector< std::vector< int64_t >> *break_values)
int64_t ComputeBestVehicleToResourceAssignment(std::vector< int > vehicles, int num_resources, std::function< const std::vector< int64_t > *(int)> vehicle_to_resource_assignment_costs, std::vector< int > *resource_indices)
Contains the information for a single transition on the route.
Definition: routing.h:1347
Contains the information needed by the solver to optimize a dimension's cumuls with travel-start depe...
Definition: routing.h:1345
double y_intercept
Definition: routing_lp_scheduling.h:1016
friend ::std::ostream & operator<<(::std::ostream &os, const SlopeAndYIntercept &it)
Definition: routing_lp_scheduling.h:1018