Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem trying to run STP and TP #8

Open
AlejandroTorresMunoz opened this issue Jan 18, 2023 · 17 comments
Open

Problem trying to run STP and TP #8

AlejandroTorresMunoz opened this issue Jan 18, 2023 · 17 comments

Comments

@AlejandroTorresMunoz
Copy link

Hello!

I've been trying in the past days to run the different planners that are available with a domain I've created, but I'm having a problem when I try to run STP and TP.

Traceback (most recent call last): File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py", line 683, in <module> main() File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py", line 673, in main sas_task = pddl_to_sas(task) File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py", line 517, in pddl_to_sas reachable_action_params) = instantiate.explore(task) File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/instantiate.py", line 78, in explore return instantiate(task, model) File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/instantiate.py", line 58, in instantiate task.use_min_cost_metric) File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/pddl/actions.py", line 97, in instantiate cost = int(self.cost.instantiate(var_mapping, init_facts).expression.value) File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/pddl/f_expression.py", line 95, in instantiate expression = self.expression.instantiate(var_mapping, init_facts) File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/pddl/f_expression.py", line 68, in instantiate assert False, "Could not find instantiation for PNE!" AssertionError: Could not find instantiation for PNE!

@ertsiger
Copy link
Member

Hi @AlejandroTorresMunoz,

I don't remember seeing this error before. Would you be able to share your domain with us so that we can reproduce the error?

@AlejandroTorresMunoz
Copy link
Author

AlejandroTorresMunoz commented Jan 19, 2023

Hi @ertsiger

Sure, here it is. The domain it's a simulation of a planning system of firefighters.

`(define (domain firedom)
(
:requirements :typing :durative-actions :fluents
)
(:types
location locatable - object
truck firefighter - locatable)

(:functions
(distance ?initial - location ?final - location) ;Distancia entre dos barrios
(speed ?t - truck) ;Velocidad de un camión
(capacity ?t - truck) ;Capacidad de agua de un camión, entre 0 y 100
;(people-in ?t - truck) ; Cuánta gente hay dentro de un camión
)

(:predicates
(is-full ?truck - truck) ;Para indicar que un camión tiene agua
(is-fire ?loc - location)
(not-fire ?loc - location)
(at ?truck - locatable ?loc - location)
(at-person ?firefighter - locatable ?loc - location)
(has-pipe ?loc - location) ; Para determinar si una localización tiene agua para rellenar un camión
(is-driven ?truck - truck ?firefighter - firefighter) ;Para determinar si un camión está siendo conducido o no
)

(:durative-action GET-IN ; Acción para que un bombero se suba a un camión
:parameters (?truck - truck ?firefighter - firefighter ?loc - location)
:duration (= ?duration 5)
:condition (and
(at start (at ?truck ?loc))
(at start (at-person ?firefighter ?loc))
)
:effect (and
(at end (is-driven ?truck ?firefighter))
(at end (not(at-person ?firefighter ?loc)))
)
)

(:durative-action GET-OFF ;Acción para que un bombero se baje de un camión
:parameters (?truck - truck ?firefighter - firefighter ?loc - location)
:duration (= ?duration 5)
:condition (and
(at start (at ?truck ?loc)) ;EL camión se debe encontrar en una localización
(at start (is-driven ?truck ?firefighter)) ;El camión debe contener un bombero
)
:effect (and
(at end (not(is-driven ?truck ?firefighter)))
(at end (at-person ?firefighter ?loc))
)
)

(:durative-action MOVE-TRUCK ; Acción para mover un camión de un barrio a otro
:parameters (?truck - truck ?loc_from - location ?loc_to - location ?firefighter - firefighter)
:duration (= ?duration (/ (distance ?loc_from ?loc_to) (speed ?truck))) ;La duración depende de la distancia entre dos barrios y la velocidad media de los camiones
:condition (and
(at start (is-driven ?truck ?firefighter)) ;El camión debe ser conducido por un bombero
(at start (at ?truck ?loc_from)) ; El camión se debe encontrar en la localización del fuego
)
:effect (and
(at end(not(at ?truck ?loc_from)))
(at end (at ?truck ?loc_to))
)
)

(:durative-action PUT-OUT ; Acción para apagar un fuego
:parameters (?loc_fire - location ?truck - truck ?firefighter - firefighter)
:duration (= ?duration 300)
:condition (and
(at start (is-driven ?truck ?firefighter))
(at start (is-fire ?loc_fire))
(at start (not(not-fire ?loc_fire)))
(at start (at ?truck ?loc_fire))
(at start (is-full ?truck))
)
:effect (and
(at end (not(is-fire ?loc_fire)))
(at end (not-fire ?loc_fire))
(at end (not(is-full ?truck)))
)
)

(:durative-action REFILL-WATER ; Acción para rellenar el agua de un camión
:parameters (?truck - truck ?loc - location)
:duration (= ?duration 300)
:condition (and
(at start (has-pipe ?loc)) ;Debe haber agua en la localización en la que se encuentra el camión
(at start (at ?truck ?loc))
(at start (not(is-full ?truck))) ;El camión debe estar vacío de agua
)
:effect (and
(at end (is-full ?truck))
)
)

)`

And the problem :

