Get desktop application:
View/edit binary Protocol Buffers messages
An anytime plan request to the engine. The engine replies with a stream of N `Answer` messages where: - the first (N-1) message are of type `IntermediateReport` - the last message is of type `FinalReport`
A oneshot plan request to the engine. The engine replies with athe PlanGenerationResult
A validation request to the engine. The engine replies with the ValidationResult
Problem to be validated.
Plan to validate.
Message sent by the validator.
A set of engine specific values that can be reported
Optional. Information given by the engine to the user.
Synthetic description of the engine that generated this message.
A compiler request to the engine. The engine replies with the CompilerResult
Message sent by the grounder.
The problem generated by the Compiler
The map_back_plan field is a map from the ActionInstance of the compiled problem to the original ActionInstance.
A set of engine specific values that can be reported
Optional. Information given by the engine to the user.
Synthetic description of the engine that generated this message.
Declares an abstract task together with its expected parameters. Example: goto(robot: Robot, destination: Location)
Used in:
Example: "goto"
Example: - robot: Robot - destination: Location
Unified action representation that represents any kind of actions.
Used in:
Action name. E.g. "move"
Typed and named parameters of the action.
If set, the action is durative. Otherwise it is instantaneous. features: DURATIVE_ACTIONS
Conjunction of conditions that must hold for the action to be applicable.
Conjunction of effects as a result of applying this action.
Representation of an action instance that appears in a plan.
Used in:
,Optional. A unique identifier of the action that might be used to refer to it (e.g. in HTN plans).
name of the action
Parameters of the action instance, required to be constants.
Start time of the action. The default 0 value is OK in the case of non-temporal planning feature: [DURATIVE_ACTIONS]
End time of the action. The default 0 value is OK in the case of non-temporal planning feature: [DURATIVE_ACTIONS]
Activity in a scheduling problem.
Used in:
Name of the activity that must uniquely identify it.
Typed and named parameters of the activity.
Duration of the activity
Conjunction of conditions that must hold if the activity is present.
Conjunction of effects that this activity produces.
Conjunction of static constraints that must hold if the activity is present.
An assignment of a value to a fluent, as it appears in the initial state definition.
Used in:
State variable that is assigned the `value`. It should be an expression of the STATE_VARIABLE kind for which all parameters are of the CONSTANT kind.
An expression of the CONSTANT kind, denoting the value take by the state variable.
Used in:
, , ,Used in:
, ,Optional. Must be set for durative actions where it specifies the temporal interval over which when the condition should hold. features: DURATIVE_ACTIONS
Used in:
,/ The duration of the action can be freely chosen within the indicated bounds
Representation of an effect that allows qualifying the effect expression, e.g., to make it a conditional effect.
Used in:
,Required. The actual effect that should take place.
Optional. If the effect is within a durative action, the following must be set and will specify when the effect takes place. features: DURATIVE_ACTIONS
An effect expression is of the form `FLUENT OP VALUE`. We explicitly restrict the different types of effects by setting the allowed operators.
Used in:
,Expression that must be of the STATE_VARIABLE kind.
Optional. If the effect is conditional, then the following field must be set. In this case, the `effect` will only be applied if the `condition`` holds. If the effect is unconditional, the effect is set to the constant 'true' value. features: CONDITIONAL_EFFECT
The variables that quantify this effect
Used in:
The `fluent` is set to the corresponding `value`
The `fluent` is increased by the amount `value` features: INCREASE_EFFECTS
The `fluent` is decreased by the amount `value` features: DECREASE_EFFECTS
Used in:
, ,Short name of the engine (planner, validator, ...)
As in s-expression, an Expression is either an atom or list representing the application of some parameters to a function/fluent.
Used in:
, , , , , , , , , , , , , ,If non-empty, the expression is a single atom. For instance `3`, `+`, `kitchen`, `at-robot`, ...
If the `atom` field is empty, then the expression is a list of sub-expressions, typically representing the application of some arguments to a function or fluent. For instance `(+ 1 3)`, (at-robot l1)`, `(>= (battery_level) 20)`
Type of the expression. For instance "int", "location", ...
Kind of the expression, specifying the content of the expression. This is intended to facilitate parsing of the expression.
The kind of an expression, which gives information related to its structure.
Used in:
Default value, should not be used. Drop it if we are sure to never need it.
Constant atom. For instance `3` or `kitchen` (where `kitchen` is an object defined in the problem)
Atom symbol representing a parameter from an outer scope. For instance `from` that would appear inside a `(move from to - location)` action.
Atom symbol representing a variable from an outer scope. This is typically used to represent the variables that are existentially or universally qualified in expressions.
Atom symbol representing a fluent of the problem. For instance `at-robot`.
Atom representing a function. For instance `+`, `=`, `and`, ...
List. Application of some parameters to a fluent symbol. For instance `(at-robot l1)` or `(battery-charged)` The first element of the list must be a FLUENT_SYMBOL
List. The expression is the application of some parameters to a function. For instance `(+ 1 3)`. The first element of the list must be a FUNCTION_SYMBOL
Atom symbol. Unique identifier of a task or action in the current scope.
Features of the problem. Features are essential in that not supporting a feature `X` should allow disregarding any field tagged with `features: [X]`.
Used in:
PROBLEM_CLASS
PROBLEM_TYPE
TIME
EXPRESSION_DURATION
NUMBERS
CONDITIONS_KIND
EFFECTS_KIND
TYPING
FLUENTS_TYPE
PARAMETERS
QUALITY_METRICS
ACTION_COST_KIND
OVERSUBSCRIPTION_KIND
SIMULATED_ENTITIES
CONSTRAINTS_KIND
HIERARCHICAL
INITIAL_STATE
A state-dependent variable.
Used in:
Return type of the fluent.
Typed and named parameters of the fluent.
If non-empty, then any state variable using this fluent that is not explicitly given a value in the initial state will be assumed to have this default value. This allows mimicking the closed world assumption by setting a "false" default value to predicates.
A Goal is currently an expression that must hold either: - in the final state, - over a specific temporal interval (under the `timed_goals` features)
Used in:
Goal expression that must hold in the final state.
Optional. If specified the goal should hold over the specified temporal interval (instead of on the final state). features: TIMED_GOALS
Represents a goal associated with a weight, used to define oversubscription planning.
Used in:
Goal expression
The weight
Represents the hierarchical part of a problem. features: hierarchical
Used in:
An interval `[lower, upper]` where `lower` and `upper` are arbitrary expressions. The `is_left_open` and `is_right_open` fields indicate whether the interval is opened on left and right side respectively.
Used in:
A freely formatted logging message. Each message is annotated with its criticality level from the minimal (DEBUG) to the maximal (ERROR). Criticality level is expected to be used by an end user to decide the level of verbosity.
Used in:
, ,Used in:
A method describes one possible way of achieving a task. Example: A method that make a "move" action and recursively calls itself until reaching the destination.
Used in:
A name that uniquely identify the method. This is mostly used for user facing output or plan validation. Example: "m-recursive-goto"
Example: [robot: Robot, source: Location, intermediate: Location, destination: Location]
The task that is achieved by the method. A subset of the parameters of the method will typically be used to define the task that is achieved. Example: goto(robot, destination)
A set of subtasks that should be achieved to carry out the method. Note that the order of subtasks is irrelevant and that any ordering constraint should be specified in the `constraints` field. Example: - t1: (move robot source intermediate) - t2: goto(robot destination)
Constraints enable the definition of ordering constraints as well as constraints on the allowed instantiation of the method's parameters. Example: - end(t1) < start(t2) - source != intermediate
Conjunction of conditions that must hold for the method to be applicable. As for the conditions of actions, these can be temporally qualified to refer to intermediate timepoints. In addition to the start/end of the method, the temporal qualification might refer to the start/end of one of the subtasks using its identifier. Example: - [start] loc(robot) == source - [end(t1)] loc(robot) == intermediate - [end] loc(robot) == destination
Used in:
A unique identifier of the method that is used to refer to it in the hierarchy.
name of the method
Parameters of the method instance, required to be constants.
A mapping of the IDs of the method's subtasks into the IDs of the action/methods that refine them.
Used in:
Expression to minimize/maximize in the final state. Empty, if the `kind` is not {MIN/MAX}IMIZE_EXPRESSION_ON_FINAL_STATE
If `kind == MINIMIZE_ACTION_COSTS``, then each action is associated to a cost expression. TODO: Document what is allowed in the expression. See issue #134 In particular, for this metric to be useful in many practical problems, the cost expression should allow referring to the action parameters (and possibly the current state at the action start/end). This is very awkward to do in this setting where the expression is detached from its scope.
List of goals used to define the oversubscription planning problem. Empty, if the `kind` is not OVERSUBSCRIPTION
List of timed goals used to define the temporal oversubscription planning problem. Empty, if the `kind` is not TEMPORAL_OVERSUBSCRIPTION
Used in:
Minimize the action costs expressed in the `action_costs` field
Minimize the length of the resulting sequential plan
Minimize the makespan in case of temporal planning features: durative_actions
Minimize the value of the expression defined in the `expression` field
Maximize the value of the expression defined in the `expression` field
Maximize the weighted number of goals reached
Maximize the weighted number of timed goals reached
Declares an object with the given name and type.
Used in:
Name of the object.
Type of the object. The type must have been previously declared in the problem definition.
Parameter of a fluent or of an action
Used in:
, , , , , ,Name of the parameter.
Type of the parameter.
Used in:
,An ordered sequence of actions that appear in the plan. The order of the actions in the list must be compatible with the partial order of the start times. In case of non-temporal planning, this allows having all start time at 0 and only rely on the order in this sequence. features: ACTION_BASED
When the plan is hierarchical, this object provides the decomposition of hte root tasks into the actions of the plan feature: HIERARCHY
Solution representation of a scheduling problem. feature: SCHEDULING
Message sent by engine. Contains the engine exit status as well as the best plan found if any.
Used as response type in: UnifiedPlanning.planAnytime, UnifiedPlanning.planOneShot
Optional. Best plan found if any.
A set of engine specific values that can be reported, for instance - "grounding-time": "10ms" - "expanded-states": "1290"
Optional log messages about the engine's activity. Note that it should not be expected that logging messages are visible to the end user. If used in conjunction with INTERNAL_ERROR or UNSUPPORTED_PROBLEM, it would be expected to have at least one log message at the ERROR level.
Synthetic description of the engine that generated this message.
==== Engine stopped normally ======
Used in:
Valid plan found The `plan` field must be set.
Plan found with optimality guarantee The `plan` field must be set and contains an optimal solution.
No plan exists
The engine was not able to find a solution but does not give any guarantee that none exist (i.e. the engine might not be complete)
The engine ran out of time
The engine ran out of memory
The engine faced an internal error.
The problem submitted is not supported by the engine.
====== Intermediate answer ====== This Answer is an Intermediate Answer and not a Final one
Used in:
A mapping of the root task IDs into the IDs of the actions and methods that refine them.
Instances of all methods used in the plan.
Used as request type in: UnifiedPlanning.planAnytime, UnifiedPlanning.planOneShot
Problem that should be solved.
Max allowed runtime time in seconds.
Engine specific options to be passed to the engine
Used in:
Used as request type in: UnifiedPlanning.compile
Used as field type in:
, ,List of actions in the domain. features: ACTION_BASED
Explicit assignments to state variables in the initial state. State variables not assigned there and will take the default value of their fluent, if any.
Facts and effects that are expected to occur strictly later than the initial state. features: TIMED_EFFECTS
Goals of the planning problem.
all features of the problem
The plan quality metrics
If the problem is hierarchical, defines the tasks and methods as well as the initial task network. features: HIERARCHICAL
Scheduling-specific extension of the problem. features: SCHEDULING
Trajectory constraints of the planning problem.
Flag defining if the time is discrete
Flag defining if the self_overlapping is allowed
Optional. epsilon required by the problem
Representation of a constant real number, as the fraction `(numerator / denominator)`. A real should be in its canonical form (with smallest possible denominator). Notably, if this number is an integer, then it is guaranteed that `denominator == 1`.
Used in:
, , , , ,Used in:
Name of the activities that appear in the solution
Assignment of all variables and activity parameters and timepoints that appear in the solution.
Extension of `Problem` for scheduling
Used in:
All potential activities of the scheduling problem.
All variables in the base problem
All constraints in the base problem.
Representation of an abstract or primitive task that should be achieved, required either in the initial task network or as a subtask of a method. Example: task of sending a `robot` to the KITCHEN - t1: goto(robot, KITCHEN)
Used in:
,Identifier of the task, required to be unique in the method/task-network where the task appears. The `id` is notably used to refer to the start/end of the task. Example: t1
Name of the task that should be achieved. It might either - an abstract task if the name is the one of a task declared in the problem - a primitive task if the name is the one of an action declared in the problem Example: - "goto" (abstract task) - "move" (action / primitive task)
Example: (for a "goto" task) - robot (a parameter from an outer scope) - KITCHEN (a constant symbol in the problem)
A task network defines a set of subtasks and associated constraints. It is intended to be used to define the initial task network of the hierarchical problem. Example: an arbitrary robot should go to the KITCHEN before time 100
Used in:
robot: Location
t1: goto(robot, KITCHEN)
end(t1) <= 100
A contiguous slice of time represented as an interval `[lower, upper]` where `lower` and `upper` are time references. The `is_left_open` and `is_right_open` fields indicate whether the interval is opened on left and right side respectively.
Used in:
, ,Represents an effect that will occur sometime beyond the initial state. (similar to timed initial literals)
Used in:
Required. An effect expression that will take place sometime in the future (i.e. not at the intial state) as specified by the temporal qualifiation.
Required. Temporal qualification denoting when the timed fact will occur.
Represents a timed goal associated with a weight, used to define temporal oversubscription planning.
Used in:
Goal expression
The time interval
The weight
Symbolic reference to an absolute time. It might represent: - the time of the initial/final state, or - the start/end of the containing action, or - the start/end of one of the subtask in the context of a method or of a task network.
Used in:
If non-empty, identifies the container of which we are extracting the start/end timepoint. In the context of a task-network or of a method, this could be the `id` of one of the subtasks. feature: hierarchies
Used in:
Global start of the planning problem. This is context independent and represents the time at which the initial state holds.
Global end of the planning problem. This is context independent and represents the time at which the final state holds.
Start of the container (typically the action or method) in which this symbol occurs
End of the container (typically the action or method) in which this symbol occurs
Represents a time (`timepoint` + `delay`), that is a time defined relatively to a particular `timepoint`. Note that an absolute time can be defined by setting the `delay` relative to the `GLOBAL_START`` which is the reference time.
Used in:
, ,Declares the existence of a symbolic type.
Used in:
Name of the type that is declared.
Optional. If the string is non-empty, this is the parent type of `type_name`. If set, the parent type must have been previously declared (i.e. should appear earlier in the problem's type declarations. feature: HIERARCHICAL_TYPING
Used in:
The Plan is valid for the Problem.
The Plan is not valid for the Problem.
The engine can't determine if the plan is VALID or INVALID for the Problem.