Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue559 prototype #2

Open
wants to merge 233 commits into
base: issue559-prototype
Choose a base branch
from

Conversation

SimonDold
Copy link

@SimonDold SimonDold commented Jul 20, 2023

jendrikseipp and others added 30 commits July 19, 2023 18:45
For developers: we updated the version of uncrustify we use to fix the code formatting. Instructions on how to install the new version can be found on the [wiki](https://www.fast-downward.org/ForDevelopers/Uncrustify).
For LP/MIP users: so far, we used the open solver interface OSI to communicate
with MIP and LP solvers. We now replaced this with our own interface to have
more direct control and fewer external dependencies. We now support CPLEX
22.11 and SoPlex from their current main branch (released versions <= 6.0.3 are
incompatible with C++-20). We dropped command line options for CLP and Gurobi
in the process: CLP has much worse performance than SoPlex which is also open
source, while Gurobi was never practically possible to compile with, as we did
not have a CMake find script for it. Performance with CPLEX increased in MIP
configurations and stayed roughly the same in LP configurations. Performance
with SoPlex increased for potential heuristics and decreased slightly in other
configurations.
We won't address the issue. Also did some related cleanup.
For developers: our GitHub Actions were not compatible with the changes introduced by issue1076. We adapt the Actions by removing references to OSI, using CPLEX 22.11, and using the current main-branch SoPlex.
For developers: previous changes to the CMake setup revealed that the Ubuntu workflow was not working as intended. The Ubuntu builds now link against the dynamic library of CPLEX.
For developers: We no longer ignore warnings C4800, C4512, C4706, C4100, C4127, C4309, C4702, C4239, C4996, and C4505 on Windows builds as they no longer occur in our code. We also treat warnings as errors in our GitHub actions.
We remove some additional references to COIN/OSI/Gurobi. Our Windows tests forced static linking because of OSI, we no longer do this.
For developers: now that we use C++ 20, optional is available in the std namespace and we no longer need the version in src/search/ext. This was our last external dependency in this directory so we could simplify some other scripts.
For users: The MIASM scoring function (feature: sf_miam) now has an
option to cache scores for merge candidates. This greatly decreases
computation time of M&S abstractions with the stateless merge strategy
based on score-based filtering with this scoring function (e.g.,
merge_strategy=merge_stateless(
    merge_selector=score_based_filtering(
        scoring_functions=[
            sf_miasm(
                use_caching=true,
                shrink_strategy=shrink_bisimulation(greedy=false),
                max_states=50000,
                threshold_before_merge=1),
            total_order(
                atomic_ts_order=reverse_level,
                product_ts_order=new_to_old,
                atomic_before_product=false)]))
).
For developers: the cegar directory is now called
cartesian_abstractions to better reflect what it actually contains and
to avoid confusion with CEGAR-based code in the pdbs directory. This
changes includes renaming the namespace as well as some minor changes
in the documentation.
For developers: the class previously called SearchEngine is now called
SearchAlgorithm, and the directory search_engines is now called
search_algorithms accordingly.
The build script (build.py) now performs the requested builds in the
given order. For example,

./build.py debug release

will perform a debug build and then a release build. Previously, the
order was arbitrary (depending on Python dictionary order).

./build.py --all

now performs the builds in alphabetical order (previously arbitrary).

If the same build is specified multiple times, it will now also be
performed multiple times (but of course the second build will complete
quickly if the first was successful).
We used to have a wiki page with option caveats, but over time
this was reduced to only one entry referring to the use of
preferred operators with the landmark heuristics. This information
has now been moved to the documentation of the affected heuristics.
for developers: we removed the OSI-related parts from our release templates.
Apptainer (formerly Singularity) can build containers directly from
Dockerhub, so we do not need a recipe file anymore.
We now warn when floating numbers are converted to integers.
The previous commit triggered a compile error on Mac due to implicit
conversions from floating-point to integer. It turns out the previous
rounding happened at a problematic state and could lead to very wrong
timing information on some (non-Intel) Mac platforms. For example, see
https://stackoverflow.com/questions/23378063/how-can-i-use-mach-absolute-time-without-overflowing

We changed the way these times are computed to avoid rounding at this
stage and be less convoluted.
We implement valid landmark progression according to Büchner et al. (ICAPS
2023). With this, the previously incomplete LAMA becomes complete and also we
can now use reasonable landmark ordrings for optimal planning. The implemented
progression functions can be turned on or off by the following (boolean) command
line options (default on) of the landmark_sum and landmark_cost_partitioning
heuristic: prog_goal, prog_gn, and prog_r (for goal landmarks, greedy-necessary
orderings, and reasonable orderings, respectively). The changes require more
memory per state, but in general the performance of these heuristics is merely
unaffected.
We remove this landmark ordering type as it is no longer used after
generating the orderings.
@SimonDold SimonDold force-pushed the issue559-prototype branch from 89f74f3 to a874b37 Compare July 12, 2024 07:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants