Package org.jacop.constraints
Class Cumulative
- java.lang.Object
-
- org.jacop.constraints.DecomposedConstraint<Constraint>
-
- org.jacop.constraints.Constraint
-
- org.jacop.constraints.Cumulative
-
- All Implemented Interfaces:
SatisfiedPresent
public class Cumulative extends Constraint implements SatisfiedPresent
Cumulative implements the cumulative/4 constraint using edge-finding algorithm and profile information on the resource use.- Version:
- 4.8
-
-
Field Summary
Fields Modifier and Type Field Description private CumulativeProfilescumulativeProfilesprivate static booleandebugprivate static booleandebugNarrprotected booleandoEdgeFindingIt specifies if the edge finding algorithm should be used.private java.util.Comparator<IntDomain>domainMaxComparatorprivate java.util.Comparator<IntDomain>domainMinComparatorprotected booleandoProfileIt specifies if the profiles should be computed to propagate onto limit variable.IntVar[]durationsIt specifies/stores duration variables for each corresponding task.(package private) static java.util.concurrent.atomic.AtomicIntegeridNumberIntVarlimitIt specifies the limit of the profile of cumulative use of resources.private ProfilemaxProfileIt contains information about maximal profile contributed by tasks.private ProfileminProfileIt contains information about minimal profile contributed by regions for certain occupied by tasks.IntVar[]resourcesIt specifies/stores resource variable for each corresponding task.protected booleansetLimitIt specifies if the data from profiles should be used to propagate onto limit variable.IntVar[]startsIt specifies/stores start variables for each corresponding task.private java.util.Comparator<Task>taskAscEctComparatorprivate java.util.Comparator<Task>taskDescLstComparatorprivate Task[]Ts-
Fields inherited from class org.jacop.constraints.Constraint
afcWeight, atomicExecution, consistencyPruningEvents, constraintScope, earlyTerminationOK, increaseWeight, numberId, scope, trace, watchedVariableGrounded
-
Fields inherited from class org.jacop.constraints.DecomposedConstraint
queueIndex
-
-
Constructor Summary
Constructors Constructor Description Cumulative(java.util.List<? extends IntVar> starts, java.util.List<? extends IntVar> durations, java.util.List<? extends IntVar> resources, IntVar limit)It creates a cumulative constraint.Cumulative(java.util.List<? extends IntVar> starts, java.util.List<? extends IntVar> durations, java.util.List<? extends IntVar> resources, IntVar limit, boolean edgeFinding)It creates a cumulative constraint.Cumulative(java.util.List<? extends IntVar> starts, java.util.List<? extends IntVar> durations, java.util.List<? extends IntVar> resources, IntVar limit, boolean edgeFinding, boolean profile)It creates a cumulative constraint.Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit)It creates a cumulative constraint.Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit, boolean edgeFinding)It creates a cumulative constraint.Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit, boolean doEdgeFinding, boolean doProfile)It creates a cumulative constraint.Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit, boolean doEdgeFinding, boolean doProfile, boolean setLimit)It creates a cumulative constraint.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) booleanafter(Task l, java.util.List<Task> S)private booleanbefore(Task l, java.util.List<Task> S)(package private) booleanbetween(Task l, java.util.List<Task> S)voidconsistency(Store store)It is a (most probably incomplete) consistency function which removes the values from variables domains.private voidedgeFindingDown(Store store)private voidedgeFindingUp(Store store)private intest(java.util.List<Task> S)private booleanfitTasksAfter(java.util.List<Task> s, int est0)private booleanfitTasksBefore(java.util.List<Task> s, int lct0)intgetDefaultConsistencyPruningEvent()(package private) Task[]getTasks()private booleanintervalOverlap(int min1, int max1, int min2, int max2)private intlct(java.util.List<Task> S)private intmaxArea(java.util.List<Task> Ts)private longminOverlap(Task t, int est, int lct)private voidnotFirst(Store store, Task s, java.util.List<Task> S)private voidnotLast(Store store, Task s, java.util.List<Task> S)private voidprofileCheckInterval(Store store, IntVar Start, IntVar Duration, Interval i, IntVar Resources, int mustUseMin, int mustUseMax)private voidprofileCheckTasks(Store store)private voidremoveFromS_Est(java.util.List<Task> s)private voidremoveFromS_Lct(java.util.List<Task> s)booleansatisfied()It checks if the constraint is satisfied.java.lang.StringtoString()It produces a string representation of a constraint state.private voidupdateTasksRes(Store store)-
Methods inherited from class org.jacop.constraints.Constraint
afc, arguments, cleanAfterFailure, decompose, getConsistencyPruningEvent, getGuideConstraint, getGuideValue, getGuideVariable, grounded, grounded, id, impose, impose, imposeDecomposition, increaseWeight, intArrayToString, long2int, numberArgs, queueVariable, removeConstraint, requiresMonotonicity, setConsistencyPruningEvent, setConstraintScope, setScope, setScope, setScope, setScope, setScope, setWatchedVariableGrounded, supplyGuideFeedback, toInt, toInt, updateAFC, watchedVariableGrounded
-
Methods inherited from class org.jacop.constraints.DecomposedConstraint
auxiliaryVariables, checkInput, checkInput, checkInputForDuplication, checkInputForDuplicationSkipSingletons, checkInputForNullness, checkInputForNullness, checkInputForNullness, derivative, getDubletonsSkipSingletons, imposeDecomposition
-
-
-
-
Field Detail
-
idNumber
static java.util.concurrent.atomic.AtomicInteger idNumber
-
debug
private static final boolean debug
- See Also:
- Constant Field Values
-
debugNarr
private static final boolean debugNarr
- See Also:
- Constant Field Values
-
maxProfile
private Profile maxProfile
It contains information about maximal profile contributed by tasks.
-
minProfile
private Profile minProfile
It contains information about minimal profile contributed by regions for certain occupied by tasks.
-
cumulativeProfiles
private CumulativeProfiles cumulativeProfiles
-
Ts
private Task[] Ts
-
doEdgeFinding
protected boolean doEdgeFinding
It specifies if the edge finding algorithm should be used.
-
doProfile
protected boolean doProfile
It specifies if the profiles should be computed to propagate onto limit variable.
-
setLimit
protected boolean setLimit
It specifies if the data from profiles should be used to propagate onto limit variable.
-
limit
public IntVar limit
It specifies the limit of the profile of cumulative use of resources.
-
starts
public IntVar[] starts
It specifies/stores start variables for each corresponding task.
-
durations
public IntVar[] durations
It specifies/stores duration variables for each corresponding task.
-
resources
public IntVar[] resources
It specifies/stores resource variable for each corresponding task.
-
domainMaxComparator
private java.util.Comparator<IntDomain> domainMaxComparator
-
domainMinComparator
private java.util.Comparator<IntDomain> domainMinComparator
-
taskAscEctComparator
private java.util.Comparator<Task> taskAscEctComparator
-
taskDescLstComparator
private java.util.Comparator<Task> taskDescLstComparator
-
-
Constructor Detail
-
Cumulative
public Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit, boolean doEdgeFinding, boolean doProfile)
It creates a cumulative constraint.- Parameters:
starts- variables denoting starts of the tasks.durations- variables denoting durations of the tasks.resources- variables denoting resource usage of the tasks.limit- the overall limit of resources which has to be used.doEdgeFinding- true if edge finding algorithm should be used.doProfile- specifies if the profiles should be computed in order to reduce limit variable.
-
Cumulative
public Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit, boolean doEdgeFinding, boolean doProfile, boolean setLimit)
It creates a cumulative constraint.- Parameters:
starts- variables denoting starts of the tasks.durations- variables denoting durations of the tasks.resources- variables denoting resource usage of the tasks.limit- the overall limit of resources which has to be used.doEdgeFinding- true if edge finding algorithm should be used.doProfile- specifies if the profiles should be computed in order to reduce limit variable.setLimit- specifies if limit variable will be prunded.
-
Cumulative
public Cumulative(java.util.List<? extends IntVar> starts, java.util.List<? extends IntVar> durations, java.util.List<? extends IntVar> resources, IntVar limit)
It creates a cumulative constraint.- Parameters:
starts- variables denoting starts of the tasks.durations- variables denoting durations of the tasks.resources- variables denoting resource usage of the tasks.limit- the overall limit of resources which has to be used.
-
Cumulative
public Cumulative(java.util.List<? extends IntVar> starts, java.util.List<? extends IntVar> durations, java.util.List<? extends IntVar> resources, IntVar limit, boolean edgeFinding)
It creates a cumulative constraint.- Parameters:
starts- variables denoting starts of the tasks.durations- variables denoting durations of the tasks.resources- variables denoting resource usage of the tasks.limit- the overall limit of resources which has to be used.edgeFinding- true if edge finding algorithm should be used.
-
Cumulative
public Cumulative(java.util.List<? extends IntVar> starts, java.util.List<? extends IntVar> durations, java.util.List<? extends IntVar> resources, IntVar limit, boolean edgeFinding, boolean profile)
It creates a cumulative constraint.- Parameters:
starts- variables denoting starts of the tasks.durations- variables denoting durations of the tasks.resources- variables denoting resource usage of the tasks.limit- the overall limit of resources which has to be used.edgeFinding- true if edge finding algorithm should be used.profile- specifies if the profiles should be computed in order to reduce limit variable.
-
Cumulative
public Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit)
It creates a cumulative constraint.- Parameters:
starts- variables denoting starts of the tasks.durations- variables denoting durations of the tasks.resources- variables denoting resource usage of the tasks.limit- the overall limit of resources which has to be used.
-
Cumulative
public Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit, boolean edgeFinding)
It creates a cumulative constraint.- Parameters:
starts- variables denoting starts of the tasks.durations- variables denoting durations of the tasks.resources- variables denoting resource usage of the tasks.limit- the overall limit of resources which has to be used.edgeFinding- true if edge finding algorithm should be used.
-
-
Method Detail
-
consistency
public void consistency(Store store)
Description copied from class:ConstraintIt is a (most probably incomplete) consistency function which removes the values from variables domains. Only values which do not have any support in a solution space are removed.- Specified by:
consistencyin classConstraint- Parameters:
store- constraint store within which the constraint consistency is being checked.
-
edgeFindingDown
private void edgeFindingDown(Store store)
-
edgeFindingUp
private void edgeFindingUp(Store store)
-
est
private int est(java.util.List<Task> S)
-
fitTasksAfter
private boolean fitTasksAfter(java.util.List<Task> s, int est0)
-
fitTasksBefore
private boolean fitTasksBefore(java.util.List<Task> s, int lct0)
-
getDefaultConsistencyPruningEvent
public int getDefaultConsistencyPruningEvent()
- Specified by:
getDefaultConsistencyPruningEventin classConstraint
-
getTasks
Task[] getTasks()
-
intervalOverlap
private boolean intervalOverlap(int min1, int max1, int min2, int max2)
-
lct
private int lct(java.util.List<Task> S)
-
maxArea
private int maxArea(java.util.List<Task> Ts)
-
minOverlap
private long minOverlap(Task t, int est, int lct)
-
profileCheckInterval
private void profileCheckInterval(Store store, IntVar Start, IntVar Duration, Interval i, IntVar Resources, int mustUseMin, int mustUseMax)
-
profileCheckTasks
private void profileCheckTasks(Store store)
-
removeFromS_Est
private void removeFromS_Est(java.util.List<Task> s)
-
removeFromS_Lct
private void removeFromS_Lct(java.util.List<Task> s)
-
satisfied
public boolean satisfied()
Description copied from interface:SatisfiedPresentIt checks if the constraint is satisfied. It can return false even if constraint is satisfied but not all variables in its scope are grounded. It needs to return true if all variables in its scope are grounded and constraint is satisfied.Implementations of this interface for constraints that are not PrimitiveConstraint may require constraint imposition and consistency check as a requirement to work correctly.
- Specified by:
satisfiedin interfaceSatisfiedPresent- Returns:
- true if constraint is possible to verify that it is satisfied.
-
toString
public java.lang.String toString()
Description copied from class:ConstraintIt produces a string representation of a constraint state.- Overrides:
toStringin classConstraint
-
updateTasksRes
private void updateTasksRes(Store store)
-
-