我正在尝试使用 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。
如果您知道任何可用的规划器可以正确解决此问题,我会很乐意使用它。