;; ===================================================================== ;; The Problem 1.1 in our AIJ paper ;; ;; A possible solution: ;; 1. turnOnTap(ERNIE,TAP1,BUCKET1,SL) ;; ==> fillingBucket(BUCKET1,TAP1,SL) on ;; 2. turnOffTAP(ERNIE,TAP1,BUCKET1,SL) ;; 3. turnOnTap(ERNIE,TAP1,BUCKET2,SL) ;; ==> fillingBucket(BUCKET2,TAP1,SL) on ;; 4. pickUp(ERNIE,BUCKET1,SL) ;; 5. go(ERNIE,SL,DL) ==> walking(ERNIE,DL) on ;; 6. arrive(ERNIE,DL) ;; 7. deliver(ERNIE,BUCKET1,DL,1) ;; 8. go(ERNIE,DL,SL) ==> walking(ERNIE,SL) on ;; 9. arrive(ERNIE,SL) ;; 10. turnOffTAP(ERNIE,TAP1,BUCKET2,SL) ;; 11. pickUp(ERNIE,BUCKET2,SL) ;; 12. go(ERNIE,SL,DL) ==> walking(ERNIE,DL) on ;; 13. arrive(ERNIE,DL) ;; 14. deliver(ERNIE,BUCKET2,DL,4) ;; ===================================================================== (define (problem problem1.1) (:domain Bucket) (:requirements :time :continuous-effects) (:objects SL - location DL - location TAP1 - tap BUCKET1 - bucket BUCKET2 - bucket ERNIE - agent ) (:init (at ERNIE SL) (at BUCKET1 SL) (at BUCKET2 SL) (at TAP1 SL) (= (flow_rate TAP1) 0.1) (= (walking_speed ERNIE) 5) (= (capacity BUCKET1) 4) (= (capacity BUCKET2) 4) (= (distance SL DL) 100) (= (distance DL SL) 100) (= (amount_of_water SL) 0) (= (amount_of_water DL) 0) (= (distance_to_walk ERNIE SL) 0) (= (distance_to_walk ERNIE DL) 0) (= (level BUCKET1) 0) (= (level BUCKET2) 0) (connected SL DL) (connected DL SL) ) (:goal (and (>= (amount_of_water DL) 5)) (<= ?total-time 70)) ) )