Software Open Access

Code from the JAIR 2020 paper "Saturated Cost Partitioning for Optimal Classical Planning"

Seipp, Jendrik; Keller, Thomas; Helmert, Malte

The zipfile contains an extended version of the Fast Downward planning system ( The code for saturated cost partitioning can be found in the "src/search/cost_saturation" directory.

Please see for instructions on how to compile the planner.

The following configuration computes the hSCPdiv heuristic from the paper:

--search "astar(saturated_cost_partitioning([projections(hillclimbing(max_generated_patterns=200, random_seed=0)), projections(systematic(2)), cartesian()],max_orders=infinity, max_time=1000, diversify=true, random_seed=0, max_optimization_time=100, orders=greedy_orders(random_seed=0)))"

The Scorpion variant uses different timeouts for diversification and optimization, prunes irrelevant operators in a preprocessing step and uses partial order reduction during the A* search:

--search "astar(saturated_cost_partitioning([projections(systematic(2)), projections(hillclimbing(max_time=100, random_seed=0)), cartesian()], max_orders=infinity, max_optimization_time=2, max_time=200, diversify=true, orders=greedy_orders(random_seed=0), random_seed=0), pruning=stubborn_sets_simple(min_required_pruning_ratio=0.2))"

Note that for operator pruning you need to make the h2 preprocessor ( available on the PATH (e.g., using the name "preprocess-h2") and then pass "--transform-task preprocess-h2" to the script (in Lab you can use the driver_options argument of add_algorithm for this). We include a copy of the h2 preprocessor in the file "".

We actively maintain the code at The GitHub repository also contains a copy of the h² preprocessor.

Files (852.2 kB)
Name Size
45.8 kB Download
806.4 kB Download
All versions This version
Views 10137
Downloads 2618
Data volume 14.9 MB8.4 MB
Unique views 8532
Unique downloads 2113


Cite as