Fast Downward 24.06.1#
Fast Downward 24.06.1 was released on February 7, 2025.
It is a bugfix release of Fast Downward 24.06, which was released on October 10, 2024. See "Changes in Fast Downward 24.06.1" below for details.
Highlights:
-
We have improved the translator in several dimensions. Key improvements include better error reporting for invalid PDDL, a revised and faster version of the invariant algorithm and full support for negated predicates in the goal.
-
Negated axioms are now computed in the search component, and only in configurations that actually use them. This eliminates a worst-case exponential performance bottleneck in cases where negated axioms are not used. Heuristics that use negated axioms have a new option (
axioms=approximate_negative
) to avoid this computation at the cost of some heuristic accuracy. -
There are many improvements to the
landmark_sum
andlandmark_cost_partitioning
heuristics. This includes a new theory of landmark progression that fixes a gap in the completeness in search configurations like LAMA and can deal directly with cyclic landmark orders, support for reasonable orders in admissible landmark heuristics, a cleaner definition of preferred operators, deterministic synthesis of reasonable orders, and performance improvements. Please note that the command-line options for landmark heuristics have changed. -
We added a new set of operator-counting constraints (
delete_relaxation_rr_constraints
), which implements the delete-relaxation operator-counting constraints by Rankooh and Rintanen. The olddelete_relaxation_constraints
plugin using the constraints by Imai and Fukunaga has been renamed todelete_relaxation_if_constraints
. -
We added the alias
seq-sat-fdss-2023
for the satisficing Fast Downward Stone Soup 2023 portfolio from IPC 2023. -
For developers: planner component objects (such as heuristics or search algorithms) are now constructed with individual parameters rather than having all parameters encapsulated in an
Options
object. (We mention this primarily for developers maintaining their own forks, as this change affects more than 200 source files.)
The Apptainer and Docker distributions of the planner include LP support using the SoPlex solver.
Downloads#
- source tarball: fast-downward-24.06.1.tar.gz
- Apptainer image: download with
apptainer pull fast-downward.sif docker://aibasel/downward:24.06
- Docker container: aibasel/downward:24.06 on Docker Hub
- Vagrantfile: Vagrantfile for Fast Downward 24.06.1
For Apptainer, Docker and Vagrant, see "getting started" for instructions on how to run the planner. That page explains how to run the latest release of Fast Downward, so you have to amend the instructions if you want to run an older release.
For the tarball, if you have satisfied all dependencies, the following should build and run the planner with configuration alias lama-first
on PDDL files /path/to/domain.pddl
and /path/to/problem.pddl
on a Linux or macOS system:
tar -xvzf fast-downward-24.06.1.tar.gz
cd fast-downward-24.06.1
./build.py
./fast-downward.py --alias lama-first /path/to/domain.pddl /path/to/problem.pddl
For dependencies and more advanced information (including Windows builds), see the build instructions.
Limitations#
For licensing reasons, the binary distributions of Fast Downward have limited support for commercial LP solvers (like CPLEX). The Docker and Apptainer distributions only support SoPlex. The Vagrant version supports SoPlex and/or CPLEX if they are available at provisioning time. See "getting started" for more information.
Referencing Fast Downward 24.06#
If you use this version of Fast Downward in a scientific publication, we encourage you to mention the version number, as in "We ran experiments with Fast Downward 24.06." The canonical reference for citing Fast Downward is the following journal paper:
@Article{helmert-jair2006,
author = "Malte Helmert",
title = "The {Fast} {Downward} Planning System",
journal = "Journal of Artificial Intelligence Research",
year = "2006",
volume = "26",
pages = "191--246"
}
Changes in Fast Downward 24.06#
Details:
-
bug fix: The planner now invokes destructors when terminating (except for emergency situations where this is not possible) and exits gracefully when running out of memory.
https://issues.fast-downward.org/issue1138, https://issues.fast-downward.org/issue984
-
bug fix: Removed a dangling pointer in the state registry caused by state copying.
-
build: On M2 Macs it is now easier to build Fast Downward with CPLEX.
-
build: We now support static linking of CPLEX.
-
build: We modernized the CMake build system by updating the requirement to CMake 3.16. New files must now be listed in src/search/CMakeLists.txt for compilation. For Soplex support, users need to set the soplex_DIR environment variable instead of DOWNWARD_SOPLEX_ROOT. Furthermore, we renamed CMake options from PLUGIN_FF_HEURISTIC_ENABLED to LIBRARY_FF_HEURISTIC_ENABLED.
-
build: We added support for the
Validate
binary from newer VAL versions, defaulting toValidate
ifvalidate
is not found on the PATH. -
build, for developers: We introduced the
-Wzero-as-null-pointer-constant
flag to warn when 0 is used instead ofnullptr
and the-Wmissing-declarations
flag to detect global functions not declared in header files, promoting static declarations for visibility control.https://issues.fast-downward.org/issue1112, https://issues.fast-downward.org/issue1107
-
command line, for users: usage errors are now printed to stderr.
-
command line, bug fix: Line breaks in command lines are now correctly handled on Windows.
-
driver: When running a portfolio, its component now prints the absolute runtime as well as the relative runtime.
-
driver: We have added the alias
seq-sat-fdss-2023
for the satisficing Fast Downward Stone Soup 2023 portfolio. -
infrastructure: We have restructured the documentation for building and running experiments. The build instructions are in the BUILD.md file. Developer-specific build information has been moved to the "for developers" wiki section.
-
infrastructure: We have removed the experiments directory from the repository.
-
infrastructure: We have updated the operating system versions and software versions used for our GitHub actions test suite.
-
infrastructure: Windows builds using CPLEX in GitHub actions now work with arbitrary repository names.
-
landmarks, for users: We no longer break cycles in landmark graphs because landmark progression can now deal with cycles. Obedient-reasonable orderings are no longer used because they had little impact on performance in our experiments and they are not well-supported by theory.
https://issues.fast-downward.org/issue996, https://issues.fast-downward.org/issue1089
-
landmarks, for users: Configurations with landmark heuristics are up to 30% faster due to data structure optimizations.
-
landmarks, for users: The landmark cost partitioning heuristic now uses an enumeration to define the type of cost partitioning instead of a Boolean. This affects the command line:
optimal={true,false}
is nowcost_partitioning={optimal,uniform}
. -
landmarks, for developers: We updated variable, function, class and file names within the landmark cost partitioning code.
-
landmarks, for users: The algorithm for generating reasonable landmark orderings is now deterministic and finds more orderings. This has a positive impact on performance (number of expansions, plan quality for satisficing configurations).
-
landmarks, for users: the landmark heuristics now consider an operator preferred iff it achieves a landmark that is needed in the future according to the heuristic. This replaces the previous, much more convoluted definition.
-
landmarks, bug fix: Landmark progression is now sound. The new progression stores more information per state, leading to higher memory requirements, but overall performance is only minimally affected. With this change, it is now safe to use reasonable orderings in the
landmark_cost_partitioning
heuristic. Since this is in general beneficial, Theseq-opt-bjolp
alias now uses reasonable orderings. -
landmarks, bug fix: We no longer wrongly assert that conjunctive landmarks do not overlap with simple or disjunctive landmarks.
-
LP/MIP solvers, bug fix: Empty constraint systems no longer lead to crashes when using CPLEX.
-
LP/MIP solvers, bug fix: We now call the correct methods of the LP solvers for setting variable bounds.
https://issues.fast-downward.org/issue1119, https://issues.fast-downward.org/issue1118
-
merge-and-shrink, for developers: We refactored and simplified the code of the
merge_sccs
merge strategy. -
operator counting, for users: We added
delete_relaxation_rr_constraints
, which implements the delete-relaxation operator-counting constraints described in "Efficient Computation and Informative Estimation of h+ by Integer and Linear Programming" (Rankooh and Rintanen, ICAPS 2022). The olddelete_relaxation_constraints
plugin is now calleddelete_relaxation_if_constraints
. For details, see ConstraintGenerator. -
option parser, for users and developers: constructors no longer use an encapsulated
Options
object, but take their parameters directly. As a side effect, some command-line options now take their parameters in a different order. -
option parser, for developers: We now support string arguments in double quotes. Strings may use escape symbols
\"
,\\
, and\n
for double quotes, backslashes and newlines. -
potential heuristics, bug fix: The potential optimizer now supports effects that set a variable to a value that is already required by a precondition. (The code will never generate such effects, but this makes it possible to use task transformations that do generate such effects.)
-
search algorithms, bug fix: in the
eager
search algorithm, the settingreopen_closed=false
also affected open nodes, not just closed nodes. This has now been fixed. Note that the previous behavior did not affect the optimality of A* because it does not use this setting. -
search algorithms, bug fix: Correctly propagate plan cost bounds to components in iterated search in cases where manual cost bounds are combined with bounds derived from incumbent solutions.
-
translator and heuristics, for users: Negated axioms are now computed in the search component and only for heuristics that need them (relaxation heuristics, landmark heuristics,
cea
andcg
). This can lead to a large performance improvement for configurations that do not use the aforementioned heuristics. We added a new option for heuristics using negated axioms:axioms={approximate_negative,approximate_negative_cycles}
approximate_negative_cycles
is the old behavior and the new default, whileapproximate_negative
may result in less informative heuristics, but avoids a potentially exponential number of negated axioms. -
translator, for users: We added full support for negative literals in goals.
-
translator: We removed a source of nondeterminism in the translator. The translator should now be deterministic except for the effect of the invariant synthesis timeout (option
--invariant-generation-max-time
). -
translator, for users: We improved error reporting for invalid PDDL input.
-
translator, bug fix: Uninitialized numeric expressions are now handled correctly by the translator.
-
translator, bug fix: There was a conceptual gap in the invariant synthesis algorithm. This has been fixed by a revised algorithm, which is also faster.
Changes in Fast Downward 24.06.1#
-
search algorithms, bug fix: The options for the
merge_and_shrink
evaluator were considered in the wrong order. For example, the boolean optionprune_unreachable_states
was interpreted asmax_states
, so thatmax_states
was set to 0 or 1 based on the boolean flag. This is now fixed.If you ran any experiments with merge-and-shrink heuristics with Fast Downward 24.06, please re-run them. Earlier releases are not affected.