Class NumericAnalysis

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 identified

  • E_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), and v 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), and v 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, use getDominanceConstraints().

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 of true 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() to Inst::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.