From c98c1873fa295afc58865c39e4ddab2e7c982092 Mon Sep 17 00:00:00 2001 From: Jendrik Seipp Date: Tue, 9 Jan 2024 14:44:11 +0100 Subject: [PATCH 1/2] Backport some small changes from Scorpion. --- driver/portfolio_runner.py | 9 +++++---- misc/style/run-all-style-checks.py | 2 +- misc/tox.ini | 1 - src/search/algorithms/int_packer.cc | 3 +++ src/search/algorithms/named_vector.h | 4 ++++ src/search/operator_id.h | 4 ++++ src/search/task_utils/task_properties.cc | 8 +++++--- 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/driver/portfolio_runner.py b/driver/portfolio_runner.py index 3f0a7a3f5f..011ecff050 100644 --- a/driver/portfolio_runner.py +++ b/driver/portfolio_runner.py @@ -83,9 +83,10 @@ def compute_run_time(timeout, configs, pos): print("remaining time: {}".format(remaining_time)) relative_time = configs[pos][0] remaining_relative_time = sum(config[0] for config in configs[pos:]) - print("config {}: relative time {}, remaining {}".format( - pos, relative_time, remaining_relative_time)) - return limits.round_time_limit(remaining_time * relative_time / remaining_relative_time) + absolute_time_limit = limits.round_time_limit(remaining_time * relative_time / remaining_relative_time) + print("config {}: relative time {}, remaining time {}, absolute time {}".format( + pos, relative_time, remaining_relative_time, absolute_time_limit)) + return absolute_time_limit def run_sat_config(configs, pos, search_cost_type, heuristic_cost_type, @@ -120,7 +121,7 @@ def run_sat(configs, executable, sas_file, plan_manager, final_config, configs, pos, search_cost_type, heuristic_cost_type, executable, sas_file, plan_manager, timeout, memory) if exitcode is None: - return + continue yield exitcode if exitcode == returncodes.SEARCH_UNSOLVABLE: diff --git a/misc/style/run-all-style-checks.py b/misc/style/run-all-style-checks.py index 94a6347678..b6ef8e4339 100755 --- a/misc/style/run-all-style-checks.py +++ b/misc/style/run-all-style-checks.py @@ -25,7 +25,7 @@ def check_python_style(): "flake8", # https://flake8.pycqa.org/en/latest/user/error-codes.html "--extend-ignore", "E128,E129,E131,E261,E266,E301,E302,E305,E306,E402,E501,E741,F401", - "--exclude", "run-clang-tidy.py,txt2tags.py,.tox", + "--exclude", "run-clang-tidy.py,txt2tags.py,.tox,.venv", "src/translate/", "driver/", "misc/", "build.py", "build_configs.py", "fast-downward.py"], cwd=REPO) except FileNotFoundError: diff --git a/misc/tox.ini b/misc/tox.ini index afd0e2be39..4d1f03d865 100644 --- a/misc/tox.ini +++ b/misc/tox.ini @@ -70,7 +70,6 @@ commands = [testenv:clang-tidy] changedir = {toxinidir}/style/ -deps = PyYAML==6.0.1 commands = python run-clang-tidy.py diff --git a/src/search/algorithms/int_packer.cc b/src/search/algorithms/int_packer.cc index d98da22927..c7ec0eb28a 100644 --- a/src/search/algorithms/int_packer.cc +++ b/src/search/algorithms/int_packer.cc @@ -1,5 +1,6 @@ #include "int_packer.h" +#include #include using namespace std; @@ -83,6 +84,8 @@ void IntPacker::set(Bin *buffer, int var, int value) const { void IntPacker::pack_bins(const vector &ranges) { assert(var_infos.empty()); + assert(all_of(ranges.begin(), ranges.end(), + [](int range) {return range > 1;})); int num_vars = ranges.size(); var_infos.resize(num_vars); diff --git a/src/search/algorithms/named_vector.h b/src/search/algorithms/named_vector.h index 47f2cb71b1..619053acf6 100644 --- a/src/search/algorithms/named_vector.h +++ b/src/search/algorithms/named_vector.h @@ -28,6 +28,10 @@ class NamedVector { elements.push_back(element); } + void push_back(T &&element) { + elements.push_back(std::move(element)); + } + T &operator[](int index) { return elements[index]; } diff --git a/src/search/operator_id.h b/src/search/operator_id.h index 0e8f5f8b3e..beb520ac5a 100644 --- a/src/search/operator_id.h +++ b/src/search/operator_id.h @@ -45,6 +45,10 @@ class OperatorID { return !(*this == other); } + bool operator<(const OperatorID &other) const { + return index < other.index; + } + int hash() const { return index; } diff --git a/src/search/task_utils/task_properties.cc b/src/search/task_utils/task_properties.cc index 145e0e9c79..e55c7c6cfe 100644 --- a/src/search/task_utils/task_properties.cc +++ b/src/search/task_utils/task_properties.cc @@ -173,9 +173,11 @@ PerTaskInformation g_state_packers( vector variable_ranges; variable_ranges.reserve(variables.size()); for (VariableProxy var : variables) { - variable_ranges.push_back(var.get_domain_size()); + /* IntPacker expects all variables to have at least a domain size of + two. This is not the case for some domain-abstracted tasks. */ + int domain_size = max(2, var.get_domain_size()); + variable_ranges.push_back(domain_size); } return utils::make_unique_ptr(variable_ranges); - } - ); + }); } From 846b14a50952e78728b3c1e62bb77789b4fec161 Mon Sep 17 00:00:00 2001 From: Jendrik Seipp Date: Wed, 10 Jan 2024 12:11:50 +0100 Subject: [PATCH 2/2] Adjust get_bit_size_for_range() for size-1 domains. --- src/search/algorithms/int_packer.cc | 8 +++++--- src/search/task_utils/task_properties.cc | 8 +++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/search/algorithms/int_packer.cc b/src/search/algorithms/int_packer.cc index c7ec0eb28a..6888156122 100644 --- a/src/search/algorithms/int_packer.cc +++ b/src/search/algorithms/int_packer.cc @@ -1,6 +1,5 @@ #include "int_packer.h" -#include #include using namespace std; @@ -24,6 +23,11 @@ static IntPacker::Bin get_bit_mask(int from, int to) { } static int get_bit_size_for_range(int range) { + assert(range >= 1); + // Domains in domain-abstracted tasks may have size one. + if (range == 1) { + return 1; + } int num_bits = 0; while ((1U << num_bits) < static_cast(range)) ++num_bits; @@ -84,8 +88,6 @@ void IntPacker::set(Bin *buffer, int var, int value) const { void IntPacker::pack_bins(const vector &ranges) { assert(var_infos.empty()); - assert(all_of(ranges.begin(), ranges.end(), - [](int range) {return range > 1;})); int num_vars = ranges.size(); var_infos.resize(num_vars); diff --git a/src/search/task_utils/task_properties.cc b/src/search/task_utils/task_properties.cc index e55c7c6cfe..145e0e9c79 100644 --- a/src/search/task_utils/task_properties.cc +++ b/src/search/task_utils/task_properties.cc @@ -173,11 +173,9 @@ PerTaskInformation g_state_packers( vector variable_ranges; variable_ranges.reserve(variables.size()); for (VariableProxy var : variables) { - /* IntPacker expects all variables to have at least a domain size of - two. This is not the case for some domain-abstracted tasks. */ - int domain_size = max(2, var.get_domain_size()); - variable_ranges.push_back(domain_size); + variable_ranges.push_back(var.get_domain_size()); } return utils::make_unique_ptr(variable_ranges); - }); + } + ); }