Class NumericAnalysis
Defined in File numericanalysis.h
Class Documentation
-
class NumericAnalysis
Public Types
-
enum dominance_constraint
Enum denoting the identified dominance constraint on a given task variable:
E_NODOMINANCE
denotes that no dominance constraint has been identifiedE_METRICTRACKING
denotes that the task variable never appears as a precondition of an action, or within one of the goals. It may, however, appear in the metric. The key consequence, though, is that, metric considerations aside, no value of the variable is better or worse than any other.E_SMALLERISBETTER
denotes that smaller values of the variable are preferable to larger values (e.g. all preconditions are of the form(<= v c)
, andv
can only be increased).E_BIGGERISBETTER
denotes that smaller values of the variable are preferable to larger values (e.g. all preconditions are of the form(>= v c)
, andv
can only be decreased).
Values:
-
enumerator E_NODOMINANCE
-
enumerator E_METRICTRACKING
-
enumerator E_SMALLERISBETTER
-
enumerator E_BIGGERISBETTER
Public Static Functions
-
static void findDominanceConstraintsAndMetricTrackingVariables()
Use static analysis to identify the dominance constraints on the task numeric variables. Each variable is given one of the values from
NumericAnalysis::dominance_constraint
. To obtain the results of this analysis, usegetDominanceConstraints()
.
-
static void findWhichVariablesHaveOrderIndependentEffects()
Use static analysis to identify the variables for which all effects are order-independent, i.e. those for which the affecting actions can be interleaved arbitrarily without affecting the final change on the variable. To obtain the results of this analysis, use
getDataOnWhichVariablesHaveOrderIndependentEffects()
.
-
static inline const vector<bool> &getDataOnWhichVariablesHaveOrderIndependentEffects()
Return the results of the analysis to determine which variables have only order-independent effects, as performed by
findWhichVariablesHaveOrderIndependentEffects()
.- Returns:
A const reference to
NumericAnalysis::allEffectsAreOrderIndependent
, where an entry oftrue
denotes that the corresponding variable’s effects are order-independent.
-
static inline const vector<dominance_constraint> &getDominanceConstraints()
Return the results of the analysis to determine dominance constraints on variables, as performed by
findDominanceConstraintsAndMetricTrackingVariables()
- Returns:
A const reference to
NumericAnalysis::dominanceConstraints
, the vector of dominance constraints on each task variable.
Protected Static Attributes
-
static vector<dominance_constraint> dominanceConstraints
Dominance constraints on each task variable, defined in the order in which they occur when iterating from
Inst::instantiatedOp::pnesBegin()
toInst::instantiatedOp::pnesEnd()
.
-
static vector<bool> allEffectsAreOrderIndependent
For each task variable, this defines whether the effects on that variable are order-independent. For now, this is determined by one of two simple rules: all the effects must be either:
increases or decreases by fixed, constant values.
increases or decreases by a continuous linear effect/duration dependent effect of an action for which the duration is bounded by fixed, constant values.
-
enum dominance_constraint