我正在学习如何在 IA 课程中使用 PDDL,我必须编写一个计划,我需要从 location4 接一个人并将其放在 location1 中,还要在 location3 中选择一个人并将其也放在 location1 中。我已经有了移动到位置选择人,移动到命运位置并放下它的代码。但是有些规则我不能放在代码上,我需要遵循一条连接路径,但我不知道如何设置这些条件:
这是连接路径:Location1 -> Location2 -> Location4 -> Location3
我有从一个位置到另一个位置的代码,但我不知道如何设置一个不能直接从位置 1 到位置 4 的条件
这是代码:
领域:
(定义(域planeacion_Str)
(:predicates (Hospital ?h)
(Ambulancia ?a)
(Location ?l)
(Paciente ?px)
(Libre ?a)
(Ocupado ?a ?px)
(at-ambulancia ?l)
(at-paciente ?px ?l)
)
(:action Conducir
:parameters (?de ?para)
:precondition (and (Location ?de) (Location ?para) (at-ambulancia ?de))
:effect (and (at-ambulancia ?para)
(not (at-ambulancia ?de)))
)
(:action subirPaciente
:parameters (?pcte ?lctn ?amblnc)
:precondition (and (Paciente ?pcte) (Location ?lctn) (Ambulancia ?amblnc)
(at-paciente ?pcte ?lctn) (at-ambulancia ?lctn) (Libre ?amblnc))
:effect (and (Ocupado ?pcte ?amblnc)
(not (at-paciente ?pcte ?lctn))
(not (Libre ?amblnc)))
)
(:action bajarPaciente
:parameters (?pcte ?lctn ?amblnc)
:precondition (and (Paciente ?pcte) (Location ?lctn) (Ambulancia ?amblnc)
(Ocupado ?pcte ?amblnc) (at-ambulancia ?lctn))
:effect (and (at-paciente ?pcte ?lctn)
(Libre ?amblnc)
(not (Ocupado ?pcte ?amblnc)))
))
(define (problem practica_Planeacion_pblm) (:domain planeacion_Str) (:objects l1 l2 l3 l4 amblnc px1 px2 hospital) (:init (Hospital l1) (Ambulancia amblnc) (Location l1) (Location l2) (Location l3) (Location l4) (Paciente px1) (Paciente px2) (Libre amblnc) (at-ambulancia l1) (at-paciente px1 l4) (at-paciente px2 l3) ) (:goal (and (at-paciente px1 l1) (at-paciente px2) l1))))
希望可以有人帮帮我。