我正在学习如何在IA类中使用PDDL,我必须编写一个计划,其中我需要从location4中挑选一个人并将其放入location1中,还需要在location3中挑选一个人并将其放入location1中。我已经有了代码,移动到地点挑选人,移动到命运地点,并放弃它。但是有一些规则我不能放在代码中,我需要遵循一个连接路径,我不知道如何设置这些条件:
这是连接路径: Loction1 -> 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) (:init (医院l1) ( l1) (Location l2) (Location L2) (Location l3) (Location l4) (Paciente px1) (Paciente px2 ) (Libre amblnc) (at-amblnc l1) (at-paciente px1 l4) (at-paciente px2 )) (:goal (和(at-paciente ) (at-paciente )))
希望有人能帮我。
发布于 2021-06-02 01:12:09
您需要在移动操作中添加一个前提条件,即只能在相邻位置之间移动;然后添加一个相邻位置列表作为初始状态中的谓词:
(adjacent location1 location2)
(adjacent location2 location3)但不是(adjacent location1 location4)。
https://stackoverflow.com/questions/67792612
复制相似问题