3

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 が選択されます。

これを正しく解決する入手可能なプランナーを知っている場合は、喜んで使用します。

4

0 に答える 0