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:79
int64_t CumulMax(int index) const
Definition: routing_lp_scheduling.h:72
bool PropagateCumulBounds(const std::function< int64_t(int64_t)> &next_accessor, int64_t cumul_offset)
int64_t CumulMin(int index) const
Definition: routing_lp_scheduling.h:68
CumulBoundsPropagator(const RoutingDimension *dimension)
std::vector< DimensionSchedulingStatus > OptimizeSingleRouteWithResources(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, 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 Optimize(const std::function< int64_t(int64_t)> &next_accessor, 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)
DimensionCumulOptimizerCore(const RoutingDimension *dimension, bool use_precedence_propagator)
const RoutingDimension * dimension() const
Definition: routing_lp_scheduling.h:609
DimensionSchedulingStatus OptimizeAndPack(const std::function< int64_t(int64_t)> &next_accessor, RoutingLinearSolverWrapper *solver, std::vector< int64_t > *cumul_values, std::vector< int64_t > *break_values, std::vector< std::vector< int > > *resource_indices_per_group)
DimensionSchedulingStatus OptimizeSingleRoute(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, 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)
DimensionSchedulingStatus OptimizeAndPackSingleRoute(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RoutingModel::ResourceGroup::Resource *resource, RoutingLinearSolverWrapper *solver, std::vector< int64_t > *cumul_values, std::vector< int64_t > *break_values)
GlobalDimensionCumulOptimizer(const RoutingDimension *dimension, RoutingSearchParameters::SchedulingSolver solver_type)
DimensionSchedulingStatus ComputeCumuls(const std::function< int64_t(int64_t)> &next_accessor, std::vector< int64_t > *optimal_cumuls, std::vector< int64_t > *optimal_breaks, std::vector< std::vector< int > > *optimal_resource_indices_per_group)
DimensionSchedulingStatus ComputeCumulCostWithoutFixedTransits(const std::function< int64_t(int64_t)> &next_accessor, int64_t *optimal_cost_without_transits)
DimensionSchedulingStatus ComputePackedCumuls(const std::function< int64_t(int64_t)> &next_accessor, std::vector< int64_t > *packed_cumuls, std::vector< int64_t > *packed_breaks, std::vector< std::vector< int > > *resource_indices_per_group)
const RoutingDimension * dimension() const
Definition: routing_lp_scheduling.h:793
DimensionSchedulingStatus ComputePackedRouteCumuls(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, const RoutingModel::ResourceGroup::Resource *resource, std::vector< int64_t > *packed_cumuls, std::vector< int64_t > *packed_breaks)
DimensionSchedulingStatus ComputeRouteCumulCost(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, int64_t *optimal_cost)
DimensionSchedulingStatus ComputeRouteCumuls(int vehicle, const std::function< int64_t(int64_t)> &next_accessor, std::vector< int64_t > *optimal_cumuls, std::vector< int64_t > *optimal_breaks)
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:752
std::vector< DimensionSchedulingStatus > ComputeRouteCumulCostsForResourcesWithoutFixedTransits(int vehicle, const std::function< int64_t(int64_t)> &next_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)
ResourceAssignmentOptimizer(const RoutingModel::ResourceGroup *resource_group, LocalDimensionCumulOptimizer *optimizer, LocalDimensionCumulOptimizer *mp_optimizer)
const RoutingDimension *const dimension() const
Definition: routing_lp_scheduling.h:839
bool ComputeAssignmentCostsForVehicle(int v, const std::function< int64_t(int64_t)> &next_accessor, bool optimize_vehicle_costs, std::vector< int64_t > *assignment_costs, std::vector< std::vector< int64_t > > *cumul_values, std::vector< std::vector< int64_t > > *break_values)
int64_t ComputeBestAssignmentCost(const std::vector< std::vector< int64_t > > &primary_vehicle_to_resource_assignment_costs, const std::vector< std::vector< int64_t > > &secondary_vehicle_to_resource_assignment_costs, const std::function< bool(int)> &use_primary_for_vehicle, std::vector< int > *resource_indices) const
void SetCoefficient(int ct_index, int index, double coefficient) override
Definition: routing_lp_scheduling.h:468
int NumVariables() const override
Definition: routing_lp_scheduling.h:460
bool IsCPSATSolver() override
Definition: routing_lp_scheduling.h:475
RoutingCPSatWrapper()
Definition: routing_lp_scheduling.h:388
int CreateNewPositiveVariable() override
Definition: routing_lp_scheduling.h:404
bool SetVariableBounds(int index, int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:411
double GetValue(int index) const override
Definition: routing_lp_scheduling.h:551
int64_t GetObjectiveValue() const override
Definition: routing_lp_scheduling.h:548
DimensionSchedulingStatus Solve(absl::Duration duration_limit) override
Definition: routing_lp_scheduling.h:526
~RoutingCPSatWrapper() override
Definition: routing_lp_scheduling.h:398
void AddMaximumConstraint(int max_var, std::vector< int > vars) override
Definition: routing_lp_scheduling.h:500
void AddProductConstraint(int product_var, std::vector< int > vars) override
Definition: routing_lp_scheduling.h:511
void SetEnforcementLiteral(int ct, int condition) override
Definition: routing_lp_scheduling.h:522
double GetObjectiveCoefficient(int index) const override
Definition: routing_lp_scheduling.h:452
int64_t GetVariableUpperBound(int index) const override
Definition: routing_lp_scheduling.h:438
void AddObjectiveConstraint() override
Definition: routing_lp_scheduling.h:476
void SetVariableDisjointBounds(int index, const std::vector< int64_t > &starts, const std::vector< int64_t > &ends) override
Definition: routing_lp_scheduling.h:422
bool SolutionIsInteger() const override
Definition: routing_lp_scheduling.h:554
int CreateNewConstraint(int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:461
void Clear() override
Definition: routing_lp_scheduling.h:399
void SetObjectiveCoefficient(int index, double coefficient) override
Definition: routing_lp_scheduling.h:442
int64_t GetVariableLowerBound(int index) const override
Definition: routing_lp_scheduling.h:435
void ClearObjective() override
Definition: routing_lp_scheduling.h:457
Dimensions represent quantities accumulated at nodes along the routes.
Definition: routing.h:2590
int NumVariables() const override
Definition: routing_lp_scheduling.h:303
bool IsCPSATSolver() override
Definition: routing_lp_scheduling.h:320
RoutingGlopWrapper(bool is_relaxation, const glop::GlopParameters ¶meters)
Definition: routing_lp_scheduling.h:242
int CreateNewPositiveVariable() override
Definition: routing_lp_scheduling.h:252
bool SetVariableBounds(int index, int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:255
double GetValue(int index) const override
Definition: routing_lp_scheduling.h:370
int64_t GetObjectiveValue() const override
Definition: routing_lp_scheduling.h:367
DimensionSchedulingStatus Solve(absl::Duration duration_limit) override
Definition: routing_lp_scheduling.h:333
void SetCoefficient(int ct, int index, double coefficient) override
Definition: routing_lp_scheduling.h:316
void AddMaximumConstraint(int max_var, std::vector< int > vars) override
Definition: routing_lp_scheduling.h:330
void AddProductConstraint(int product_var, std::vector< int > vars) override
Definition: routing_lp_scheduling.h:331
void SetEnforcementLiteral(int ct, int condition) override
Definition: routing_lp_scheduling.h:332
double GetObjectiveCoefficient(int index) const override
Definition: routing_lp_scheduling.h:295
int64_t GetVariableUpperBound(int index) const override
Definition: routing_lp_scheduling.h:285
void AddObjectiveConstraint() override
Definition: routing_lp_scheduling.h:321
void SetVariableDisjointBounds(int index, const std::vector< int64_t > &starts, const std::vector< int64_t > &ends) override
Definition: routing_lp_scheduling.h:273
bool SolutionIsInteger() const override
Definition: routing_lp_scheduling.h:373
int CreateNewConstraint(int64_t lower_bound, int64_t upper_bound) override
Definition: routing_lp_scheduling.h:306
void Clear() override
Definition: routing_lp_scheduling.h:247
void SetObjectiveCoefficient(int index, double coefficient) override
Definition: routing_lp_scheduling.h:292
int64_t GetVariableLowerBound(int index) const override
Definition: routing_lp_scheduling.h:282
void ClearObjective() override
Definition: routing_lp_scheduling.h:298
virtual void SetCoefficient(int ct, int index, double coefficient)=0
virtual int NumVariables() 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:211
virtual double GetObjectiveCoefficient(int index) const =0
virtual void AddProductConstraint(int product_var, std::vector< int > vars)=0
virtual int CreateNewPositiveVariable()=0
int AddVariable(int64_t lower_bound, int64_t upper_bound)
Definition: routing_lp_scheduling.h:189
virtual bool IsCPSATSolver()=0
virtual void Clear()=0
virtual int64_t GetObjectiveValue() const =0
virtual void AddObjectiveConstraint()=0
virtual void ClearObjective()=0
virtual int CreateNewConstraint(int64_t lower_bound, int64_t upper_bound)=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:198
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 int64_t GetVariableUpperBound(int index) const =0
virtual bool SolutionIsInteger() const =0
virtual ~RoutingLinearSolverWrapper()
Definition: routing_lp_scheduling.h:162
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:419
A ResourceGroup defines a set of available Resources with attributes on one or multiple dimensions.
Definition: routing.h:398
Definition: routing.h:210
Collection of objects used to extend the Constraint Solver library.
Definition: constraint_solver.h:109
DimensionSchedulingStatus
Definition: routing_lp_scheduling.h:150
@ RELAXED_OPTIMAL_ONLY