14 #ifndef OR_TOOLS_SAT_SCHEDULING_CUTS_H_
15 #define OR_TOOLS_SAT_SCHEDULING_CUTS_H_
44 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
46 const std::optional<AffineExpression>& makespan, Model*
model);
60 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
67 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
73 SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands_helper,
79 const std::vector<IntervalVariable>& x_intervals,
80 const std::vector<IntervalVariable>& y_intervals, Model*
model);
97 const std::vector<IntervalVariable>& x_intervals,
98 const std::vector<IntervalVariable>& y_intervals, Model*
model);
110 SchedulingConstraintHelper* helper,
111 const std::optional<AffineExpression>& makespan, Model*
model);
116 SchedulingConstraintHelper* helper, Model*
model);
122 SchedulingConstraintHelper* helper, Model*
model);
137 IntegerValue
y_min = IntegerValue(0);
138 IntegerValue
y_max = IntegerValue(0);
201 IntegerValue capacity_max,
202 IntegerValue& min_sum_of_end_mins,
203 IntegerValue& min_sum_of_weighted_end_mins,
204 IntegerValue unweighted_threshold,
205 IntegerValue weighted_threshold);
CutGenerator CreateCumulativeEnergyCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, const std::optional< AffineExpression > &makespan, 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 CreateNoOverlap2dEnergyCutGenerator(const std::vector< IntervalVariable > &x_intervals, const std::vector< IntervalVariable > &y_intervals, Model *model)
CutGenerator CreateNoOverlapCompletionTimeCutGenerator(SchedulingConstraintHelper *helper, Model *model)
CutGenerator CreateCumulativePrecedenceCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, Model *model)
CutGenerator CreateCumulativeCompletionTimeCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, Model *model)
CutGenerator CreateNoOverlap2dCompletionTimeCutGenerator(const std::vector< IntervalVariable > &x_intervals, const std::vector< IntervalVariable > &y_intervals, Model *model)
CutGenerator CreateCumulativeTimeTableCutGenerator(SchedulingConstraintHelper *helper, SchedulingDemandHelper *demands_helper, const AffineExpression &capacity, Model *model)
CutGenerator CreateNoOverlapEnergyCutGenerator(SchedulingConstraintHelper *helper, const std::optional< AffineExpression > &makespan, Model *model)
CutGenerator CreateNoOverlapPrecedenceCutGenerator(SchedulingConstraintHelper *helper, Model *model)
Collection of objects used to extend the Constraint Solver library.
std::vector< LiteralValueValue > decomposed_energy
BaseEvent(int t, SchedulingConstraintHelper *x_helper)
std::string DebugString() const
CtEvent(int t, SchedulingConstraintHelper *x_helper)
bool operator<(const PermutableEvent &o) const
PermutableEvent(int i, CtEvent e)