`;Todos los camiones disponibles en sus estaciones
;Todos los camiones con agua
;Todos los bomberos disponibles
;Apagar fuego en Triana y PinoMontano

(define (problem DLOG-1-1-1-2-03092014122955)
(:domain firedom)
(:objects
CamSanBernardo - truck ;Camion de la estacion de San Bernardo
CamPolSur - truck ;Camión de la estación del Polígono Sur
CamPinoMontano - truck ;Camión de la estación de PinoMontano
SanBernardo Triana PolSur PinoMontano Centro Macarena - location ;Barrios
FSanBernardo - firefighter
FPolSur - firefighter
FPinoMontano - firefighter
)
(:init
(=(distance SanBernardo Triana) 3100) ;Distancia entre barrios - San Bernardo
(=(distance Triana SanBernardo) 3100)
(=(distance SanBernardo PolSur) 4600)
(=(distance PolSur SanBernardo) 4600)
(=(distance SanBernardo PinoMontano) 6500)
(=(distance PinoMontano SanBernardo) 6500)
(=(distance SanBernardo Centro) 3000)
(=(distance Centro SanBernardo) 3000)
(=(distance SanBernardo Macarena) 3600)
(=(distance Macarena SanBernardo) 3600)

(=(distance Triana PolSur) 6600) ;Distancia entre barrios - Triana
(=(distance PolSur Triana) 6600)
(=(distance Triana PinoMontano) 8900) 
(=(distance PinoMontano Triana) 8900)
(=(distance Triana Centro) 650) 
(=(distance Centro Triana) 650)
(=(distance Triana Macarena) 4900) 
(=(distance Macarena Triana) 4900)

(=(distance PolSur PinoMontano) 11400) ;Distancia entre barrios - Polígono Sur 
(=(distance PinoMontano PolSur) 11400)
(=(distance PolSur Centro) 5200) 
(=(distance Centro PolSur) 5200)
(=(distance PolSur Macarena) 8500) 
(=(distance Macarena PolSur) 8500)

(=(distance PinoMontano Centro) 7500) ;Distancia entre barrios - PinoMontano 
(=(distance Centro PinoMontano) 7500)
(=(distance PinoMontano Macarena) 4100) 
(=(distance Macarena PinoMontano) 4100)

(=(distance Centro Macarena) 2800) ;Distancia entre barrios - Centro Histórico
(=(distance Macarena Centro) 2800)

;Estaciones de bomberos
(has-pipe SanBernardo) ;Estación de San Bernardo
(has-pipe PolSur) ;Estación del polígono sur
(has-pipe PinoMontano) ;Estación de PinoMontano


;Ubicación de los camiones de bomberos. Suponemos que cada camión se encuentra en su estación
(at CamSanBernardo SanBernardo)
(at CamPolSur PolSur)
(at CamPinoMontano PinoMontano)

;Velocidades medias de los camiones
(=(speed CamSanBernardo) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h
(=(speed CamPolSur) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h
(=(speed CamPinoMontano) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h

;Capacidades de agua de los camiones
(=(capacity CamSanBernardo) 100) ;Capacidad de agua del camión
(=(capacity CamPolSur) 100) ;Capacidad de agua del camión
(=(capacity CamPinoMontano) 100) ;Capacidad de agua del camión

;Depósitos de agua de los camiones
(is-full CamSanBernardo) 
(is-full CamPolSur) 
(is-full CamPinoMontano) 

;Ubicación de los bomberos
(at-person FSanBernardo SanBernardo)
(at-person FPolSur PolSur)
(at-person FPinoMontano PinoMontano)

;Distribución de los fuegos en la ciudad
;(is-fire SanBernardo)
(is-fire Triana)
;(not not-fire Triana)
;(is-fire PolSur)
(is-fire PinoMontano)
;(is-fire Centro)
;(is-fire Macarena)

)
(:goal (and
;(not-fire SanBernardo)
(not-fire Triana)
;(not-fire PolSur)
(not-fire PinoMontano)
;(not-fire Centro)
;(not-fire Macarena)
;(is-full CamSanBernardo)
;(is-full CamPolSur)
;(is-full CamPinoMontano)
)
)

)`

@AlejandroTorresMunoz
Copy link
Author

When I try to execute stp I get the following error :

python bin/plan.py stp-5 --time 120 --iterated v3.3/domain3.pddl v3.3/p0.pddl
GENERACION DEL PROBLEMA REALIZADA
Compiling problem: /home/alejandro/Escritorio/proyecto/temporal-planning/bin/compileTempoParallel tdom.pddl tins.pddl 5 > dom.pddl 2> ins.pddl
COMPILACION DEL PROBLEMA REALIZADA
REALIZANDO FD
Compiling temporal problem: python /home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/fast-downward.py --build release32 --alias tp-lama --overall-time-limit 120s --overall-memory-limit 4096 --plan-file sas_plan dom.pddl ins.pddl
INFO Running translator.
INFO translator input: ['dom.pddl', 'ins.pddl']
INFO translator arguments: []
INFO translator time limit: 119.97s
INFO translator memory limit: 4096 MB
INFO callstring: /usr/bin/python /home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py dom.pddl ins.pddl
time limit 119.97 -> (120, 121)
Parsing...
Error: Could not parse domain file: dom.pddl
Reason: Expected '(', got creating..
Command '['/usr/bin/python', '/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py', 'dom.pddl', 'ins.pddl']' returned non-zero exit status 1
FD REALIZADA
Validating plan: /home/alejandro/Escritorio/proyecto/temporal-planning/VAL/bin/Validate -v -t 0.001 tdom.pddl tins.pddl tmp_sas_plan.2 > plan.validation

And when I try to execute tempo :

python bin/plan.py tempo-5 --time 120 --iterated v3.3/domain3.pddl v3.3/p0.pddl
GENERACION DEL PROBLEMA REALIZADA
Compiling problem: /home/alejandro/Escritorio/proyecto/temporal-planning/bin/compileTempo tdom.pddl tins.pddl 5 > dom.pddl 2> ins.pddl
COMPILACION DEL PROBLEMA REALIZADA
REALIZANDO FD
Compiling temporal problem: python /home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/fast-downward.py --build release32 --alias tp-lama --overall-time-limit 120s --overall-memory-limit 4096 --plan-file sas_plan dom.pddl ins.pddl
INFO Running translator.
INFO translator input: ['dom.pddl', 'ins.pddl']
INFO translator arguments: []
INFO translator time limit: 119.99s
INFO translator memory limit: 4096 MB
INFO callstring: /usr/bin/python /home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py dom.pddl ins.pddl
time limit 119.99 -> (120, 121)
Parsing...
Parsing: [0.020s CPU, 0.024s wall-clock]
Normalizing task... [0.000s CPU, 0.002s wall-clock]
Instantiating...
Generating Datalog program... [0.000s CPU, 0.002s wall-clock]
Normalizing Datalog program...
Normalizing Datalog program: [0.010s CPU, 0.010s wall-clock]
Preparing model... [0.010s CPU, 0.005s wall-clock]
Generated 333 rules.
Computing model... [0.080s CPU, 0.080s wall-clock]
1769 relevant atoms
2497 auxiliary atoms
4266 final queue length
15059 total queue pushes
Completing instantiation... Traceback (most recent call last):
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py", line 683, in
main()
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py", line 673, in main
sas_task = pddl_to_sas(task)
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py", line 517, in pddl_to_sas
reachable_action_params) = instantiate.explore(task)
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/instantiate.py", line 78, in explore
return instantiate(task, model)
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/instantiate.py", line 58, in instantiate
task.use_min_cost_metric)
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/pddl/actions.py", line 97, in instantiate
cost = int(self.cost.instantiate(var_mapping, init_facts).expression.value)
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/pddl/f_expression.py", line 95, in instantiate
expression = self.expression.instantiate(var_mapping, init_facts)
File "/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/pddl/f_expression.py", line 68, in instantiate
assert False, "Could not find instantiation for PNE!"
AssertionError: Could not find instantiation for PNE!
Command '['/usr/bin/python', '/home/alejandro/Escritorio/proyecto/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py', 'dom.pddl', 'ins.pddl']' returned non-zero exit status 1
FD REALIZADA
Validating plan: /home/alejandro/Escritorio/proyecto/temporal-planning/VAL/bin/Validate -v -t 0.001 tdom.pddl tins.pddl tmp_sas_plan.2 > plan.validation

@ertsiger
Copy link
Member

ertsiger commented Jan 19, 2023

Thanks, @AlejandroTorresMunoz, the file has been very helpful.

After a few checks, I saw that the reason is that the compiled classical planning file has a too high cost (3e+06) for PUSH-PUT_OUT and PUSH-REFILL_WATER. I guess Fast Downward, which we use to solve the compiled problems, cannot deal with these high numbers. Please see the following comment! Note this number comes from multiplying 10000 by the original cost in your domain file (300), which is done here and here.

