14#ifndef OR_TOOLS_SAT_SCHEDULING_CUTS_H_
15#define OR_TOOLS_SAT_SCHEDULING_CUTS_H_
43 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
44 const AffineExpression& capacity,
45 const std::optional<AffineExpression>& makespan, Model*
model);
59 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
60 const AffineExpression& capacity, Model*
model);
66 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
67 const AffineExpression& capacity, Model*
model);
72 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
73 const AffineExpression& capacity, Model*
model);
85 SchedulingConstraintHelper* helper,
86 const std::optional<AffineExpression>& makespan, Model*
model);
91 SchedulingConstraintHelper* helper, Model*
model);
97 SchedulingConstraintHelper* helper, Model*
model);
177 IntegerValue capacity_max,
178 IntegerValue& min_sum_of_end_mins,
179 IntegerValue& min_sum_of_weighted_end_mins,
180 IntegerValue unweighted_threshold,
181 IntegerValue weighted_threshold);
CutGenerator CreateCumulativeCompletionTimeCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, Model *model)
CutGenerator CreateCumulativePrecedenceCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, Model *model)
CutGenerator CreateCumulativeEnergyCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, const std::optional< AffineExpression > &makespan, Model *model)
CutGenerator CreateCumulativeTimeTableCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, Model *model)
CutGenerator CreateNoOverlapCompletionTimeCutGenerator(SchedulingConstraintHelper *helper, Model *model)
bool ComputeMinSumOfWeightedEndMins(std::vector< PermutableEvent > &events, IntegerValue capacity_max, IntegerValue &min_sum_of_end_mins, IntegerValue &min_sum_of_weighted_end_mins, IntegerValue unweighted_threshold, IntegerValue weighted_threshold)
CutGenerator CreateNoOverlapEnergyCutGenerator(SchedulingConstraintHelper *helper, const std::optional< AffineExpression > &makespan, Model *model)
CutGenerator CreateNoOverlapPrecedenceCutGenerator(SchedulingConstraintHelper *helper, Model *model)
In SWIG mode, we don't want anything besides these top-level includes.
Internal methods and data structures, useful for testing.
std::vector< LiteralValueValue > decomposed_energy
IntegerValue y_size_min
Cache of the bounds on the y direction.
IntegerValue x_start_min
Cache of the intervals bound on the x direction.
BaseEvent(int t, SchedulingConstraintHelper *x_helper)
IntegerValue energy_min
The energy min of this event.
AffineExpression x_end
The lp value of the end of the x interval.
CtEvent(int t, SchedulingConstraintHelper *x_helper)
std::string DebugString() const
PermutableEvent(int i, CtEvent e)
bool operator<(const PermutableEvent &o) const