Closed bhomaidan1990 closed 2 years ago
Hi Belal,
first of all, please note that Lilotane was not designed for unsolvable planning. In general, I could imagine that PDDL4J's grounding is able to find out more global information on the problem than Lilotane, which keeps the problem lifted and only does a lookahead one hierarchical layer at a time. Still, there are some scenarios where Lilotane can find unsolvability, e.g., if a goal atom is more or less trivially unsatisfiable, of if some position in the hierarchy features no reachable operation at all after pruning. But these conditions are not necessary for a planning problem to be unsolvable.
Secondly, you can use switch -cs
("check solvability") to check the general solvability of the problem with an additional SAT solver call after each UNSAT layer. This essentially checks for a consistent task network on the logical layer without the assertion of a finished network, so in some cases this can reveal unsolvability where the normal approach runs indefinitely. In your case, I tried out Lilotane on the current master branch with -cs
and pretty much immediately (<0.02s) get the output Unsolvable at layer 1 even without assumptions! No success. Exiting.
. So I hope that solves your problem for that case at least.
Please let me know if the issue has been solved for you.
@domschrei thanks for your rapid reply, the -cs
option has solved the problem.
On the other hand I tried to build the current master branch, but after the make
instruction I have got this error:
Scanning dependencies of target parser
Fetching pandaPIparser ...
Cloning into 'pandaPIparser'...
remote: Enumerating objects: 1288, done.
remote: Counting objects: 100% (362/362), done.
remote: Compressing objects: 100% (223/223), done.
remote: Total 1288 (delta 250), reused 240 (delta 139), pack-reused 926
Receiving objects: 100% (1288/1288), 358.65 KiB | 1.45 MiB/s, done.
Resolving deltas: 100% (879/879), done.
HEAD is now at 95bbe29 make verifier more resilient
"src/hddl.y", line 23: junk after `%%' in definition section
"src/hddl.y", line 23: no input grammar
make[3]: *** [makefile:46: build/hddl.cpp] Segmentation fault (core dumped)
make[2]: *** [CMakeFiles/parser.dir/build.make:57: CMakeFiles/parser] Error 2
make[1]: *** [CMakeFiles/Makefile2:136: CMakeFiles/parser.dir/all] Error 2
make: *** [Makefile:95: all] Erro
If you please can tell me how to overcome this issue so I can use the current version of lilotane
, thanks in advance.
Could you retry this with a clean repository state? Seems very weird to me that the grammar compilation segfaults ...
clean repository state
I have followed this order:
mkdir Lilotane && cd Lilotane && git clone https://github.com/domschrei/lilotane.git
mv lilotane/* .
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DIPASIRSOLVER=glucose4
make
and got again the upper error, I'm not sure what should I do more!
P.S I'm using
bison++ Version 1.21.9-1
Unfortunately, I cannot reproduce this. It works fine for me and I think I haven't made any parser-related changes for a long period. So odds are that this is a problem with one of your current packages on your system, and that you will experience the same error on any other branch or version of Lilotane. But feel free to correct me.
@domschrei I have removed bison++
and reinstalled bison
, and reinstalled flex
sudo apt install --reinstall flex
, then the problem was solved, thanks for your kind support.
Hi, In the case where there is no plan, Lilotane is taking a long time to signal that no plan was found, compared to other planners such as TFD/PDDL4J which was able to stop and signal that there is no plan after half a second!,
Is there any way to solve this issue? thanks in advance.
Here are my domain and problem for test purposes:
Domain
Problem