我尝试使用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))
)
尽管 do1 是更便宜的操作,但仍然会调用 do2 。如果我在域文件中更改其位置,则会选择do1。
如果您知道任何可获得的计划员正确地解决了这个问题,我很乐意使用它。