Published October 17, 2019 | Version v2
Software Open

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

  • 1. University of Basel


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 Download all
45.8 kB Preview Download
806.4 kB Preview Download