如何在不知道PDDL确切增加量的情况下对增加效果进行建模?

时间:2019-09-01 08:14:24

标签: artificial-intelligence planning pddl

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

2 个答案:

答案 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)
    )
)

但更普遍的是:

您要建模的是什么?您是否要确定需要点亮多少个灯泡才能保持房间的正常照明?也许您不应将其视为前期计划,而应将其视为动态计划。后者从传感器获取输入并针对给定情况计算计划。在每种情况下,您都确切知道房间中有多少光,并且问题始终是确定的。然后,当您开始执行计划时,来自环境的响应可能不是该计划所假定的。到那时,您将无法通过该计划,对传感器输入进行快照,制定新的初始状态,然后再次重新计划。