2

記述言語 pddl を使用してプランナーで (シングルエージェント) ゲームを解こうとしています。私の目的は、世界の人々にオブジェクトを提供する可能性のある最大のポイントを取得することです。

関数 (puntos) は、次のアクションの説明に記載されています。

(:action dar
    :parameters (?x - objeto ?y - personaje ?z - robot ?t - zona)
    :precondition (and (cogido ?x) (not (tiene ?y ?x))(en ?t ?y)(ubicado ?t ?z))
    :effect (and (tiene ?y ?x) (manovacia) (not (cogido ?x))(decrease (puntos) (suma-puntos ?x ?y)))
)

puntos 関数を最大化することで、可能な限り多くのポイントを取得しようとしていますが、プランナーは次のように述べています。

change on metric in wrong direction. metric replaced with plan length.

どうすればこの問題を解決できますか?

ドメインの完全な pddl の説明は次のとおりです。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Mundos de Belkan
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Autor: Rafael Leyva Ruiz.
;Asignatura TSI (Tecnicas de los Sistemas inteligentes)
;grado en ingenieria informatica especialidad en computacion y  sistemas inteligentes
;2015-2016

;Definicion del dominio para el problema de los mundos de Belkan.
(define (domain BELKAN-DOMAIN)
    (:requirements :strips :typing)
    (:types robot zona personaje objeto tipo mochila)
    ;Declaracion de los predicados del mundo de Belkan
    (:functions
        (total-fuel) ;;representa  la  energia del problema
        (coste-zona ?z - tipo)
        (suma-puntos ?x - objeto ?y - personaje)
        (capacidad-mochila)
        (ocupado-mochila)
        (puntos)
        (constante)
    )
    (:predicates
            (en ?x - zona ?y - personaje)
            (esta ?x - zona ?y - objeto)
            (ubicado ?x - zona ?y - robot)
            (tiene ?x - personaje ?y - objeto)
            (carga ?x - robot ?y - mochila ?z - objeto)
            (manovacia)
            (cogido ?x - objeto)
            (cargado ?x - objeto)
            (clase ?x - zona ?y - tipo)
            (camino ?x - zona ?y - zona)
            (permite-avanzar ?x - tipo ?y - objeto)
            (no-necesita-objeto ?x - tipo ?q - objeto)
    )

    ;ACC: Coger(x)
    ;LP: libre(x)^manovacia
    ;lS: manovacia^libre(x)
    ;LA: tengo(x)
    (:action coger
        :parameters (?x - objeto ?y - zona ?z - robot)
        :precondition (and  (manovacia)(esta ?y ?x)(ubicado ?y ?z))
        :effect (and (not (manovacia))(cogido ?x)(not (esta ?y ?x))))

    ;ACC: cargar(x) (Carga en la mochila)
    ;LP: cogido(x)^mochilavacia
    ;lS: cogido(x)
    ;LA: manovacia^cargado(x)
    (:action cargar
      :parameters (?x - objeto ?y - robot)
      :precondition (and (cogido ?x)
                    (> (-(capacidad-mochila)(ocupado-mochila)) 0))
      :effect (and (increase (ocupado-mochila) 1)(not (cogido ?x))(manovacia)(cargado ?x)))
    ;ACC:sacar-mochila
    ;LP:
    (:action sacar-mochila
      :parameters (?x - objeto ?y - robot)
      :precondition (and (manovacia)(cargado ?x))
                    ;(>= (ocupado-mochila)1))
      :effect (and (cogido ?x)(decrease (ocupado-mochila) 1)(not (cargado ?x))(not (manovacia))))

    ;ACC: dar(x, y)
    ;LP: tengo(x)^¬(tiene(y, x))
    ;lS: tengo(x)
    ;LA: tiene(y, x)^manovacia
    (:action dar
        :parameters (?x - objeto ?y - personaje ?z - robot ?t - zona)
        :precondition (and (cogido ?x) (not (tiene ?y ?x))(en ?t ?y)(ubicado ?t ?z))
        :effect (and (tiene ?y ?x) (manovacia) (not (cogido ?x))(increase (puntos) (suma-puntos ?x ?y))) 
        ;;en los probl del ejercicio 6 se arranca con 50 puntos y se resta con cada entrega
    )

    ;ACC:dejar(x)
    ;LP:(tengo(x))
    ;lS:(tengo(x))
    ;LA:(manovacia)
    :(:action dejar
      :parameters (?x - objeto ?y - zona ?z - robot)
      :precondition (and (cogido ?x)(ubicado ?y ?z))
      :effect (and (manovacia)(not (cogido ?x))(esta ?y ?x)))

    ;ACC: (mover(x, y)
    ;LP: en(x)^¬en(y)^camino(x, y)
    ;lS: en(y)
    ;LA: en(x)
    (:action mover
        :parameters (?z - robot ?x - zona ?y - zona ?t - tipo ?q - objeto)
        :precondition (and (not (ubicado ?y ?z))(ubicado ?x ?z)(camino ?x ?y)
                        (or(cogido ?q)(cargado ?q))(and (clase ?y ?t)(or(permite-avanzar ?t ?q)(no-necesita-objeto ?t ?q)))
                        (>=(-(total-fuel)(coste-zona ?t))0))
        :effect (and (ubicado ?y ?z)(not (ubicado ?x ?z))(decrease (total-fuel) (coste-zona ?t)))
    )
)