I have checked what happens if I make the original cost smaller (e.g. 30) and it works, so I guess a possible workaround is to rescale these costs (I guess you'll need to be careful with the duration/costs for MOVE-TRUCK though.

Let us know if you have any other doubts/problems.

@ertsiger
Copy link
Member

Sorry, just figured out that the problem is not with the number, but with how it is expressed. If I run Fast Downward using 3000000 instead of 3e+06 it works. The plan I get is:

0.000: ( get_in camsanbernardo fsanbernardo sanbernardo ) [5.0000]
0.000: ( get_in campinomontano fpinomontano pinomontano ) [5.0000]
5.002: ( put_out pinomontano campinomontano fpinomontano ) [300.0000]
5.002: ( move_truck camsanbernardo sanbernardo triana fsanbernardo ) [223.3439]
305.002: ( put_out triana camsanbernardo fsanbernardo ) [300.0000]

I will check now if I can modify the code such that the compiled temporal planning problem does not use scientific notation.

Sorry for the confusion! I'll try to have this done as soon as possible, I need to familiarize myself with the code again :)

@ertsiger
Copy link
Member

ertsiger commented Jan 19, 2023

Hi again @AlejandroTorresMunoz,

the problem should be now solved :) For simplicity, I would just clone the repository again and start from scratch (although just pulling should be enough, I presume). Please, let us know if it works for you, we are happy to help further.

Sorry for the inconvenience.

@AlejandroTorresMunoz
Copy link
Author

Thanks for your answer @ertsiger

I've try with the new version and it works! However, I'm having the following problem with the stp planner when I try to execute the following :

python bin/plan.py stp-10 v3.3/domain3.pddl v3.3/p0.pddl
Compiling problem: /home/alejandro/Escritorio/proyecto2/temporal-planning/bin/compileTempoParallel tdom.pddl tins.pddl 10 > dom.pddl 2> ins.pddl
Compiling temporal problem: python /home/alejandro/Escritorio/proyecto2/temporal-planning/fd_copy/fast-downward.py --build release32 --alias tp-lama --overall-time-limit 3600s --overall-memory-limit 4096 --plan-file sas_plan dom.pddl ins.pddl
INFO Running translator.
INFO translator input: ['dom.pddl', 'ins.pddl']
INFO translator arguments: []
INFO translator time limit: 3599.96s
INFO translator memory limit: 4096 MB
INFO callstring: /usr/bin/python /home/alejandro/Escritorio/proyecto2/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py dom.pddl ins.pddl
time limit 3599.96 -> (3600, 3601)
Parsing...
Error: Could not parse domain file: dom.pddl
Reason: Expected '(', got creating..
Command '['/usr/bin/python', '/home/alejandro/Escritorio/proyecto2/temporal-planning/fd_copy/builds/release32/bin/translate/translate.py', 'dom.pddl', 'ins.pddl']' returned non-zero exit status 1
Validating plan: /home/alejandro/Escritorio/proyecto2/temporal-planning/VAL/bin/Validate -v -t 0.001 tdom.pddl tins.pddl tmp_sas_plan.1 > plan.validation

That error doesn't happen with the other planners.

@AlejandroTorresMunoz
Copy link
Author

AlejandroTorresMunoz commented Jan 19, 2023

Hi again @ertsiger

I've detected another bug that maybe could be a problem of how I write the domain or nor, I'm not sure. Specifically, I've started to add functions to my domain, and those works without any problems if I use it as duration or effects. However, if I try to use it as preconditions I get the same error I posted below. Here's an example of my code :

`(define (domain firedom)
(
:requirements :typing :durative-actions :conditional-effects :negative-preconditions :universal-preconditions ;:numeric-fluents ;:fluents :numeric-fluents
)
(:types
location locatable aux - object
truck firefighter - locatable)

(:functions
(distance ?initial - location ?final - location) ;Distancia entre dos barrios
(speed ?t - truck) ;Velocidad de un camión
(capacity ?t - truck) ;Capacidad de un camión de tener agua
(max-capacity ?t - truck) ;Capacidad máxima de agua de un camión
)

(:predicates
(is-full ?truck - truck) ;Para indicar que un camión tiene agua
(is-fire ?loc - location)
(not-fire ?loc - location)
(at ?locatable - locatable ?loc - location) ; Para indicar si un camión o grupo de bomberos se encuentra en una localización
(has-pipe ?loc - location) ; Para determinar si una localización tiene agua para rellenar un camión
(is-driven ?truck - truck ?firefighter - firefighter) ;Para determinar si un camión está siendo conducido o no
)

(:durative-action GET-IN ; Acción para que un bombero se suba a un camión
:parameters (?truck - truck ?firefighter - firefighter ?loc - location)
:duration (= ?duration 5)
:condition (and
(at start (at ?truck ?loc)) ;Durante toda la acción el camión se debe encontrar en la localización
(over all (at ?truck ?loc))
(at end (at ?truck ?loc))
(at start (at ?firefighter ?loc)) ;Durante toda la acción el bombero se debe encontrar en la localización
(over all (at ?firefighter ?loc))
;(at end (at ?firefighter ?loc))
)
:effect (and
;(at start (at ?firefighter ?loc))
(at end (is-driven ?truck ?firefighter)) ;El camión es finalmente conducido por el bombero
(at end (not (at ?firefighter ?loc))) ;Al final el bombero ya no se encuentra en la localización
;(at end (at ?firefighter ?loc))
;(at end (increase (people-in ?truck) 1))
)
)

(:durative-action GET-OFF ;Acción para que un bombero se baje de un camión
:parameters (?truck - truck ?firefighter - firefighter ?loc - location)
:duration (= ?duration 5)
:condition (and
(at start (at ?truck ?loc)) ;EL camión se debe encontrar en una localización
(over all (at ?truck ?loc))
(at end (at ?truck ?loc))
;(at start (>=(people-in ?truck) 1))
(at start (is-driven ?truck ?firefighter)) ;El camión debe contener un bombero
(over all (is-driven ?truck ?firefighter))
)
:effect (and
(at end (not (is-driven ?truck ?firefighter))) ;Al final el bombero deja de conducir el camión
(at end (at ?firefighter ?loc)) ;Al final el bombero se encuentra en la ubicación
;(at end (decrease (people-in ?truck) 1))
)
)

(:durative-action MOVE-TRUCK ; Acción para mover un camión de un barrio a otro
:parameters (?truck - truck ?loc_from - location ?loc_to - location ?firefighter - firefighter)
:duration (= ?duration (/ (distance ?loc_from ?loc_to) (speed ?truck))) ;La duración depende de la distancia entre dos barrios y la velocidad media de los camiones
;:duration (= ?duration 30) ;La duración depende de la distancia entre dos barrios y la velocidad media de los camiones
:condition (and
;(at start (>=(people-in ?truck) 2))
(at start (is-driven ?truck ?firefighter)) ;El camión debe ser conducido por un bombero durante toda la acción
(over all (is-driven ?truck ?firefighter))
(at end (is-driven ?truck ?firefighter))
(at start (at ?truck ?loc_from)) ; El camión se debe encontrar en la localización del fuego
)
:effect (and
(at start(not(at ?truck ?loc_from))) ;Al principio de la acción se deja de encontrar en el origen
(at end (at ?truck ?loc_to)) ;Al final de la acción se encuentra el camión en la localización objetivo
)
)

(:durative-action PUT-OUT ; Acción para apagar un fuego
:parameters (?loc_fire - location ?truck - truck ?firefighter - firefighter)
:duration (= ?duration 30)
:condition (and
(at start (is-driven ?truck ?firefighter)) ;El camión debe contener un bombero en todo momento
(over all (is-driven ?truck ?firefighter))
(at end (is-driven ?truck ?firefighter))
(at start (is-fire ?loc_fire)) ;Debe haber fuego en el barrio
(at start (not(not-fire ?loc_fire)))
(over all (not(not-fire ?loc_fire)))
(at start (at ?truck ?loc_fire)) ;Durante todo el proceso debe estar el camión en la localización del fuego
(over all (at ?truck ?loc_fire))
(at end (at ?truck ?loc_fire))
(at start (is-full ?truck)) ;El camión debe estar lleno durante toda la acción
(over all (is-full ?truck))
)
:effect (and
(at end (not(is-fire ?loc_fire)))
(at end (not-fire ?loc_fire))
(at end (not(is-full ?truck)))
)
)

(:durative-action REFILL-WATER ; Acción para rellenar el agua de un camión
:parameters (?truck - truck ?loc - location)
:duration (= ?duration 300)
:condition (and
(at start (has-pipe ?loc)) ;Debe haber agua en la localización en la que se encuentra el camión
(over all (has-pipe ?loc))
(at end (has-pipe ?loc))
(at start (at ?truck ?loc)) ;Durante toda la acción debe estar el camión en la localización con agua
(over all (at ?truck ?loc))
(at end (at ?truck ?loc))
(at start (not(is-full ?truck))) ;El camión debe estar vacío de agua
(over all (<= (capacity ?truck)(max-capacity ?truck)))
)
:effect (and
(at end (is-full ?truck))
(at end (increase (capacity ?truck) (-(max-capacity ?truck)(capacity ?truck)))) ;Se incrementa la capacidad del camión hasta el máximo
)
)

)`

