0

我有一个智能灯,它的动作可以打开/关闭。动作开启会增加房间的亮度,但是,由于当前的环境状态,我无法确定它将增加多少亮度。有没有办法在 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) 
    )
  )
4

2 回答 2

0

是否有必要将房间内的光线建模为不确定的?如果您想模拟仅增加光线,当房间没有完全点亮时,您可以使用 PDDL 条件效果。例子:

:effect (and 
    (when (< (room-light ?v) 20)
        (increase (brightness ?l) 30)
    )
    (when (> (room-light ?v) 90)
        (increase (brightness ?l) 10)
    )
)

但更一般地说:

您要建模的是什么?您是否试图确定需要点亮多少个灯泡才能维持房间内的适当照明?也许您不应该将其视为前期计划,而应将其视为动态计划。后者从传感器获取输入并计算给定情况的计划。在每种情况下,您都可以准确地知道房间里有多少光,而且问题始终是确定性的。然后,当您开始执行计划时,来自环境的响应可能与计划所假设的不同。那时,您将无法完成该计划,拍摄传感器输入的快照,制定新的初始状态并再次重新计划。

于 2019-09-03T10:12:10.460 回答
0

PDDL 是确定性的,因此您将无法在 PDDL 中表达概率效应。关于不确定性的工作始于概率 PDDL(参见定义语言的这篇论文),并一直持续到当前的 2018 年比赛。您可以从2018 年竞赛页面找到最新的工作和使用的协议。

于 2019-09-02T04:42:29.623 回答