Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
9687616
Derive all task-specific components from common base class and pass t…
FlorianPommerening Feb 12, 2026
f06bb9a
Add cost-adapted heuristic as task-independent evaluator.
FlorianPommerening Feb 15, 2026
6543f88
Remove transform argument from Heuristic (use task from TaskSpecificC…
FlorianPommerening Feb 15, 2026
90f0aed
make landmark factories task-independent
FlorianPommerening Feb 17, 2026
d4102b4
Remove unnecessary overload
FlorianPommerening Feb 17, 2026
175f362
Prevent accidental use of task-specific arguments
FlorianPommerening Feb 17, 2026
3a1e62e
remove outdated overload
FlorianPommerening Feb 17, 2026
fd29be6
make pattern (collection) generators task-independent
FlorianPommerening Feb 17, 2026
88a2d63
make constraint generators task-independent
FlorianPommerening Feb 17, 2026
958619b
make pruning methods task-independent
FlorianPommerening Feb 18, 2026
de9bc1b
make subtask generators task-independent
FlorianPommerening Feb 18, 2026
243cef5
make shrink strategies task-independent
FlorianPommerening Feb 18, 2026
4c38246
make merge scoring functions task-independent
FlorianPommerening Feb 18, 2026
e61f425
make merge selector task-independent
FlorianPommerening Feb 18, 2026
1e622bb
make merge trees task-independent
FlorianPommerening Feb 18, 2026
713c45f
make merge strategies task-independent
FlorianPommerening Feb 18, 2026
09927a7
make label reduction task-independent
FlorianPommerening Feb 18, 2026
93097a3
make evaluators task-independent (except potential heuristics)
FlorianPommerening Feb 19, 2026
9f28f15
make potential heuristics task-independent
FlorianPommerening Feb 19, 2026
8cd8844
remove category plugin for task-specific evaluators
FlorianPommerening Feb 19, 2026
5e37970
make open lists task-independent
FlorianPommerening Feb 19, 2026
ac96d23
make search algorithms task-independent (except iterated search)
FlorianPommerening Feb 19, 2026
3f907c4
make iterated search task-independent
FlorianPommerening Feb 19, 2026
b34bb0c
cleanup includes and comments
FlorianPommerening Feb 19, 2026
eec7f2f
cleanup code that was only used for old implementation of iterated se…
FlorianPommerening Feb 19, 2026
7c8e3aa
Use bind_task_recursively only with selected types, check constraint …
FlorianPommerening Feb 25, 2026
757adc7
remove old includes
FlorianPommerening Feb 25, 2026
fad4970
introduce namespaces
FlorianPommerening Feb 25, 2026
8632272
Compute BoundArgs<T> without depending on bind_task_recursively
FlorianPommerening Feb 25, 2026
2e06930
use BoundArgs in component.h
FlorianPommerening Feb 26, 2026
4f3cee7
replace transform argument in portfolios and aliases
FlorianPommerening Feb 26, 2026
ee53306
remove extra parenthesis
FlorianPommerening Feb 26, 2026
10211db
update documentation related to transform argument
FlorianPommerening Feb 26, 2026
e37fb21
rename cost_adapted_heuristic to eval_modify_costs and make it a basi…
FlorianPommerening Feb 26, 2026
0901e60
rename make_shared_component to make_auto_task_independent_component
FlorianPommerening Feb 26, 2026
81cbb12
remove TODOs regarding forward declarations and use aliases
FlorianPommerening Feb 26, 2026
d2060c8
rename cost_adapted_heuristic to eval_modify_costs and make it a basi…
FlorianPommerening Feb 26, 2026
ebd93b3
copy cache into iterated search
FlorianPommerening Feb 26, 2026
b541775
undo comment about task transformations
FlorianPommerening Feb 26, 2026
efd4729
move instantiation of plan manager out of parsing function
FlorianPommerening Feb 26, 2026
3319474
Defer tasks to issue1208.
FlorianPommerening Mar 2, 2026
44d9282
Document lifetime for cache.
FlorianPommerening Mar 2, 2026
b69f3e6
Introduce intermediate class for ModifyCostsEvaluator.
FlorianPommerening Mar 2, 2026
bb8ec75
clang format
FlorianPommerening Mar 2, 2026
3fb1d67
update todo about can_be_bound_to_variable
FlorianPommerening Mar 2, 2026
1d0b7a6
Run clang-tidy
FlorianPommerening Mar 2, 2026
765187b
Run clang-format again
FlorianPommerening Mar 2, 2026
5e921a9
remove std:: in cc files
FlorianPommerening Mar 2, 2026
29b66b5
run clang-format again
FlorianPommerening Mar 2, 2026
c0f2a3b
Remove test about parameter order.
FlorianPommerening Mar 3, 2026
c4bccfc
Make caching keep objects around for as long as they are still needed…
FlorianPommerening Mar 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions driver/aliases.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

ALIASES["seq-sat-fd-autotune-1"] = [
"--search",
"let(hff, ff(transform=adapt_costs(one)),"
"let(hff, eval_modify_costs(ff(),cost_type=one),"
"let(hcea, cea(),"
"let(hcg, cg(transform=adapt_costs(plusone)),"
"let(hcg, eval_modify_costs(cg(),cost_type=plusone),"
"let(hgc, goalcount(),"
"let(hAdd, add(),"
"""iterated([
Expand Down Expand Up @@ -51,9 +51,9 @@

ALIASES["seq-sat-fd-autotune-2"] = [
"--search",
"let(hcea, cea(transform=adapt_costs(plusone)),"
"let(hcg, cg(transform=adapt_costs(one)),"
"let(hgc, goalcount(transform=adapt_costs(plusone)),"
"let(hcea, eval_modify_costs(cea(),cost_type=plusone),"
"let(hcg, eval_modify_costs(cg(),cost_type=one),"
"let(hgc, eval_modify_costs(goalcount(),cost_type=plusone),"
"let(hff, ff(),"
"""iterated([
ehc(hcea,preferred=[hcea],preferred_usage=prune_by_preferred,cost_type=normal),
Expand Down Expand Up @@ -103,10 +103,10 @@ def _get_lama(pref):
lazy_wastar([hff,hlm],preferred=[hff,hlm],w=1)
],repeat_last=true,continue_on_fail=true)))""",
"--if-non-unit-cost",
f"let(hlm1, landmark_sum(lm_reasonable_orders_hps(lm_rhw()),transform=adapt_costs(one),pref={pref}),"
"let(hff1, ff(transform=adapt_costs(one)),"
f"let(hlm2, landmark_sum(lm_reasonable_orders_hps(lm_rhw()),transform=adapt_costs(plusone),pref={pref}),"
"let(hff2, ff(transform=adapt_costs(plusone)),"
f"let(hlm1, eval_modify_costs(landmark_sum(lm_reasonable_orders_hps(lm_rhw()),pref={pref}),cost_type=one),"
"let(hff1, eval_modify_costs(ff(),cost_type=one),"
f"let(hlm2, eval_modify_costs(landmark_sum(lm_reasonable_orders_hps(lm_rhw()),pref={pref}),cost_type=plusone),"
"let(hff2, eval_modify_costs(ff(),cost_type=plusone),"
"""iterated([
lazy_greedy([hff1,hlm1],preferred=[hff1,hlm1],
cost_type=one,reopen_closed=false),
Expand All @@ -126,8 +126,8 @@ def _get_lama(pref):

ALIASES["lama-first"] = [
"--search",
"let(hlm, landmark_sum(lm_factory=lm_reasonable_orders_hps(lm_rhw()),transform=adapt_costs(one),pref=false),"
"let(hff, ff(transform=adapt_costs(one)),"
"let(hlm, eval_modify_costs(landmark_sum(lm_factory=lm_reasonable_orders_hps(lm_rhw()),pref=false),cost_type=one),"
"let(hff, eval_modify_costs(ff(),cost_type=one),"
"""lazy_greedy([hff,hlm],preferred=[hff,hlm],
cost_type=one,reopen_closed=false)))"""]

Expand Down
16 changes: 4 additions & 12 deletions driver/portfolio_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,6 @@
DEFAULT_TIMEOUT = 1800


def adapt_heuristic_cost_type(arg, cost_type):
if cost_type == "normal":
transform = "no_transform()"
else:
transform = "adapt_costs({})".format(cost_type)
return arg.replace("H_COST_TRANSFORM", transform)


def adapt_args(args, search_cost_type, heuristic_cost_type, plan_manager):
g_bound = plan_manager.get_next_portfolio_cost_bound()
plan_counter = plan_manager.get_plan_counter()
Expand All @@ -45,7 +37,7 @@ def adapt_args(args, search_cost_type, heuristic_cost_type, plan_manager):
for index, arg in enumerate(args):
if arg == "--evaluator" or arg == "--heuristic":
heuristic = args[index + 1]
heuristic = adapt_heuristic_cost_type(heuristic, heuristic_cost_type)
heuristic = heuristic.replace("H_COST_TYPE", str(heuristic_cost_type))
args[index + 1] = heuristic
elif arg == "--search":
search = args[index + 1]
Expand All @@ -56,9 +48,9 @@ def adapt_args(args, search_cost_type, heuristic_cost_type, plan_manager):
"See the FDSS portfolios for examples.")
for name, value in [
("BOUND", g_bound),
("H_COST_TYPE", heuristic_cost_type),
("S_COST_TYPE", search_cost_type)]:
search = search.replace(name, str(value))
search = adapt_heuristic_cost_type(search, heuristic_cost_type)
args[index + 1] = search
break

Expand Down Expand Up @@ -109,7 +101,7 @@ def run_sat_config(configs, pos, search_cost_type, heuristic_cost_type,

def run_sat(configs, executable, sas_file, plan_manager, final_config,
final_config_builder, timeout, memory):
# If the configuration contains S_COST_TYPE or H_COST_TRANSFORM and the task
# If the configuration contains S_COST_TYPE or H_COST_TYPE and the task
# has non-unit costs, we start by treating all costs as one. When we find
# a solution, we rerun the successful config with real costs.
heuristic_cost_type = "one"
Expand Down Expand Up @@ -182,7 +174,7 @@ def run_opt(configs, executable, sas_file, plan_manager, timeout, memory):


def can_change_cost_type(args):
return any("S_COST_TYPE" in part or "H_COST_TRANSFORM" in part for part in args)
return any("S_COST_TYPE" in part or "H_COST_TYPE" in part for part in args)


def get_portfolio_attributes(portfolio: Path):
Expand Down
44 changes: 22 additions & 22 deletions driver/portfolios/seq_sat_fdss_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,73 +3,73 @@
CONFIGS = [
# alt_lazy_ff_cg
(49, ["--search",
"let(hff, ff(transform=H_COST_TRANSFORM),"
"let(hcg, cg(transform=H_COST_TRANSFORM),"
"let(hff, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"let(hcg, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"lazy_greedy([hff,hcg],preferred=[hff,hcg],cost_type=S_COST_TYPE,bound=BOUND)))"]),
# lazy_greedy_ff_1
(171, ["--search",
"let(h, ff(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"lazy_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# alt_lazy_cea_cg
(27, ["--search",
"let(hcea, cea(transform=H_COST_TRANSFORM),"
"let(hcg, cg(transform=H_COST_TRANSFORM),"
"let(hcea, eval_modify_costs(cea(),cost_type=H_COST_TYPE),"
"let(hcg, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"lazy_greedy([hcea,hcg],preferred=[hcea,hcg],cost_type=S_COST_TYPE,bound=BOUND)))"]),
# lazy_wa3_ff_1
(340, ["--search",
"let(h, ff(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"lazy_wastar([h],w=3,preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# alt_eager_ff_cg
(76, ["--search",
"let(hff, ff(transform=H_COST_TRANSFORM),"
"let(hcg, cg(transform=H_COST_TRANSFORM),"
"let(hff, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"let(hcg, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"eager_greedy([hff,hcg],preferred=[hff,hcg],cost_type=S_COST_TYPE,bound=BOUND)))"]),
# eager_greedy_ff_1
(88, ["--search",
"let(h, ff(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"eager_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# alt_eager_ff_add
(90, ["--search",
"let(hff, ff(transform=H_COST_TRANSFORM),"
"let(hadd, add(transform=H_COST_TRANSFORM),"
"let(hff, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"let(hadd, eval_modify_costs(add(),cost_type=H_COST_TYPE),"
"eager_greedy([hff,hadd],preferred=[hff,hadd],cost_type=S_COST_TYPE,bound=BOUND)))"]),
# lazy_greedy_cea_1
(56, ["--search",
"let(h, cea(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cea(),cost_type=H_COST_TYPE),"
"lazy_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# alt_eager_ff_cea_cg
(73, ["--search",
"let(hff, ff(transform=H_COST_TRANSFORM),"
"let(hcea, cea(transform=H_COST_TRANSFORM),"
"let(hcg, cg(transform=H_COST_TRANSFORM),"
"let(hff, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"let(hcea, eval_modify_costs(cea(),cost_type=H_COST_TYPE),"
"let(hcg, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"eager_greedy([hff,hcea,hcg],preferred=[hff,hcea,hcg],cost_type=S_COST_TYPE,bound=BOUND))))"]),
# lazy_wa3_add_1
(50, ["--search",
"let(h, add(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(add(),cost_type=H_COST_TYPE),"
"lazy_wastar([h],w=3,preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# eager_greedy_cea_1
(84, ["--search",
"let(h, cea(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cea(),cost_type=H_COST_TYPE),"
"eager_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# eager_wa3_add_1
(166, ["--search",
"let(h, add(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(add(),cost_type=H_COST_TYPE),"
"eager(single(sum([g(),weight(h,3)])),preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# eager_wa3_ff_1
(87, ["--search",
"let(h, ff(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"eager(single(sum([g(),weight(h,3)])),preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# lazy_wa3_cg_1
(73, ["--search",
"let(h, cg(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"lazy_wastar([h],w=3,preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# eager_wa3_cg_1
(89, ["--search",
"let(h, cg(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"eager(single(sum([g(),weight(h,3)])),preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
]

FINAL_CONFIG = [
"--search",
"let(h, ff(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"iterated([eager(single(sum([g(),weight(h,3)])),preferred=[h],cost_type=S_COST_TYPE,bound=BOUND)],bound=BOUND,repeat_last=true))"]
16 changes: 8 additions & 8 deletions driver/portfolios/seq_sat_fdss_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,35 @@
CONFIGS = [
# eager_greedy_ff
(330, ["--search",
"let(h, ff(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"eager_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# lazy_greedy_ff
(411, ["--search",
"let(h, ff(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(ff(),cost_type=H_COST_TYPE),"
"lazy_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# eager_greedy_cea
(213, ["--search",
"let(h, cea(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cea(),cost_type=H_COST_TYPE),"
"eager_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# lazy_greedy_cea
(57, ["--search",
"let(h, cea(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cea(),cost_type=H_COST_TYPE),"
"lazy_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# eager_greedy_add
(204, ["--search",
"let(h, add(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(add(),cost_type=H_COST_TYPE),"
"eager_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# eager_greedy_cg
(208, ["--search",
"let(h, cg(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"eager_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# lazy_greedy_cg
(109, ["--search",
"let(h, cg(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(cg(),cost_type=H_COST_TYPE),"
"lazy_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
# lazy_greedy_add
(63, ["--search",
"let(h, add(transform=H_COST_TRANSFORM),"
"let(h, eval_modify_costs(add(),cost_type=H_COST_TYPE),"
"lazy_greedy([h],preferred=[h],cost_type=S_COST_TYPE,bound=BOUND))"]),
]

Expand Down
Loading
Loading