As you can notice, in the action REFILL-WATER, the last condition is that the capacity of the truck is under the maximum value during the action (over all). If I change that condition to be satisfied at the end of the action, it still works(at end). However, if I settle that any condition that involves functions must be satisfied at the start(at start) of an action, I get the error I explain before.

@ertsiger
Copy link
Member

Hi @AlejandroTorresMunoz, are you using the same problem file? I'm not being able to reproduce the error right now, but probably I have something incorrectly set.

@AlejandroTorresMunoz
Copy link
Author

Sorry @ertsiger . Here is the problem, I've add the lines to declare the initial values of the functions associated with the trucks.

`
;Todos los camiones disponibles en sus estaciones
;Todos los camiones con agua
;Todos los bomberos disponibles
;Apagar fuego en Triana y PinoMontano

(define (problem DLOG-1-1-1-2-03092014122955)
(:domain firedom)
(:objects
CamSanBernardo - truck ;Camion de la estacion de San Bernardo
CamPolSur - truck ;Camión de la estación del Polígono Sur
CamPinoMontano - truck ;Camión de la estación de PinoMontano
SanBernardo Triana PolSur PinoMontano Centro Macarena - location ;Barrios
FSanBernardo - firefighter
FPolSur - firefighter
FPinoMontano - firefighter
)
(:init

(=(distance SanBernardo Triana) 3100) ;Distancia entre barrios - San Bernardo
(=(distance Triana SanBernardo) 3100)
(=(distance SanBernardo PolSur) 4600) 
(=(distance PolSur SanBernardo) 4600)
(=(distance SanBernardo PinoMontano) 6500) 
(=(distance PinoMontano SanBernardo) 6500)
(=(distance SanBernardo Centro) 3000) 
(=(distance Centro SanBernardo) 3000)
(=(distance SanBernardo Macarena) 3600) 
(=(distance Macarena SanBernardo) 3600)

(=(distance Triana PolSur) 6600) ;Distancia entre barrios - Triana
(=(distance PolSur Triana) 6600)
(=(distance Triana PinoMontano) 8900) 
(=(distance PinoMontano Triana) 8900)
(=(distance Triana Centro) 650) 
(=(distance Centro Triana) 650)
(=(distance Triana Macarena) 4900) 
(=(distance Macarena Triana) 4900)

(=(distance PolSur PinoMontano) 11400) ;Distancia entre barrios - Polígono Sur 
(=(distance PinoMontano PolSur) 11400)
(=(distance PolSur Centro) 5200) 
(=(distance Centro PolSur) 5200)
(=(distance PolSur Macarena) 8500) 
(=(distance Macarena PolSur) 8500)

(=(distance PinoMontano Centro) 7500) ;Distancia entre barrios - PinoMontano 
(=(distance Centro PinoMontano) 7500)
(=(distance PinoMontano Macarena) 4100) 
(=(distance Macarena PinoMontano) 4100)

(=(distance Centro Macarena) 2800) ;Distancia entre barrios - Centro Histórico
(=(distance Macarena Centro) 2800)

;Estaciones de bomberos
(has-pipe SanBernardo) ;Estación de San Bernardo
(has-pipe PolSur) ;Estación del polígono sur
(has-pipe PinoMontano) ;Estación de PinoMontano


;Ubicación de los camiones de bomberos. Suponemos que cada camión se encuentra en su estación
(at CamSanBernardo SanBernardo)
(at CamPolSur PolSur)
(at CamPinoMontano PinoMontano)

;Velocidades medias de los camiones
(=(speed CamSanBernardo) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h
(=(speed CamPolSur) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h
(=(speed CamPinoMontano) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h

;Capacidades de agua de los camiones
(=(max-capacity CamSanBernardo) 100) ;Capacidad máxima de agua del camión
(=(capacity CamSanBernardo) 30) ;Capacidad de agua del camión
;(=(capacity CamPolSur) 100) ;Capacidad de agua del camión
;(=(capacity CamPinoMontano) 100) ;Capacidad de agua del camión

;Depósitos de agua de los camiones
(is-full CamSanBernardo) 
(is-full CamPolSur) 
(is-full CamPinoMontano) 

;Ubicación de los bomberos
(at FSanBernardo SanBernardo)
(at FPolSur PolSur)
(at FPinoMontano PinoMontano)


;Distribución de los fuegos en la ciudad
;(is-fire SanBernardo)
(is-fire Triana)
;(not not-fire Triana)
;(is-fire PolSur)
(is-fire PinoMontano)
;(is-fire Centro)
;(is-fire Macarena)

)
(:goal (and
;(not-fire SanBernardo)
;(not (is-fire ?Triana))
(not-fire Triana)
;(not-fire PolSur)
;(not-fire PinoMontano)
;(not-fire Centro)
;(not-fire Macarena)
;(is-full CamSanBernardo)
;(is-full CamPolSur)
;(is-full CamPinoMontano)
)
)
(:metric minimize (total-time))

)
`

