我有一个智能灯,可以打开/关闭动作。动作打开会增加房间的亮度,但是,由于当前的环境状态,我无法确定要增加多少亮度。有没有一种方法可以对PDDL中的这种不确定性进行建模?
(define (domain home)
(:requirements :typing :fluents)
(:types
phillipshue - lamp
)
(:predicates
(lamp_powerstate_on ?l -lamp)
)
(:functions
(brightness ?l - lamp)
)
(:action TurnOnLamp
:parameters ( ?l - lamp)
:precondition (and
(not(lamp_powerstate_on ?l))
)
:effect (and
(increase (brightness ?l) 1) (lamp_powerstate_on ?l)
)
)
答案 0 :(得分:0)
PDDL是确定性的,因此您将无法表达PDDL中的概率效应。有关不确定性的工作始于概率PDDL(请参阅定义语言的this paper),并且一直持续到直到目前的2018年竞赛。您可以从2018 competition page中找到最新的作品和使用的协议。
答案 1 :(得分:0)
是否有必要将房间中的光线建模为不确定的?如果要建模仅增加灯光,则在房间没有完全照明时,可以使用PDDL条件效果。示例:
:effect (and
(when (< (room-light ?v) 20)
(increase (brightness ?l) 30)
)
(when (> (room-light ?v) 90)
(increase (brightness ?l) 10)
)
)
但更普遍的是:
您要建模的是什么?您是否要确定需要点亮多少个灯泡才能保持房间的正常照明?也许您不应将其视为前期计划,而应将其视为动态计划。后者从传感器获取输入并针对给定情况计算计划。在每种情况下,您都确切知道房间中有多少光,并且问题始终是确定的。然后,当您开始执行计划时,来自环境的响应可能不是该计划所假定的。到那时,您将无法通过该计划,对传感器输入进行快照,制定新的初始状态,然后再次重新计划。