Software Open Access

Code from the IJCAI 2019 paper "Pattern Selection for Optimal Classical Planning with Saturated Cost Partitioning"

Seipp, Jendrik

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

Please see for instructions on how to compile the planner.

The following configuration computes diverse SCP heuristics over Sys-SCP PDBs:

--search "astar(saturated_cost_partitioning([projections(systematic_scp(max_pattern_size=infinity, max_pdb_size=2M, max_collection_size=20M, max_time=100, max_time_per_restart=10, store_orders=True, store_dead_ends=True, order=cg_down, random_seed=0))], max_orders=infinity, max_optimization_time=0, max_time=200, diversify=True, random_seed=0))"

The Scorpion variant with the highest total coverage uses Cartesian abstraction heuristics and Sys-SCP PDBs, prunes irrelevant operators in a preprocessing step and uses partial order reduction during the A* search:

--search "astar(saturated_cost_partitioning([projections(systematic_scp(max_pattern_size=infinity, max_pdb_size=2M, max_collection_size=20M, max_time=100, max_time_per_restart=10, store_orders=true, store_dead_ends=true, order=cg_down, max_patterns=infinity, random_seed=0)),cartesian()], max_orders=infinity, max_optimization_time=0, max_time=200, diversify=true, 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 "h2-mutexes") and then pass "--transform-task h2-mutexes" to the script (in Lab you can use the driver_options argument of add_algorithm for this).

We actively maintain the code at

Files (806.1 kB)
Name Size
806.1 kB Download
All versions This version
Views 8080
Downloads 1111
Data volume 8.9 MB8.9 MB
Unique views 7575
Unique downloads 1111


Cite as