@ertsiger
Copy link
Member

Thanks @AlejandroTorresMunoz, I'm checking and I think I may have detected the cause; however, I'm trying to figure out if any amendments I make will solve the problem and not break other things. I hope I can provide an answer today, I may have to speak to other people in the group about it.

@ertsiger
Copy link
Member

Hi again @AlejandroTorresMunoz, we are discussing this internally. Hope we can give you an answer soon. Sorry for the inconvenience!

@AlejandroTorresMunoz
Copy link
Author

Sorry @ertsiger

I've been working the rest of the planners, and I'm having a problem with she. The message that I get in the file dom.pddl is the following. Might you know which could be the cause of the error 👍

Creating a ground condition [760500046,1128355397,1163149653,68,2037194976,21953,2037194980,21953,2037194980,21953,2037178016,21953,33,0,3,0,0,0,0,0,81,0,20115507...

@ertsiger
Copy link
Member

Is dom.pddl the same domain file you sent last time? I have tried it but I don't get this error, but another one (which might be related to the one you obtain with STP). The problem with the domain you sent last time is that it involves numerical planning, which is a feature not supported by Fast Downward (if I'm not wrong). We use Fast Downward to solve the transformed temporal planning problems, so this is an issue.

Would it be possible to use an alternative encoding? For example (and apologies if I misunderstand), you could set the capacity of the track directly to the maximum instead of computing how much you have to increase it to reach the maximum (which is what you are doing now, increase (capacity ?truck) (-(max-capacity ?truck)(capacity ?truck)))).

Sorry for the inconvenience, we are happy to discuss any alternatives :)

P.S.: Thanks to your comment we have realized there are some refactoring we need to do to support negative preconditions, we'll try to make the amendments soon. However, this is independent from the numerical planning issue outlined above.

@AlejandroTorresMunoz
Copy link
Author

Thanks for the answer about the issue with the numerical plannig, I will reconsider the domain again.

Othewise, about the last problem I got, the domain is the following :

