为了补充域文件的语法,必须扩展PDDL 2.1中的问题语法。PDDL 2.1中语法的一个有趣扩展是添加了一个度量( metric)。行为类似于优化函数的 metric 为计划定义了一个成本值。然后,我们表示是否希望这个指标最大化(如足球)或最小化(如高尔夫球)。
先引入一个简单的例子:
(define
(problem rover1)
(:domain rover-domain)
(:objects
r1 r2 - rover
wp1 wp2 - waypoint
)
(:init
(= (battery-amount r1) 100)
(= (recharge-rate r1) 2.5)
...
)
(:goal (and
...
)
)
(:metric maximize (+
(battery-amount r1)
(battery-amount r2)
)
)
)
内容
- Numeric Fluents
- Metric
- Length(Deprecated)
1、Numetric Fluents
(= (<fluent_name> <argument>) <value>)
等号前缀表示法用于为数值流分配一个值。一些规划器将要求所有可能的数值为数值通量应声明之前,它将试图规划
(= (battery-amount r1) 10)
2、MeTric
(:metric minimize (<numeric_operation>))
metric 可以使用对fluents的一些数值操作来定义,包括只使用单个fluent。声明 metric 的最常用方法是声明一个没有参数的数值流,并在每个操作的效果内按该操作的成本增加它
我们可以选择最小化或最大化 metric 函数的值。注意, metric 函数不能代替目标。
(:metric maximize (+
(battery-amount r1)
(battery-amount r2)
)
)
3、Length
长度参数是不赞成使用的。几乎没有规划器会支持它。
References
- PDDL - The Planning Domain Definition Language, [Ghallab, M. Howe, A. Knoblock, C. McDermott, D. Ram, A. Veloso, M. Weld, D. Wilkins, D.]
- PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains, [Fox, M. Long, D.]
- PDDL Examples
- OPTIC - Optimising Preferences and Time Dependent Costs
来自 <https://github.com/nergmada/pddl-reference/blob/master/docs/reference/PDDL2.1/problem.md>