-
Notifications
You must be signed in to change notification settings - Fork 54
Open
Description
I tried to use VAL in a very simple case of a durative action with continuous change.
We have a robot and one action with fixed duration. We have also a numeric function, 'battery_level', that decrease during the action continuously according the ode
d(battery_level)/dt = - 0.01* battery_level
whose solution is a simple exponential. Here the code:
(:durative-action move
:parameters ( ?l_from - location ?l_to - location)
:duration (= ?duration 5)
:condition (and
(at start (connected ?l_from ?l_to))
(at start (robot_at ?l_from))
(over all (<= 0 battery_level))
)
:effect (and
(at start (not (robot_at ?l_from)))
(at end (robot_at ?l_to))
(decrease (battery_level) (* #t (* 0.01 battery_level) ))
)
)
As you see I put as condition the invariant
(over all (>= battery_level 0) )
and the validation is fine.
Unfortunately, if I just change the previous condition with the equivalent
(over all (<= 0 battery_level))
VAL fails. Here the error message:
Plan failed because of unsatisfied precondition in:
Invariant for (move l0 l1)
Plan failed to execute
Plan Repair Advice:
Invariant for (move l0 l1) has its condition unsatisfied between time 0 to 5, the condition is satisfied on [ 0 , 5 ].
(Invariant -100e^{ - 0.01t} >= 0 for t in (0,5) is only satisfied on [ 0 , 5 ])
The problem is in the first minus sign in the solution of the ode that should not be there and that fails the invariant condition. Why does it happen?
I leave the domain, problem and plan files.
Metadata
Metadata
Assignees
Labels
No labels