diff --git a/CHANGES.md b/CHANGES.md index d227b31d5d..4dd43ce9a2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,238 @@ For more details, check the repository history (). Repository branches are named after the corresponding tracker issues. +## Fast Downward 24.06 + +Released on October 10, 2024. + +Highlights: + +- We have improved the translator in several dimensions. Key + improvements include a revised and faster version of the invariant + algorithm, full support for negated predicates in the goal, and + improved error reporting for invalid PDDL. In addition, we have + moved the generation of negated axioms to the search component, + which can significantly improve the performance of configurations + that do not rely on negated axioms. + +- We have implemented a new theory of landmark progression that, among + other things, closes a completeness gap for search configurations + like LAMA. Furthermore, this change makes it possible to use + reasonable orders for admissible landmark heuristics. + +- We added the delete-relaxation operator-counting constraints + described by Masood Feyzbakhsh Rankooh and Jussi Rintanen. + +- We have modernized the CMake build system, which now requires a + minimal version of CMake 3.16. + +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. + + + +- 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. Futhermore, 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 to `Validate` if `validate` 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 of `nullptr` and the `-Wmissing-declarations` flag to detect + global functions not declared in header files, promoting static + declarations for visibility control. + + + +- 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](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. + + +- 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. + + + +- 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 now `cost_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, The `seq-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. + + + +- LP/MIP solvers, bug fix: CPLEX now compiles correctly on Windows for + arbitrary repository names. + + +- merge-and-shrink, for developers: We refactored and simplified the code + of the `merge_sccs` merge strategy. + + +- operator counting, for users: We implemented 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). + For details, see + + + +- 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 + setting `reopen_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` and `cg`). + 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, while `approximate_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. + + ## Fast Downward 23.06 Released on July 31, 2023.