;Header and description (define (domain emergency_logistics_4) ;remove requirements that are not needed (:requirements :strips :typing :durative-actions) (:types crate person carrier robot - locable content location capacity ) (:predicates ;todo: define predicates here (isat ?o - locable ?l - location) (carry ?h - carrier ?c - crate) (capacity_c ?h - carrier ?n - capacity) (capacity_follow ?n1 - capacity ?n2 - capacity) (need ?p - person ?n - content) (cratecontent ?c - crate ?n - content) (deliverable ?c - crate) (satisfied ?p - person ?con - content) (nobusy ?r - robot) ) (:durative-action load :parameters (?r - robot ?h - carrier ?c - crate ?l - location ?n1 - capacity ?n2 - capacity) :duration (= ?duration 2) :condition (and (over all (isat ?r ?l)) (over all (isat ?h ?l)) (at start (isat ?c ?l)) ;(at start (nobusy ?r)) (over all (capacity_follow ?n1 ?n2)) (at start (capacity_c ?h ?n2)) (over all (deliverable ?c))) :effect (and (at start (not (isat ?c ?l))) ;(at start (not (nobusy ?r))) ;(at end (nobusy ?r)) (at end (not (capacity_c ?h ?n2))) (at end (capacity_c ?h ?n1)) (at end (carry ?h ?c))) ) (:durative-action move :parameters (?c - carrier ?r - robot ?o - location ?d - location) :duration (= ?duration 3) :condition (and (at start (isat ?c ?o))(at start (isat ?r ?o)) ; (at start (nobusy ?r)) ) :effect (and (at start (not (isat ?c ?o))) (at start (not (isat ?r ?o))) ; (at start (not (nobusy ?r))) ; (at end (nobusy ?r)) (at end (isat ?c ?d)) (at end (isat ?r ?d))) ) (:durative-action deliver :parameters (?r - robot ?h - carrier ?p - person ?c - crate ?con - content ?l - location ?n1 - capacity ?n2 - capacity) :duration (= ?duration 2) :condition (and (over all (isat ?r ?l)) (over all (isat ?h ?l)) (over all (isat ?p ?l)) (at start (carry ?h ?c)) ;(at start (nobusy ?r)) (over all (need ?p ?con)) (over all (cratecontent ?c ?con)) (over all (capacity_follow ?n1 ?n2)) (at start(capacity_c ?h ?n1))) :effect (and (at end (not (carry ?h ?c))) (at end (not (need ?p ?con))) (at end (satisfied ?p ?con)) (at end (isat ?c ?l)) ;(at start (not (nobusy ?r))) ;(at end (nobusy ?r)) (at end (not (capacity_c ?h ?n1))) (at end (capacity_c ?h ?n2)) (at end (not (deliverable ?c)))) ) )