`
(define (domain firedom)
(
:requirements :typing :durative-actions :fluents :conditional-effects :negative-preconditions
)
(:types
neighborhood building locatable - object
;policecar - vehicle
truck - vehicle
; policeman - person
firefighter - person
; policecar truck policeman firefighter - locatable
vehicle person - locatable
)

(:functions
(distance ?initial - neighborhood ?final - neighborhood) ;Distancia entre dos barrios
(speed ?t - vehicle) ;Velocidad de un camión
;(building-count-firefighter ?building - building) ; Número de bomberos en un edificio
;(max-time)
;(people-in ?t - truck) ;Número de bomberos en un camión
)

(:predicates
(is-full ?truck - truck) ;Para indicar que un camión tiene agua
(is-fire ?building - building)
(not-fire ?building - building)
(at ?loctable - locatable ?building - building) ; Para indicar si un camión o grupo de bomberos se encuentra en una localización
(has-pipe ?building - building) ; Para determinar si una localización tiene agua para rellenar un camión
(is-driven ?vehicle - vehicle ?person - person) ;Para determinar si un camión está siendo conducido o no
; (is-ready ?person - person) ;Para determinar si un bombero está libre o no
(is-evacuated ?building - building) ;Indica si se encuentra evacuada la ubicacion
(not-evacuated ?building - building)
;(not-cordoned-off ?building - building)
(is-in ?building - building ?neighborhood - neighborhood)
;(cordoned-off ?building - building) ; Indica si un edificio ha sido acordonado o no
)

; (:action GET-IN
; :parameters (?vehicle - vehicle ?person - person ?neighborhood - neighborhood ?building - building)
; :precondition (and
; (at ?vehicle ?building)
; (at ?person ?building)
; (is-in ?building ?neighborhood)
; )
; :effect (and
; (decrease (building-count-firefighter ?building) 1)
; (is-driven ?vehicle ?person)
; (not (at ?person ?building))
; )
; )

(:durative-action GET-IN-FIREFIGHTER ; Acción para que un bombero se suba a un camión
:parameters (?vehicle - vehicle ?person - firefighter ?neighborhood - neighborhood ?building - building)
:duration (= ?duration 5)
:condition (and
(at start (at ?vehicle ?building)) ;Durante toda la acción el camión se debe encontrar en el edificio
(over all (at ?vehicle ?building))
(at end (at ?vehicle ?building))

    (at start (at ?person ?building)) ;Durante toda la acción el bombero se debe encontrar en el edificio
    (over all (at ?person ?building))

    (at start (is-in ?building ?neighborhood)) ;Durante toda la acción el edificio debe encontrarse en el barrio
    (over all (is-in ?building ?neighborhood))
    (at end (is-in ?building ?neighborhood))
)
:effect (and 
    ;(at start (decrease (building-count-firefighter ?building) 1)) ; Se decrementa el número de bomberos en ese edificio
    (at end (is-driven ?vehicle ?person)) ;El camión es finalmente conducido por el bombero
    (at end (not (at ?person ?building))) ;Al final el bombero ya no se encuentra en la localización        
)

)

; (:durative-action GET-IN-POLICEMAN ; Acción para que un bombero se suba a un camión
; :parameters (?vehicle - vehicle ?person - policeman ?neighborhood - neighborhood ?building - building)
; :duration (= ?duration 5)
; :condition (and
; (at start (at ?vehicle ?building)) ;Durante toda la acción el camión se debe encontrar en el edificio
; (over all (at ?vehicle ?building))
; (at end (at ?vehicle ?building))

; (at start (at ?person ?building)) ;Durante toda la acción el bombero se debe encontrar en el edificio
; (over all (at ?person ?building))

; (at start (is-in ?building ?neighborhood)) ;Durante toda la acción el edificio debe encontrarse en el barrio
; (over all (is-in ?building ?neighborhood))
; (at end (is-in ?building ?neighborhood))
; )
; :effect (and
; (at end (is-driven ?vehicle ?person)) ;El camión es finalmente conducido por el bombero
; (at end (not (at ?person ?building))) ;Al final el bombero ya no se encuentra en la localización
; )
; )

; (:action GET-OFF
; :parameters (?vehicle - vehicle ?person - person ?building - building ?neighborhood - neighborhood)
; :precondition (and
; (at ?vehicle ?building)
; (is-driven ?vehicle ?person)
; (is-in ?building ?neighborhood)
; )
; :effect (and
; (increase (building-count-firefighter ?building) 1)
; (not (is-driven ?vehicle ?person))
; (at ?person ?building)
; )
; )

(:durative-action GET-OFF-FIREFIGHTER ;Acción para que un bombero se baje de un camión
:parameters (?vehicle - vehicle ?person - firefighter ?building - building ?neighborhood - neighborhood)
:duration (= ?duration 5)
:condition (and
(at start (at ?vehicle ?building)) ;EL camión se debe encontrar en una localización
(over all (at ?vehicle ?building))
(at end (at ?vehicle ?building))

    (at start (is-driven ?vehicle ?person)) ;El camión debe contener un bombero 
    (over all (is-driven ?vehicle ?person))

    (at start (is-in ?building ?neighborhood)) ;Durante toda la acción el edificio debe encontrarse en el barrio
    (over all (is-in ?building ?neighborhood))
    (at end (is-in ?building ?neighborhood))
)
:effect (and 
    ;(at start (increase (building-count-firefighter ?building) 1)) ; Se incrementa el número de bomberos en ese edificio
    (at end (not (is-driven ?vehicle ?person))) ;Al final el bombero deja de conducir el camión
    (at end (at ?person ?building)) ;Al final el bombero se encuentra en la ubicación
    ; (at end (decrease (people-in ?vehicle) 1)) ;Disminuye en 1 el contador de bomberos en el camión
)

)

; (:durative-action GET-OFF-POLICEMAN ;Acción para que un bombero se baje de un camión
; :parameters (?vehicle - vehicle ?person - policeman ?building - building ?neighborhood - neighborhood)
; :duration (= ?duration 5)
; :condition (and
; (at start (at ?vehicle ?building)) ;EL camión se debe encontrar en una localización
; (over all (at ?vehicle ?building))
; (at end (at ?vehicle ?building))

; (at start (is-driven ?vehicle ?person)) ;El camión debe contener un bombero
; (over all (is-driven ?vehicle ?person))

; (at start (is-in ?building ?neighborhood)) ;Durante toda la acción el edificio debe encontrarse en el barrio
; (over all (is-in ?building ?neighborhood))
; (at end (is-in ?building ?neighborhood))
; )
; :effect (and
; (at end (not (is-driven ?vehicle ?person))) ;Al final el bombero deja de conducir el camión
; (at end (at ?person ?building)) ;Al final el bombero se encuentra en la ubicación
; ; (at end (decrease (people-in ?vehicle) 1)) ;Disminuye en 1 el contador de bomberos en el camión
; )
; )

(:durative-action MOVE-VEHICLE ; Acción para mover un camión de un barrio a otro
:parameters (?vehicle - vehicle ?neighborhood_from - neighborhood ?neighborhood_to - neighborhood ?person - person ?building_from - building ?building_to - building)
:duration (= ?duration (/ (distance ?neighborhood_from ?neighborhood_to) (speed ?vehicle))) ;La duración depende de la distancia entre dos barrios y la velocidad media de los camiones
:condition (and
(at start (is-driven ?vehicle ?person)) ;El camión debe ser conducido por un bombero durante toda la acción
(over all (is-driven ?vehicle ?person))
(at end (is-driven ?vehicle ?person))

    (at start (at ?vehicle ?building_from)) ; El camión se debe encontrar en la localización del fuego

    (at start (is-in ?building_from ?neighborhood_from)) ;Durante toda la acción el edificio debe encontrarse en el barrio
    (over all (is-in ?building_from ?neighborhood_from))
    (at end (is-in ?building_from ?neighborhood_from))

    (at start (is-in ?building_to ?neighborhood_to)) ;Durante toda la acción el edificio debe encontrarse en el barrio
    (over all (is-in ?building_to ?neighborhood_to))
    (at end (is-in ?building_to ?neighborhood_to))

    ; (at start (= (people-in ?truck) 3))  ;3 personas en el camion
    ; (over all (= (people-in ?truck) 3)) 
    ; (at end (= (people-in ?truck) 3)) 
)
:effect (and 
    (at start(not(at ?vehicle ?building_from))) ;Al principio de la acción se deja de encontrar en el origen
    (at end (at ?vehicle ?building_to)) ;Al final de la acción se encuentra el camión en la localización objetivo
)

)

; (:durative-action CORDON-OFF ; Acción para acordonar un edificio
; :parameters (?policecar - policecar ?policeman - policeman ?building - building ?neighborhood - neighborhood)
; :duration (= ?duration 300)
; :condition (and
; (at start (is-in ?building ?neighborhood)) ; El edificio debe estar en el barrio durante toda la acción
; (over all (is-in ?building ?neighborhood))
; (at end (is-in ?building ?neighborhood))

; (at start (at ?policeman ?building)) ;El bombero debe estar durante toda la acción en el edificio
; (over all(at ?policeman ?building))
; (at end (at ?policeman ?building))

; (at start (at ?policecar ?building))
; (over all (at ?policecar ?building))
; (at end (at ?policecar ?building))

; (at start (is-fire ?building)) ;Debe haber fuego en el edificio
; ;(at start (not(not-fire ?building)))
; ;(over all (not(not-fire ?building)))

; (at start (not(cordoned-off ?building))) ;El edificio debe estar sin evacuar
; (over all (not(cordoned-off ?building)))
; ;(at start (not-cordoned-off ?building))

; ; (at start (is-ready ?firefighter)) ;El bombero debe estar inicialmente libre
; )
; :effect (and
; (at end(cordoned-off ?building)) ; Desde el inicio se indica que el edificio ha sido acordonado, para que el resto de bomberos puedan comenzar a apagar el edificio
; ; (at start (not (is-ready ?firefighter))) ;El bombero se encuentra ocupado al inicial la acción
; ; (at end (is-ready ?firefighter)) ; El bombero se deja de encontrar ocupado al finalizar la acción
; )
; )

(:durative-action PUT-OUT ; Acción para apagar un fuego
:parameters (?neighborhood_fire - neighborhood ?truck - truck ?firefighter - firefighter ?building_fire - building)
:duration (= ?duration 300)
;:duration (= ?duration (/ (max-time) (building-count-firefighter ?building_fire))) ;La duración depende de la distancia entre dos barrios y la velocidad media de los camiones
:condition (and
(at start (at ?firefighter ?building_fire)) ;Durante todo el proceso debe estar el bombero en la localización del fuego
(over all (at ?firefighter ?building_fire))
(at end (at ?firefighter ?building_fire))

    ; (at start (is-ready ?firefighter)) ; Al inicio de la acción el bombero pasa a estar ocupado

    ; (at start (cordoned-off ?building_fire)) ;ALE Al inicio el edificio debe estar acordonado
    ; (over all (cordoned-off ?building_fire))
    ; (at end (cordoned-off ?building_fire))

    (at start (is-fire ?building_fire)) ;Debe haber fuego en el edificio
    (at start (not(not-fire ?building_fire)))
    (over all (not(not-fire ?building_fire)))

    (at start (at ?truck ?building_fire)) ;Durante todo el proceso debe estar el camión en la localización del fuego
    (over all (at ?truck ?building_fire))
    (at end (at ?truck ?building_fire))

    (at start (is-full ?truck)) ;El camión debe estar lleno durante toda la acción
    (over all (is-full ?truck))

    (at start (is-evacuated ?building_fire)) ;Durante todo el proceso debe estar desalojado el sitio
    (over all (is-evacuated ?building_fire))
    (at end (is-evacuated ?building_fire))
    (at start (not (not-evacuated ?building_fire)))
    (over all (not (not-evacuated ?building_fire)))
    (at end (not (not-evacuated ?building_fire)))

    (at start (is-in ?building_fire ?neighborhood_fire)) ;Durante toda la acción el edificio debe encontrarse en el barrio
    (over all (is-in ?building_fire ?neighborhood_fire))
    (at end (is-in ?building_fire ?neighborhood_fire))
)
:effect (and 
    ; (at start (not (is-ready ?firefighter))) ; Al inicio de la acción el bombero pasa a estar ocupado
    ; (at end (is-ready ?firefighter)) ; Al final de la acción el bombero deja de estar ocupado
    ;(at end (not(is-fire ?building_fire)))
    (at end (not-fire ?building_fire))
    (at end (not(is-full ?truck)))
)

)

(:durative-action REFILL-WATER ; Acción para rellenar el agua de un camión
:parameters (?truck - truck ?neighborhood - neighborhood ?building - building)
:duration (= ?duration 300)
:condition (and
(at start (has-pipe ?building)) ;Debe haber agua en la localización en la que se encuentra el camión
(over all (has-pipe ?building))
(at end (has-pipe ?building))

    (at start (at ?truck ?building)) ;Durante toda la acción debe estar el camión en la localización con agua
    (over all (at ?truck ?building))
    (at end (at ?truck ?building))

    (at start (not(is-full ?truck))) ;El camión debe estar vacío de agua

    (at start (is-in ?building ?neighborhood)) ;Durante toda la acción el edificio debe encontrarse en el barrio
    (over all (is-in ?building ?neighborhood))
    (at end (is-in ?building ?neighborhood))
)
:effect (and 
    (at end (is-full ?truck))
)

)

(:durative-action EVACUATE-BUILDING ; Acción para evacuar edificio
:parameters (?neighborhood_fire - neighborhood ?firefighter - firefighter ?building_fire - building)
:duration (= ?duration 120)
:condition (and
(at start (at ?firefighter ?building_fire)) ;Durante todo el proceso debe estar el bombero en la localización del fuego
(over all (at ?firefighter ?building_fire))
(at end (at ?firefighter ?building_fire))

    ; (at start (is-ready ?firefighter)) ; Al inicio de la acción el bombero debe estar libre

    (at start (is-fire ?building_fire)) ;Debe haber fuego en el barrio
    (at start (not(not-fire ?building_fire)))
    (over all (not(not-fire ?building_fire)))

    (at start (not(is-evacuated ?building_fire))) ;El edificio debe estar sin evacuar
    (over all (not(is-evacuated ?building_fire)))
    (at start (not-evacuated ?building_fire))

    (at start (is-in ?building_fire ?neighborhood_fire)) ;Durante toda la acción el edificio debe encontrarse en el barrio
    (over all (is-in ?building_fire ?neighborhood_fire))
    (at end (is-in ?building_fire ?neighborhood_fire))
)
:effect (and 
    ; (at start (not (is-ready ?firefighter))) ; El bombero al prinicipio de la acción deja de estar libre
    ; (at start (is-evacuated ?building_fire)) ;;ALE Desde el principio de la acción se establece el edificio como evacuado
    ; (at end (is-ready ?firefighter)) ; El bombero al final de la acción vuelve a estar libre
    (at end (not(not-evacuated ?building_fire)))
    (at end (is-evacuated ?building_fire))
)

)

)
`

