Best First Width Search Planner
You first need to install LAPKT by following this instructions: https://lapkt-dev.github.io/docs/gettingStarted/
Yoy also need to define LAPKT_PATH as an enviromnent variable. Add the following line to your .bash or .profile file or simply execute it in your terminal:
export LAPKT_PATH = /Absolute-path-to-LAPKT-folder
BFWS can run using either FF or FD parser.
The Scons script included in FF-parser-version folder knows which modules from the LAPKT toolkit it needs to recompile.
To compile type
scons
Go to FD-parser-version folder and type to compile
./build.py
These are BFWS options
./bfws --help
Options::
--help Show help message.
--domain arg Input PDDL domain description
--problem arg Input PDDL problem description
--output arg Output file for plan
--max_novelty arg (=2) Max width w for novelty (default 2)
Search Algorithms::
--DUAL-BFWS arg (=1) 1-BFWS first, then BFWS using h_ff and h_landcount as in AAAI-17 paper
--DUAL-C-BFWS arg (=0) 1-C-BFWS first, then BFWS using h_ff and h_landcount
--BFWS-f5 arg (=0) BFWS(w,#g), w_{#r,#g}, as in BFWS(f5) AAAI-17 paper
--BFWS-f5-initstate-relevant arg (=0) BFWS(f5) but computing relevant fluents only once from s0
--BFWS-f5-landmarks arg (=0) BFWS(w,h_landcount), w = w_{#r,h_landcount}
--BFWS-goalcount-only arg (=0) BFWS(w,#g), w = w_{#g}, no relevant fluents count
Polynomial Search Algorithms::
--1-BFWS arg (=0) 1-BFWS(w,#g), w_{#r,#g}, pruning w > 1
--1-C-BFWS arg (=0) 1-BFWS using consistency to refine goal counting
--k-BFWS arg (=0) k-BFWS(w,#g), w_{#r,#g}, pruning w > k, where k = bound() argument, default 2
--k-C-BFWS arg (=0) k-BFWS with goal consistency count
--k-M-BFWS arg (=0) Allowing (M) nodes > novelty bound() for each node with novelty <= bound()
--k-M-C-BFWS arg (=0) k-M-C-BFWS with goal consistency
The command to run the FF-parser-version of BFWS, computing novelty 1,2, and greater than 2, and pruning nodes with novelty greater than 2
./bfws --domain domain.pddl --problem prob.pddl --max_novelty 2 --k-BFWS true
to use FD-parser version, go to the correct folder and run the same options with the following command
./bfws.py domain.pddl prob.pddl k-BFWS
FD-version uses the same options but do not uses tags. To change the default max_novelty 2 and M values, edit bfws.py file
This project is a joint work by Nir Lipovetzky, and Hector Geffner.
You can read more about it in the AAAI 2017 paper and ICAPS 2017 paper