All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aiddl-test.planning.task-network.dock-worker-robot.domain.aiddl Maven / Gradle / Ivy

Go to download

Provides common types and algorithm implementations for the fast prototyping integrative AI systems with the AIDDL framework.

The newest version!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; AIDDL version of the 'Dock Worker Robot' methods described in:
;; Automated Planning - Theory and Praxis
;; by Malik Ghallab and Dana Nau and Paolo Traverso
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(#mod self org.aiddl.test.planning.task-network.dwr)

(#req EVAL org.aiddl.eval.namespace)
(#nms nms-basic basic-ops@EVAL)
(#nms nms-type type-ops@EVAL)

(#req HTN org.aiddl.common.planning.task-network)

(^Method@HTN take-and-put
  (substitute
    (
      name:(take-and-put ?c ?k ?l1 ?l2 ?p2 ?p2 ?x1 ?x2)
      task:(move-topmost-container ?p1 ?p2)
      signature:{
        ?c:t_container
        ?k:t_crane
        ?l1:t_location
        ?l2:t_location
        ?p1:t_pile
        ?p2:t_pile
        ?x1:t_container
        ?x2:t_container }
      preconditions:{
        (top ?c ?p1) : true
        (on ?c ?x1) : true
        (attached ?p1 ?l1) : true
        (belong ?k ?l1) : true
        (attached ?p2 ?l2) : true
        (top ?x2 ?p2) : true
      }
      sub-tasks:[ t1 t2 ]
    )
    {
      t1: (take ?k ?l1 ?c ?x1 ?p1)
      t2: (put ?k ?l2 ?c ?x2 ?p2)
    })
)

(^Method@HTN recursive-move
  (
    name:(recursive-move ?p ?q ?c ?x)
    task:(move-stack ?p ?q)
    signature:{?p:t_pile ?q:t_pile ?c:t_container ?x:t_container}
    preconditions:{
      (top ?c ?p) : true
      (on  ?c ?x) : true
    }
    sub-tasks:[(move-topmost-container ?p ?q) (move-stack ?p ?q)]
  )
)

(^Method@HTN do-nothing
  (
    name:(do-nothing ?p ?q)
    task:(move-stack ?p ?q)
    signature:{?p:t_pile ?q:t_pile}
    preconditions:{
      (top pallet ?p) : true
    }
    sub-tasks:[]
  )
)

(^Task@HTN u1 (move-stack p1a p1b))
(^Task@HTN u2 (move-stack p1b p1c))
(^Task@HTN u3 (move-stack p2a p2b))
(^Task@HTN u4 (move-stack p2b p2c))
(^Task@HTN u5 (move-stack p3a p3b))
(^Task@HTN u6 (move-stack p3b p3c))

(^Method@HTN move-each-twice
  (
    name:(move-each-twice)
    task:(move-all-stacks)
    preconditions:{ }
    sub-tasks:[$u1 $u2 $u3 $u4 $u5 $u6]
  )
)

(^set M { $take-and-put $recursive-move $do-nothing $move-each-twice })





© 2015 - 2025 Weber Informatics LLC | Privacy Policy