pub enum CumulativeExplanationType {
Naive,
BigStep,
PointWise,
}Expand description
Determines what type of explanation is used for the cumulative constraint based on the explanations described in Section 4.5.1 and 4.5.2 of [1].
For the explanations of conflicts and conflicts, we different between 3 types of explanations:
- The naive explanation (see
CumulativeExplanationType::Naive) - The bigstep explanation (see CumulativeExplanationType::BigStep)
- The pointwise explanation (see CumulativeExplanationType::PointWise)
§Bibliography
[1] A. Schutt, Improving scheduling by learning. University of Melbourne, Department of Computer Science and Software Engineering, 2011.
Variants§
Naive
The naive explanation approach simply uses the current bounds of the profile and the propagated task in the explanation.
BigStep
The default; lifts the explanation to create an explanation which uses the bounds which would cause the tasks in the profile to have mandatory parts in the range of the propagating profile.
PointWise
Creates an explanation over a set of time-points;
§Propagations
Note that we currently do not generate chains of profiles which cause a propagation. This
means that the explanation only concerns a single profile; the selected time-points for
a propagation of task i are constructed as follows in the case of a lower-bound
propagation: [profile.start, profile.start + i.process_time, profile.start + (2 * i.processing_time), ..., profile.end]. Thus, if the profile is shorter than
i.processing_time, two explanations are generated for the time-points profile.start
and profile.end.
§Conflicts
For conflicts we follow the work by Schutt (see the documentation for
CumulativeExplanationType) and select the middle point in the profile as the point used
for the explanation.
Trait Implementations§
source§impl Clone for CumulativeExplanationType
impl Clone for CumulativeExplanationType
source§fn clone(&self) -> CumulativeExplanationType
fn clone(&self) -> CumulativeExplanationType
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for CumulativeExplanationType
impl Debug for CumulativeExplanationType
source§impl Default for CumulativeExplanationType
impl Default for CumulativeExplanationType
source§fn default() -> CumulativeExplanationType
fn default() -> CumulativeExplanationType
source§impl Display for CumulativeExplanationType
impl Display for CumulativeExplanationType
impl Copy for CumulativeExplanationType
Auto Trait Implementations§
impl Freeze for CumulativeExplanationType
impl RefUnwindSafe for CumulativeExplanationType
impl Send for CumulativeExplanationType
impl Sync for CumulativeExplanationType
impl Unpin for CumulativeExplanationType
impl UnwindSafe for CumulativeExplanationType
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§impl<Value> Statistic for Valuewhere
Value: Display,
impl<Value> Statistic for Valuewhere
Value: Display,
source§fn log(&self, statistic_logger: StatisticLogger)
fn log(&self, statistic_logger: StatisticLogger)
Statistic using the provided StatisticLogger.