John Slade
John Slade

Reputation: 1

Struggling with a PDDL Error, no plan will solve it

I am trying to get my PDDL plan to run, and after going through a few iterations I have the code running without any syntax errors, but when attempting to plan, I get the following error. "ff: goal can be simplified to FALSE. No plan will solve it"

I'm sure there's something wrong with my logic but I can't for the life of me find the issue. Basic premise is a delivery drone picking

Domain:

(define (domain delivery-drone)
    (:predicates
        (needs-package ?house)
        (package-received ?house)
        (is-house ?house)
        (is-drone ?drone)
        (at-station ?drone)
        (carrying-package ?drone)
        (at-house ?drone)
        (is-package ?package)
        (being-carried ?package)
        (tobe-delivered ?package)
        (package-delivered ?package)
        (is-station ?station)
        (is-empty ?drone))
        
    (:action pickup-package
        :parameters (?drone ?package)
        :precondition (and (is-drone ?drone)
                           (is-package ?package)
                           (at-station ?drone)
                           (tobe-delivered ?package)
                           (is-empty ?drone))
        :effect (and (carrying-package ?drone)
                     (being-carried ?package)
                     (not (is-empty ?drone))))
    
    (:action deliver-package
        :parameters (?drone ?house ?package ?station)
        :precondition (and  (is-drone ?drone)
                            (is-station ?station)
                            (is-house ?house)
                            (at-station ?drone)
                            (carrying-package ?drone)
                            (needs-package ?house))
        :effect (and (is-empty ?drone)
                     (package-delivered ?package)
                     (package-received ?house)
                     (at-house ?drone)
                     (not (carrying-package ?drone))
                     (not (needs-package ?house))
                     (not (tobe-delivered ?package))
                     (not (being-carried ?package))
                     (not (at-station ?drone))))
                          
    (:action fly-station
        :parameters (?drone ?house ?station)
        :precondition (and  (is-drone ?drone)
                            (is-house ?house)
                            (is-station ?station)
                            (at-house ?drone)
                            (is-empty ?drone)
                            )
        :effect (and (at-station ?drone)
                     (not (at-house ?drone)))))

Problem:

(define (problem delivery-drone-6houses)
    (:domain delivery-drone)
    (:objects drone station house-a house-b house-c house-d house-e house-f package-a package-b package-e package-f)
    (:init (is-drone drone)
           (is-station station)
           (is-house house-a)
           (is-house house-b)
           (is-house house-c)
           (is-house house-d)
           (is-house house-e)
           (is-house house-f)
           (is-package package-a)
           (is-package package-b)
           (is-package package-e)
           (is-package package-f)
           (needs-package house-a)
           (needs-package house-b)
           (needs-package house-e)
           (needs-package house-f)
           (is-empty drone)
           (tobe-delivered package-a)
           (tobe-delivered package-b)
           (tobe-delivered package-e)
           (tobe-delivered package-f))
    (:goal (and
           (package-received house-a)
           (package-received house-b)
           (package-received house-e)
           (package-received house-f))))

Any tips or advice would be much appreciated.

Upvotes: 0

Views: 351

Answers (1)

Victor Paléologue
Victor Paléologue

Reputation: 2352

Drones are not in stations and cannot get there unless they are at a house. Try adding: (at-station drone) in your (:init).

Upvotes: 0

Related Questions