Metric-FF (v2.1) を使用して、古典的な計画の問題を解決しようとしています。自分の計画が最適ではないことに気付き、コストの最小化をいじり始めました。コスト最小化が有効になっているにもかかわらず、プランナーがコストを考慮していないように見えることに気付きました。次の最小限の例を作成しました。1 つの述語と 2 つの同一のメソッド (コストを除く) を使用します。
(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 が選択されます。
これを正しく解決する入手可能なプランナーを知っている場合は、喜んで使用します。