問題は次のとおりです。

(define (problem BELKAN)

(:domain BELKAN-DOMAIN)

(:OBJECTS Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8 Z9 Z10 Z11 Z12 Z13 Z14 Z15 Z16 Z17 Z18 Z19 Z20 Z21 Z22 Z23 Z24 
    Z25 - zona ROBOT - robot OSCAR MANZANA ROSA ALGORITMO ORO BIKINI ZAPATILLA - objeto PRINCESA PRINCIPE BRUJA
    PROFESOR LEONARDO - personaje MOCHILA - mochila BOSQUE PLAYA PRECIPICIO ARENA PIEDRA - tipo)

(:INIT 
        (CAMINO Z1 Z2)
        (CAMINO Z2 Z1)
        (CAMINO Z2 Z3)
        (CAMINO Z3 Z2)
        (CAMINO Z3 Z4)
        (CAMINO Z4 Z3)
        (CAMINO Z5 Z6)
        (CAMINO Z6 Z5)
        (CAMINO Z6 Z7)
        (CAMINO Z7 Z6)
        (CAMINO Z7 Z8)
        (CAMINO Z8 Z7)
        (CAMINO Z9 Z10)
        (CAMINO Z10 Z9)
        (CAMINO Z10 Z11)
        (CAMINO Z11 Z12)
        (CAMINO Z12 Z11)
        (CAMINO Z13 Z14)
        (CAMINO Z14 Z13)
        (CAMINO Z14 Z15)
        (CAMINO Z15 Z14)
        (CAMINO Z15 Z16)
        (CAMINO Z16 Z15)
        (CAMINO Z1 Z5)
        (CAMINO Z5 Z1)
        (CAMINO Z2 Z6)
        (CAMINO Z6 Z2)          ;       1  <->  2  <->  3  <-> 4
        (CAMINO Z3 Z7)          ;       |       |      |       |
        (CAMINO Z7 Z3)          ;       5  <->  6 <->  7  <-> 8
        (CAMINO Z4 Z8)          ;       |       |      |      |
        (CAMINO Z8 Z4)          ;       9  <-> 10 <-> 11 <-> 12
        (CAMINO Z5 Z9)          ;       |       |      |      |
        (CAMINO Z9 Z5)          ;       13 <-> 14 <-> 15 <-> 16
        (CAMINO Z6 Z10)         
        (CAMINO Z10 Z6)         
        (CAMINO Z7 Z11)         
        (CAMINO Z11 Z7)         
        (CAMINO Z8 Z12)         
        (CAMINO Z12 Z8)         
        (CAMINO Z9 Z13)         
        (CAMINO Z13 Z9)
        (CAMINO Z10 Z14)
        (CAMINO Z14 Z10)
        (CAMINO Z11 Z15)
        (CAMINO Z15 Z11)
        (CAMINO Z12 Z16)
        (CAMINO Z16 Z12)
;       s(CAMINO Z2 Z5)
;       (CAMINO Z5 Z2)
;       (CAMINO Z3 Z6)
;       (CAMINO Z6 Z3)
;       (CAMINO Z4 Z7)
;       (CAMINO Z7 Z4)
;       (CAMINO Z6 Z9)
;       (CAMINO Z9 Z6)
;       (CAMINO Z7 Z10)
;       (CAMINO Z10 Z7)
;       (CAMINO Z8 Z11)
;       (CAMINO Z11 Z8)
;       (CAMINO Z10 Z13)
;       (CAMINO Z13 Z10)
;       (CAMINO Z11 Z14)
;       (CAMINO Z14 Z11)
;       (CAMINO Z12 Z15)
;       (CAMINO Z15 Z12)

        ;;;;;;;;;;;;;;;;
        ;objetos
        (ESTA Z2 ORO)
        (EN Z4 PRINCIPE)
        (EN Z6 LEONARDO)
        (EN Z7 BRUJA)
        (ESTA Z5 OSCAR)
        (ESTA Z10 MANZANA)
        (EN Z13 PRINCESA)
        (ESTA Z14 ROSA)
        (EN Z9 PROFESOR)
        (ESTA Z12 ALGORITMO)
        (UBICADO Z5 ROBOT)
        (MANOVACIA)

        ;;;;;;;;;;;;;;;;;;
        ;tipos de zonas
        (CLASE Z1 PRECIPICIO)
        (CLASE Z2 PLAYA)
        (CLASE Z3 PLAYA)
        (CLASE Z4 BOSQUE)
        (CLASE Z5 PIEDRA)
        (CLASE Z6 PIEDRA)
        (CLASE Z7 BOSQUE)
        (CLASE Z8 BOSQUE)
        (CLASE Z9 BOSQUE)
        (CLASE Z10 PLAYA)
        (CLASE Z11 BOSQUE)
        (CLASE Z12 ARENA)
        (CLASE Z13 BOSQUE)
        (CLASE Z14 ARENA)
        (CLASE Z15 PLAYA)
        (CLASE Z16 ARENA)

        ;;;;;;;;;;;;;;;;;;;;;
        (PERMITE-AVANZAR PLAYA BIKINI)
        (PERMITE-AVANZAR BOSQUE ZAPATILLA)
        (NO-NECESITA-OBJETO ARENA BIKINI)
        (NO-NECESITA-OBJETO PIEDRA BIKINI)
        (NO-NECESITA-OBJETO PRECIPICIO BIKINI)
        (NO-NECESITA-OBJETO ARENA ZAPATILLA)
        (NO-NECESITA-OBJETO PIEDRA ZAPATILLA)
        (NO-NECESITA-OBJETO PRECIPICIO ZAPATILLA)
        (ESTA Z5 ZAPATILLA)
        (ESTA Z4 BIKINI)
        (= (coste-zona PRECIPICIO) 10000)
        (= (coste-zona PLAYA) 1)
        (= (coste-zona BOSQUE) 1)
        (= (coste-zona ARENA) 1)
        (= (coste-zona PIEDRA) 2)
        (= (total-fuel) 100)
        (= (puntos) 0)
        (= (suma-puntos OSCAR LEONARDO) -10)
        (= (suma-puntos OSCAR PRINCESA) -5)
        (= (suma-puntos OSCAR BRUJA) -4)
        (= (suma-puntos OSCAR PROFESOR) -3)
        (= (suma-puntos OSCAR PRINCIPE) -1)
        (= (suma-puntos ROSA LEONARDO) -1)
        (= (suma-puntos ROSA PRINCESA) -10)
        (= (suma-puntos ROSA BRUJA) -5)
        (= (suma-puntos ROSA PROFESOR) -4)
        (= (suma-puntos ROSA PRINCIPE) -3)
        (= (suma-puntos MANZANA LEONARDO) -3)
        (= (suma-puntos MANZANA PRINCESA) -1)
        (= (suma-puntos MANZANA BRUJA) -10)
        (= (suma-puntos MANZANA PROFESOR) -5)
        (= (suma-puntos MANZANA PRINCIPE) -4)
        (= (suma-puntos ALGORITMO LEONARDO) -4)
        (= (suma-puntos ALGORITMO PRINCESA) -3)
        (= (suma-puntos ALGORITMO BRUJA) -1)
        (= (suma-puntos ALGORITMO PROFESOR) -10)
        (= (suma-puntos ALGORITMO PRINCIPE) -5)
        (= (suma-puntos ORO LEONARDO) -5)
        (= (suma-puntos ORO PRINCESA) -4)
        (= (suma-puntos ORO BRUJA) -3)
        (= (suma-puntos ORO PROFESOR) -1)
        (= (suma-puntos ORO PRINCIPE) -10)

        (= (capacidad-mochila) 5)
        (= (ocupado-mochila) 0)
        (= (CONSTANTE) -1)

)
(:goal (and (UBICADO Z16 ROBOT)))
;(TIENE PRINCIPE ORO)(TIENE BRUJA MANZANA)
;(:goal (and (forall (?x - personaje)(?y - objeto)) (TIENE ?x ?y)))
;(:metric minimize (*(CONSTANTE)(puntos)))
(:metric maximize (puntos))
)
4

1 に答える 1

0

メトリックは、ポイントの逆関数である必要があります。たとえばsuma-puntos oscar leonardo、10 ポイントのボーナスがあり、次に に変わりsuma-puntos OSCAR LEONARDO 10ますsuma-puntos OSCAR LEONARDO 0。他の例でsuma-puntos BRUJA OSCAR 6suma-puntos BRUJA OSCAR 4、問題のメトリックでのペナルティを最小限に抑えます。これらのコードで:

(= (puntos) 50)
....
(:metric maximize (puntos))

編集:

メトリックは負である必要があります。そうしないと、Metric-ff によってエラーが返されます: メトリックが間違った方向に変化します。

于 2016-07-25T16:41:18.057 に答える