And the problem :

`
;Todos los camiones disponibles en sus estaciones
;Todos los camiones con agua
;Todos los bomberos disponibles
;Apagar fuego en Triana y PinoMontano

(define (problem DLOG-1-1-1-2-03092014122955)
(:domain firedom)
(:objects
; policecar_centro - policecar ; Coche de policía del centro
Camion_SanBernardo - truck ;Camion de la estacion de San Bernardo
; Camion_PolSur - truck ;Camión de la estación del Polígono Sur
; Camion_PinoMontano - truck ;Camión de la estación de PinoMontano
SanBernardo Triana PolSur PinoMontano Centro Macarena - neighborhood ;Barrios

SanBernardo_Parque_De_Bomberos SanBernardo_1 SanBernardo_2 - building ; SanBernardo_3 SanBernardo_4 - building
PolSur_Parque_De_Bomberos PolSur_1 PolSur_2 - building ; PolSur_3 PolSur_4 - building
PinoMontano_Parque_De_Bomberos PinoMontano_1 PinoMontano_2 - building ; PinoMontano_3 PinoMontano_4 - building
Triana_1 Triana_2 - building ; Triana_3 Triana_4 - building
; Centro_Comisaria - building
Centro_1 Centro_2 - building ; Centro_3 Centro_4 - building
Macarena_1 Macarena_2 - building ;Macarena_3 Macarena_4 - building

Bombero_SanBernardo_0 Bombero_SanBernardo_1 Bombero_SanBernardo_2 - firefighter
; Bombero_PolSur_0 Bombero_PolSur_1 Bombero_PolSur_2 - firefighter
; Bombero_PinoMontano_0 Bombero_PinoMontano_1 Bombero_PinoMontano_2 - firefighter

; Policia_Centro_0 Policia_Centro_1 - policeman
)
(:init

(=(distance SanBernardo Triana) 3100) ;Distancia entre barrios - San Bernardo
(=(distance Triana SanBernardo) 3100)
(=(distance SanBernardo PolSur) 4600) 
(=(distance PolSur SanBernardo) 4600)
(=(distance SanBernardo PinoMontano) 6500) 
(=(distance PinoMontano SanBernardo) 6500)
(=(distance SanBernardo Centro) 3000) 
(=(distance Centro SanBernardo) 3000)
(=(distance SanBernardo Macarena) 3600) 
(=(distance Macarena SanBernardo) 3600)

(=(distance Triana PolSur) 6600) ;Distancia entre barrios - Triana
(=(distance PolSur Triana) 6600)
(=(distance Triana PinoMontano) 8900) 
(=(distance PinoMontano Triana) 8900)
(=(distance Triana Centro) 650) 
(=(distance Centro Triana) 650)
(=(distance Triana Macarena) 4900) 
(=(distance Macarena Triana) 4900)

(=(distance PolSur PinoMontano) 11400) ;Distancia entre barrios - Polígono Sur 
(=(distance PinoMontano PolSur) 11400)
(=(distance PolSur Centro) 5200) 
(=(distance Centro PolSur) 5200)
(=(distance PolSur Macarena) 8500) 
(=(distance Macarena PolSur) 8500)

(=(distance PinoMontano Centro) 7500) ;Distancia entre barrios - PinoMontano 
(=(distance Centro PinoMontano) 7500)
(=(distance PinoMontano Macarena) 4100) 
(=(distance Macarena PinoMontano) 4100)

(=(distance Centro Macarena) 2800) ;Distancia entre barrios - Centro Histórico
(=(distance Macarena Centro) 2800)

; Edificios dentro de barrios
(is-in SanBernardo_Parque_De_Bomberos SanBernardo)
(is-in SanBernardo_1 SanBernardo)
(is-in SanBernardo_2 SanBernardo)
; (is-in SanBernardo_3 SanBernardo)
; (is-in SanBernardo_4 SanBernardo)

(is-in PolSur_Parque_De_Bomberos PolSur)
(is-in PolSur_1 PolSur)
(is-in PolSur_2 PolSur)
; (is-in PolSur_3 PolSur)
; (is-in PolSur_4 PolSur)

(is-in PinoMontano_Parque_De_Bomberos PinoMontano)
(is-in PinoMontano_1 PinoMontano)
(is-in PinoMontano_2 PinoMontano)
; (is-in PinoMontano_3 PinoMontano)
; (is-in PinoMontano_4 PinoMontano)

(is-in Triana_1 Triana)
(is-in Triana_2 Triana)
; (is-in Triana_3 Triana)
; (is-in Triana_4 Triana)

(is-in Centro_1 Centro)
(is-in Centro_2 Centro)
; (is-in Centro_Comisaria Centro)
; (is-in Centro_3 Centro)
; (is-in Centro_4 Centro)

(is-in Macarena_1 Macarena)
(is-in Macarena_2 Macarena)
; (is-in Macarena_3 Macarena)
; (is-in Macarena_4 Macarena)


;Estaciones de bomberos
(has-pipe SanBernardo_Parque_De_Bomberos) ;Estación de San Bernardo
; (has-pipe PolSur_Parque_De_Bomberos) ;Estación del polígono sur
; (has-pipe PinoMontano_Parque_De_Bomberos) ;Estación de PinoMontano


;Ubicación de los camiones de bomberos. Suponemos que cada camión se encuentra en su estación
(at Camion_SanBernardo SanBernardo_Parque_De_Bomberos)
; (at Camion_PolSur PolSur_Parque_De_Bomberos)
; (at Camion_PinoMontano PinoMontano_Parque_De_Bomberos)

;Ubicación comisaria
; (at policecar_centro Centro_Comisaria)

;Velocidades medias de los camiones
(=(speed Camion_SanBernardo) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h
; (=(speed Camion_PolSur) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h
; (=(speed Camion_PinoMontano) 13.88) ;Velocidad media en m/s de un camión -- > 50km/h

; (=(speed policecar_centro) 20.00) ;Velocidad media en m/s de un camión -- > 50km/h


;Capacidad de personas en camiones
; (=(people-in CamSanBernardo) 0)
; (=(people-in CamPolSur) 0)
; (=(people-in CamPinoMontano) 0)

;Capacidades de agua de los camiones
;(=(capacity CamSanBernardo) 100) ;Capacidad de agua del camión
;(=(capacity CamPolSur) 100) ;Capacidad de agua del camión
;(=(capacity CamPinoMontano) 100) ;Capacidad de agua del camión

;Depósitos de agua de los camiones
(is-full Camion_SanBernardo) 
; (is-full Camion_PolSur) 
; (is-full Camion_PinoMontano) 

;Ubicación de los bomberos
(at Bombero_SanBernardo_0 SanBernardo_Parque_De_Bomberos) ; Ubicación inicial de los bomberos de San Bernardo
(at Bombero_SanBernardo_1 SanBernardo_Parque_De_Bomberos)
(at Bombero_SanBernardo_2 SanBernardo_Parque_De_Bomberos)
; (at Bombero_PolSur_0 PolSur_Parque_De_Bomberos) ; Ubicación inicial de los bomberos del Polígono Sur
; (at Bombero_PolSur_1 PolSur_Parque_De_Bomberos)
; (at Bombero_PolSur_2 PolSur_Parque_De_Bomberos)
; (at Bombero_PinoMontano_0 PinoMontano_Parque_De_Bomberos) ; Ubicación de los bomberos de PinoMontano
; (at Bombero_PinoMontano_1 PinoMontano_Parque_De_Bomberos)
; (at Bombero_PinoMontano_2 PinoMontano_Parque_De_Bomberos)

;Conteo de bomberos en los edificios
; (=(building-count-firefighter SanBernardo_Parque_De_Bomberos) 3) ; San Bernardo
; (=(building-count-firefighter SanBernardo_1) 0)
; (=(building-count-firefighter SanBernardo_2) 0)
; (=(max-time) 300) ; Máximo de tiempo que puede tardar en apagar un fuego un solo bombero
; (=(building-count-firefighter PolSur_Parque_De_Bomberos) 3) ; Polígono Sur
; (=(building-count-firefighter PolSur_1) 0)
; (=(building-count-firefighter PolSur_2) 0)
; (=(building-count-firefighter PinoMontano_Parque_De_Bomberos) 3) ; PinoMontano
; (=(building-count-firefighter PinoMontano_1) 0)
; (=(building-count-firefighter PinoMontano_2) 0)
; (=(building-count-firefighter Triana_1) 0) ; Triana
; (=(building-count-firefighter Triana_2) 0)
; (=(building-count-firefighter Centro_1) 0) ; Centro
; (=(building-count-firefighter Centro_2) 0)
; (=(building-count-firefighter Centro_Comisaria) 0)

; (at Policia_Centro_0 Centro_Comisaria)
; (at Policia_Centro_1 Centro_Comisaria)

;Estado de los bomberos
; (is-ready FSanBernardo0) ; Estado de los bomberos de San Bernardo
; (is-ready FSanBernardo1)
; (is-ready FSanBernardo2)
; (is-ready FPolSur0) ; Estado de los bomberos del Polígono Sur
; (is-ready FPolSur1)
; (is-ready FPolSur2)
; (is-ready FPinoMontano0) ; Estado de los bomberos de PinoMontano
; (is-ready FPinoMontano1)
; (is-ready FPinoMontano2)



;Distribución de los fuegos en la ciudad
(is-fire Macarena_1)
(not-evacuated Macarena_1)
;(is-fire SanBernardo_Parque_De_Bomberos)
;(not-evacuated SanBernardo_Parque_De_Bomberos)

)
(:goal (and
(not-fire Macarena_1)
;(cordoned-off Macarena_1)
;(not-fire SanBernardo_Parque_De_Bomberos)
;(cordoned-off SanBernardo_Parque_De_Bomberos)

)
)
(:metric minimize (total-time))
;(:metric minimize (total-cost))
)
`

I got the error I posted below when I try to execute she, but if I execute tempo-i or seq, it runs without any problem.

@ertsiger
Copy link
Member

Thanks @AlejandroTorresMunoz. Unfortunately, I won't be able to further check this until later this week (possibly from Friday). Sorry for this.

@ertsiger
Copy link
Member

Hi @AlejandroTorresMunoz, I have been finally able to take a look at the issue. The issue is again a negative condition at the end of the action. Specifically, in PUT_OUT there's the condition (at end (not (not-evacuated ?building_fire))).

I have replicated a workaround we had for negative conditions over all the action. I've pushed the amendment and it should now work.

Sorry again for the delay in my answer!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants