3

我正在尝试使用 Metric-FF (v2.1) 来解决经典的规划问题。我注意到我的计划不是最优的,并开始尝试最小化成本。我意识到尽管激活了成本最小化,但计划者似乎并未考虑成本。我创建了以下最小示例,其中包含一个谓词和两个相同的方法(除了它们的成本):

(define (domain metrictest)
    (:requirements :strips :action-costs)
    (:predicates (done ?x))

    (:functions (total-cost) - number)

    (:action do1
        :parameters (?x)
        :precondition (not (done ?x))
        :effect (and (done ?x) (increase (total-cost) 1))
    )

    (:action do2
        :parameters (?x)
        :precondition (not (done ?x))
        :effect (and (done ?x) (increase (total-cost) 5))
    )
)

我要解决的只是:

(define (problem problem_1)
    (:domain metrictest)
    (:objects foo)
    (:init (= (total-cost) 0))
    (:goal (forall (?t) (done ?t)))
    (:metric minimize (total-cost))
)

这导致do2被调用,尽管do1是更便宜的操作。如果我更改它们在域文件中的位置,则会选择 do1。

如果您知道任何可用的规划器可以正确解决此问题,我会很乐意使用它。

4

0 回答 0