PDDL语法学习-Problem篇-2

为了补充域文件的语法,必须扩展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)

1Numetric 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

 

 

 

 

 

 

 

来自 <https://github.com/nergmada/pddl-reference/blob/master/docs/reference/PDDL2.1/problem.md>

 

上一篇:python – 查找两个字符串之间的相似性度量


下一篇:vue elementui table组件内容换行