C++ Reference: class SchedulingConstraintHelper
Note: This documentation is automatically generated.
Helper class shared by the propagators that manage a given list of tasks.One of the main advantage of this class is that it allows to share the vectors of tasks sorted by various criteria between propagator for a faster code.
Method | |
---|---|
AddAbsenceReason | Return type: Arguments: |
AddEndMaxReason | Return type: Arguments: |
AddEndMinReason | Return type: Arguments: |
AddEnergyAfterReason | Return type: Arguments: |
AddEnergyMinInIntervalReason | Return type: Arguments: |
AddPresenceReason | Return type: Arguments: |
AddReasonForBeingBefore | Return type: Arguments: Adds the reason why task "before" must be before task "after". That is StartMax(before) < EndMin(after). |
AddSizeMaxReason | Return type: Arguments: |
AddSizeMinReason | Return type: Arguments: |
AddSizeMinReason | Return type: Arguments: |
AddStartMaxReason | Return type: Arguments: |
AddStartMinReason | Return type: Arguments: |
ClearOtherHelper | Return type: |
ClearReason | Return type: Functions to clear and then set the current reason. |
DecreaseEndMax | Return type: Arguments: |
EndIsFixed | Return type: Arguments: |
EndMax | Return type: Arguments: |
EndMin | Return type: Arguments: |
Ends | Return type: |
GetEnergyProfile | Return type: |
GetMinOverlap | Return type: Arguments: Return the minimum overlap of interval i with the time window [start..end]. Note: this is different from the mandatory part of an interval. |
ImportOtherReasons | Return type: Arguments: Adds to this helper reason all the explanation of the other helper. This checks that other_helper_ is null. This is used in the 2D energetic reasoning in the diffn constraint. |
IncreaseEndMin | Return type: Arguments: |
IncreaseStartMin | Return type: Arguments: Push something using the current reason. Note that IncreaseStartMin() will also increase the end-min, and DecreaseEndMax() will also decrease the start-max. Important: IncreaseStartMin() and DecreaseEndMax() can be called on an optional interval whose presence is still unknown and push a bound conditionned on its presence. The functions will do the correct thing depending on whether or not the start_min/end_max are optional variables whose presence implies the interval presence. |
IncrementalPropagate | Return type: Arguments: |
InPropagationLoop | Return type: TODO(user): Change the propagation loop code so that we don't stop pushing in the middle of the propagation as more advanced propagator do not handle this correctly. |
IsAbsent | Return type: Arguments: |
IsOptional | Return type: Arguments: Returns true if the corresponding fact is known for sure. A normal task is always present. For optional task for which the presence is still unknown, both of these function will return false. |
IsPresent | Return type: Arguments: |
MutableIntegerReason | Return type: |
MutableLiteralReason | Return type: It is also possible to directly manipulates the underlying reason vectors that will be used when pushing something. |
NumTasks | Return type: Returns the number of task. |
PresenceLiteral | Return type: Arguments: |
Propagate | Return type: This is a propagator so we can "cache" all the intervals relevant information. This gives good speedup. Note however that the info is stale except if a bound was pushed by this helper or if this was called. We run it at the highest priority, so that will mostly be the case at the beginning of each Propagate() call of the classes using this. |
PushIntegerLiteral | Return type: Arguments: |
PushIntegerLiteralIfTaskPresent | Return type: Arguments: |
PushLiteral | Return type: Arguments: |
PushTaskAbsence | Return type: Arguments: |
PushTaskPresence | Return type: Arguments: |
RegisterWith | Return type: Arguments: |
ReportConflict | Return type: |
ResetFromSubset | Return type: Arguments: Resets the class to the same state as if it was constructed with the given subset of tasks from other. |
SchedulingConstraintHelper | Arguments: All the functions below refer to a task by its index t in the tasks vector given at construction. |
SchedulingConstraintHelper | Arguments: Temporary constructor. The class will not be usable until ResetFromSubset() is called. TODO(user): Remove this. It is a hack because the disjunctive class needs to fetch the maximum possible number of task at construction. |
SetLevel | Return type: Arguments: |
SetOtherHelper | Return type: Arguments: Manages the other helper (used by the diffn constraint). For each interval appearing in a reason on this helper, another reason will be added. This other reason specifies that on the other helper, the corresponding interval overlaps 'event'. |
SetTimeDirection | Return type: Arguments: Make sure the cached values are up to date. Also sets the time direction to either forward/backward. This will impact all the functions below. This MUST be called at the beginning of all Propagate() call that uses this helper. |
ShiftedEndMax | Return type: Arguments: As with ShiftedStartMin(), we can compute the shifted end max (that is start_max + size_min. |
ShiftedStartMin | Return type: Arguments: In the presence of tasks with a variable size, we do not necessarily have start_min + size_min = end_min, we can instead have a situation like: | |<--- size-min --->| ^ ^ ^ start-min | end-min | We define the "shifted start min" to be the right most time such that we known that we must have min-size "energy" to the right of it if the task is present. Using it in our scheduling propagators allows to propagate more in the presence of tasks with variable size (or optional task where we also do not necessarily have start_min + size_min = end_min. To explain this shifted start min, one must use the AddEnergyAfterReason(). |
SizeIsFixed | Return type: Arguments: |
SizeMax | Return type: Arguments: |
SizeMin | Return type: Arguments: Helpers for the current bounds on the current task time window. [ (size-min) ... (size-min) ] ^ ^ ^ ^ start-min end-min start-max end-max Note that for tasks with variable durations, we don't necessarily have duration-min between the XXX-min and XXX-max value. Remark: We use cached values for most of these function as this is faster. In practice, the cache will almost always be up to date, but not in corner cases where pushing the start of one task will change values for many others. This is fine as the new values will be picked up as we reach the propagation fixed point. |
Sizes | Return type: |
StartIsFixed | Return type: Arguments: |
StartMax | Return type: Arguments: |
StartMin | Return type: Arguments: |
Starts | Return type: Returns the underlying affine expressions. |
SynchronizeAndSetTimeDirection | Return type: Arguments: |
TaskByDecreasingEndMax | Return type: |
TaskByDecreasingStartMax | Return type: |
TaskByIncreasingEndMin | Return type: |
TaskByIncreasingShiftedStartMin | Return type: |
TaskByIncreasingStartMin | Return type: Sorts and returns the tasks in corresponding order at the time of the call. Note that we do not mean strictly-increasing/strictly-decreasing, there will be duplicate time values in these vectors. TODO(user): we could merge the first loop of IncrementalSort() with the loop that fill TaskTime.time at each call. |
TaskDebugString | Return type: Arguments: Returns a string with the current task bounds. |
WatchAllTasks | Return type: Arguments: Registers the given propagator id to be called if any of the tasks in this class change. Note that we do not watch size max though. |