Closed ssardina closed 3 years ago
Ahh en otro post habias comentado:
@ssardina Se estaba usando un path antiguo por ahí que causaba este bug. Ahora ya debería de funcionar bien. El fondplus_show es como el fondplus, solo que hace grounding de las directivas show aparte del policy search, lo cual a veces parece hacerlo más eficiente.
ahh interesante.... se puede modularizar el codigo en común?
De hecho ahora veo que hay 3 porque esta tambien fondplus_noshow.lp
Al menos que sea imposible, deberiamos factorizar esto no?
@idrave , creo que ahi hice factoring out del codigo CORE que comparten varias variantes, show, no_show, etc..
Incluso puse uno donde se muestra como mostrar la policy como rules. Mira:
$ python -m fcfond.main -planner fcfond/planner_clingo/fondplus_show_pretty.lp -pddl fcfond/domains/pddl/fond-sat/doors/domain.pddl fcfond/domains/pddl/fond-sat/doors/p01.pddl
$ cat output/stdout.txt
p01
clingo version 5.4.0
Reading from ...planner_clingo/fondplus_show_pretty.lp ...
Solving...
Reporting on a model.....
=======================================
Solution 1 - Size: 6 - Cost: [] - Optimal? False
<player-at(l1),initial-location(l1),open(d2),open(d3),door-in(d2,l2),door-in(d3,l3),door-out(d2,l1),door-out(d3,l2),final-location(l3)>
===> pick-key(l1)
<player-at(l1),initial-location(l1),open(d2),open(d3),door-in(d2,l2),door-in(d3,l3),door-out(d2,l1),door-out(d3,l2),final-location(l3),hold-key()>
===> move-forward-door-open(l1,l2,d2,d3)
<player-at(l2),initial-location(l1),open(d2),open(d3),door-in(d2,l2),door-in(d3,l3),door-out(d2,l1),door-out(d3,l2),final-location(l3),hold-key()>
===> move-forward-last-door-open(l2,l3,d3)
<player-at(l2),initial-location(l1),open(d2),door-in(d2,l2),door-in(d3,l3),door-out(d2,l1),door-out(d3,l2),final-location(l3),hold-key(),closed(d3)>
===> move-forward-last-door-closed(l2,l3,d3)
<player-at(l2),initial-location(l1),open(d3),door-in(d2,l2),door-in(d3,l3),door-out(d2,l1),door-out(d3,l2),final-location(l3),hold-key(),closed(d2)>
===> move-forward-last-door-open(l2,l3,d3)
<player-at(l2),initial-location(l1),door-in(d2,l2),door-in(d3,l3),door-out(d2,l1),door-out(d3,l2),final-location(l3),hold-key(),closed(d2),closed(d3)>
===> move-forward-last-door-closed(l2,l3,d3)
=======================================
Esto es solo para "mostrar" como se podria hacer con codigo Python embedded en el encoding, es pretty powerful.
Lo mas importante que el FOND+ solver en si ahora esta solo una vez en el archivo fondplus_core.lp
No quise ponerlo en master sin que antes vos lo vieras, asi que esta en un branch. Ahora hago pull request...
Hola Sebastián, ya de vuelta con esto. Ví el refactoring, muy bueno! Y queda muy bien el output pretty, quizás podríamos dejarlo como el encoding que se llama por defecto y añadir opciones para usar el "no show" o el fondplus.lp. Me encargaré de hacer estos cambios. Aprovecharé de hacer un poco de refactoring de parte del código de python.
Hay dos planners que son casi iguales:
la diferencais son minimas y related to
#show
:Lo que no entiendo es que ambos solvers dejan el mismo
stdout.txt
. Por ejemplo cuando solucionanfcfond/domains/clingo/clear.lp
dejan ambos estos:la version
_show.lp
tambien incluye un Python proceduremain
en el Clingo code; donde lo usamos?Se puede factoriazar todo el codigo que es comun a ambos en un archivo especial y que ambos "importen" ese codigo?