OpenPlan Labs

openplan-bench

One harness, one problem set, one results schema for every planner in the org. Planners not included — they are extras.

What this is. Every planner in OpenPlan Labs, run over shared problem sets by one harness that records timeouts and errors as results rather than dropping them. 5 suite(s), 960 recorded runs. What “solved” means · How to reproduce this.

Weekly regression suiterunner-grade

A small cross-section of both families, run on a shared GitHub Actions runner every week. Its job is to notice that something stopped working, not to rank hardware. Compare coverage and node counts across runs; ignore the seconds.

AMD EPYC 7763 64-Core Processor (4 logical CPUs), Linux 6.17.0-1022-azure (x86_64), Python 3.12.14, harness 0.1.0@d2a32a74ad18. Installed: jupyddl 2.3.0, matplotlib 3.11.1, numpy 2.5.2, openplan-bench 0.1.0, pymapf 0.8.0.
Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS).
run stamped 2026-08-20T22:21:18+00:00 (one stamp for the whole run) · published 2026-08-20T22:23:14+00:00 · results: 2026-08-20.csv

Runner-grade timings. This suite was measured on a shared GitHub Actions runner. Absolute wall times there vary by a factor of two or more between runs and tell you nothing about the hardware a planner would see in practice. Coverage, plan cost, node counts and validity are still exact — those do not depend on how fast the machine was. Compare times within a single run of this table, never across runs or against your laptop.

Single-sample timings. 32 of the 44 cells in this suite are one measurement: one seed, one repetition. Median, Min and Max are then the same number three times — a sample, not an observed range. Node counts, cost and validity are unaffected, being deterministic; the seconds should not be quoted with a spread until the suite is re-run with more seeds.

Rows recorded68
Runs attempted68
Solved61
Timed out7
Errored0
Not run0

These six count rows — one per (configuration, instance, seed, repetition). The Solved column in the leaderboard below counts instances, and only those a configuration solved on every seed, so the two numbers are different measurements of different things and will not agree.

Leaderboard

Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS). Enforced on every row in this table.
ConfigurationFamilyCoverageSolvedInstancesTimeoutsErrorsUnsolvedMedian time
solved only
Total time
solved only
Expanded
solved only
jupyddl:gbfs/hffclassical100%880002.1 ms518.0 ms118
jupyddl:bfsclassical75%682001.7 ms11.8 ms156
jupyddl:astar/hmaxclassical75%682001.9 ms16.2 ms153
jupyddl:astar/lmcutclassical75%682002.7 ms54.6 ms153
pymapf:pibtmapf100%330004.4 ms15.9 ms155
pymapf:lacammapf100%330004.8 ms17.1 ms155
pymapf:prioritizedmapf100%330003.5 ms21.7 ms84
pymapf:cbsmapf67%231001.7 ms3.3 ms987

Coverage is Solved ÷ Instances, and both are columns here so the denominator is never implied. Median time, Total time and Expanded are computed over the instances a configuration actually solved, so each row has a different denominator and none of those three are comparable across rows — including when you sort by them. A configuration that solves only the easy instances posts the fastest time and the smallest node count on this table; that is an artefact of the subset it solved, not a result. Read them against Coverage and Instances, never instead of them.

Figures

Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS).
Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS).
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Median wall time against agent count; the band is the observed min–max over seeds. Every curve is drawn only over the values that solver solved on every seed, so two curves of different length cover different instance sets and their heights are not a like-for-like comparison. Hollow triangles mark cells that hit the budget. Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS).
Median wall time against agent count; the band is the observed min–max over seeds. Every curve is drawn only over the values that solver solved on every seed, so two curves of different length cover different instance sets and their heights are not a like-for-like comparison. Hollow triangles mark cells that hit the budget. Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS).

Every instance

Per-instance budget: 15 s wall clock, 2,048 MiB address space (RLIMIT_AS). Enforced on every row in this table.
InstanceConfigurationOutcomeMedian timeMinMaxCostLengthMakespanExpandedSamples
seeds x reps
Note
blocksworld/problemjupyddl:astar/hmaxsolved1.2 ms1.2 ms1.2 ms2221/1
miconic/s1-0jupyddl:astar/hmaxsolved1.8 ms1.8 ms1.8 ms4441/1
miconic/s1-1jupyddl:astar/hmaxsolved1.8 ms1.8 ms1.8 ms3331/1
miconic/s10-0jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
miconic/s11-0jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
pallet/problemjupyddl:astar/hmaxsolved5.9 ms5.9 ms5.9 ms12121271/1
switch/problemjupyddl:astar/hmaxsolved3.7 ms3.7 ms3.7 ms3351/1
tsp/problemjupyddl:astar/hmaxsolved1.9 ms1.9 ms1.9 ms155121/1
blocksworld/problemjupyddl:astar/lmcutsolved1.5 ms1.5 ms1.5 ms2221/1
miconic/s1-0jupyddl:astar/lmcutsolved2.4 ms2.4 ms2.4 ms4441/1
miconic/s1-1jupyddl:astar/lmcutsolved1.9 ms1.9 ms1.9 ms3331/1
miconic/s10-0jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
miconic/s11-0jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
pallet/problemjupyddl:astar/lmcutsolved40.9 ms40.9 ms40.9 ms12121271/1
switch/problemjupyddl:astar/lmcutsolved4.8 ms4.8 ms4.8 ms3351/1
tsp/problemjupyddl:astar/lmcutsolved3.0 ms3.0 ms3.0 ms155121/1
blocksworld/problemjupyddl:bfssolved1.1 ms1.1 ms1.1 ms2221/1
miconic/s1-0jupyddl:bfssolved1.7 ms1.7 ms1.7 ms4441/1
miconic/s1-1jupyddl:bfssolved1.7 ms1.7 ms1.7 ms3341/1
miconic/s10-0jupyddl:bfstimeout0/1planner stopped on its internal time limit
miconic/s11-0jupyddl:bfstimeout0/1planner stopped on its internal time limit
pallet/problemjupyddl:bfssolved2.5 ms2.5 ms2.5 ms12121241/1
switch/problemjupyddl:bfssolved3.1 ms3.1 ms3.1 ms3341/1
tsp/problemjupyddl:bfssolved1.6 ms1.6 ms1.6 ms155181/1
blocksworld/problemjupyddl:gbfs/hffsolved1.4 ms1.4 ms1.4 ms2221/1
miconic/s1-0jupyddl:gbfs/hffsolved1.8 ms1.8 ms1.8 ms4441/1
miconic/s1-1jupyddl:gbfs/hffsolved1.8 ms1.8 ms1.8 ms3331/1
miconic/s10-0jupyddl:gbfs/hffsolved217.7 ms217.7 ms217.7 ms3535431/1
miconic/s11-0jupyddl:gbfs/hffsolved287.6 ms287.6 ms287.6 ms3939461/1
pallet/problemjupyddl:gbfs/hffsolved2.4 ms2.4 ms2.4 ms1212121/1
switch/problemjupyddl:gbfs/hffsolved3.6 ms3.6 ms3.6 ms3331/1
tsp/problemjupyddl:gbfs/hffsolved1.7 ms1.7 ms1.7 ms15551/1
random_obstacles/16x16/n16/d0.15pymapf:cbspartial (timeout)1.43 s133.6 ms2.72 s173.521.54882/3time limit (15s) reached after 4474 nodes
random_obstacles/16x16/n4/d0.15pymapf:cbssolved995 µs945 µs1.9 ms421513/3
random_obstacles/16x16/n8/d0.15pymapf:cbssolved2.3 ms1.2 ms6.9 ms641423/3
random_obstacles/16x16/n16/d0.15pymapf:lacamsolved9.6 ms9.5 ms10.7 ms19119193/3
random_obstacles/16x16/n4/d0.15pymapf:lacamsolved2.7 ms2.6 ms3.2 ms4416163/3
random_obstacles/16x16/n8/d0.15pymapf:lacamsolved4.8 ms4.5 ms5.3 ms6414143/3
random_obstacles/16x16/n16/d0.15pymapf:pibtsolved9.1 ms8.7 ms9.9 ms19119193/3
random_obstacles/16x16/n4/d0.15pymapf:pibtsolved2.4 ms2.3 ms2.7 ms4416163/3
random_obstacles/16x16/n8/d0.15pymapf:pibtsolved4.4 ms4.1 ms4.6 ms6414143/3
random_obstacles/16x16/n16/d0.15pymapf:prioritizedsolved16.9 ms16.5 ms19.2 ms17719163/3
random_obstacles/16x16/n4/d0.15pymapf:prioritizedsolved1.4 ms1.3 ms2.2 ms421543/3
random_obstacles/16x16/n8/d0.15pymapf:prioritizedsolved3.5 ms3.2 ms4.9 ms641483/3

Median, Min and Max are over the solved repetitions of that cell only, so a partially-solved cell times the repetitions that finished and a cell that never solved shows —. A timeout row is therefore absent from every time column here: what it recorded is wall_time_s in the results file, the elapsed time at which the run was stopped — slightly past the budget, because a planner notices its own limit and unwinds — and never an estimate of how long a solution would have taken. The budget itself is the separate timeout_s column. Sorting this table reorders rows whose Samples denominators differ; the Samples column is shown so that is visible.

Classical planning — coverage

Eighteen instances spanning trivial to genuinely hard for a pure-Python planner, run over six jupyddl configurations with a 20-second per-instance budget. Read the cactus plot rather than the mean runtime: the configurations differ in how many instances they finish at all, not in how fast they finish the easy ones.

11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz (16 logical CPUs), Linux 6.8.0-136-generic (x86_64), Python 3.10.12, harness 0.1.0@62459c293440. Installed: jupyddl 2.3.0, matplotlib 3.10.9, numpy 2.2.6, openplan-bench 0.1.0, pymapf 0.8.0.
Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
run stamped 2026-08-20T21:46:40+00:00 (one stamp for the whole run) · published 2026-08-20T21:56:13+00:00 · results: 2026-08-20.csv

Single-sample timings. Every cell in this suite is one measurement: one seed, one repetition. Median, Min and Max are then the same number three times — a sample, not an observed range. Node counts, cost and validity are unaffected, being deterministic; the seconds should not be quoted with a spread until the suite is re-run with more seeds.

Rows recorded108
Runs attempted108
Solved68
Timed out28
Errored6
Not run0

These six count rows — one per (configuration, instance, seed, repetition). The Solved column in the leaderboard below counts instances, and only those a configuration solved on every seed, so the two numbers are different measurements of different things and will not agree.

Leaderboard

Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
ConfigurationFamilyCoverageSolvedInstancesTimeoutsErrorsUnsolvedMedian time
solved only
Total time
solved only
Expanded
solved only
jupyddl:gbfs/hffclassical89%16180112.4 ms1.71 s368
jupyddl:gbfs/haddclassical89%16180112.4 ms1.74 s383
jupyddl:bfsclassical50%918711995 µs11.4 ms170
jupyddl:dijkstraclassical50%9187111.0 ms12.0 ms201
jupyddl:astar/hmaxclassical50%9187111.2 ms16.7 ms180
jupyddl:astar/lmcutclassical50%9187112.0 ms52.2 ms164

Coverage is Solved ÷ Instances, and both are columns here so the denominator is never implied. Median time, Total time and Expanded are computed over the instances a configuration actually solved, so each row has a different denominator and none of those three are comparable across rows — including when you sort by them. A configuration that solves only the easy instances posts the fastest time and the smallest node count on this table; that is an artefact of the subset it solved, not a result. Read them against Coverage and Instances, never instead of them.

Figures

Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.

Every instance

Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
InstanceConfigurationOutcomeMedian timeMinMaxCostLengthMakespanExpandedSamples
seeds x reps
Note
blocksworld/problemjupyddl:astar/hmaxsolved709 µs709 µs709 µs2221/1
dinner/problemjupyddl:astar/hmaxsolved2.1 ms2.1 ms2.1 ms1111/1
flip/problemjupyddl:astar/hmaxsolved2.3 ms2.3 ms2.3 ms33221/1
grid/problemjupyddl:astar/hmaxerror0/1jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:astar/hmaxsolved1.0 ms1.0 ms1.0 ms4441/1
miconic/s1-1jupyddl:astar/hmaxsolved1.1 ms1.1 ms1.1 ms3331/1
miconic/s1-2jupyddl:astar/hmaxsolved1.1 ms1.1 ms1.1 ms4441/1
miconic/s10-0jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
miconic/s10-1jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
miconic/s10-2jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
miconic/s11-0jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
miconic/s11-1jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
miconic/s12-0jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
miconic/s12-1jupyddl:astar/hmaxtimeout0/1planner stopped on its internal time limit
pallet/problemjupyddl:astar/hmaxsolved4.4 ms4.4 ms4.4 ms12121271/1
switch/problemjupyddl:astar/hmaxsolved2.8 ms2.8 ms2.8 ms3351/1
tsp/problemjupyddl:astar/hmaxsolved1.2 ms1.2 ms1.2 ms155121/1
vehicle/problemjupyddl:astar/hmaxunsolved0/1search space exhausted without finding a plan
blocksworld/problemjupyddl:astar/lmcutsolved904 µs904 µs904 µs2221/1
dinner/problemjupyddl:astar/lmcutsolved2.5 ms2.5 ms2.5 ms1111/1
flip/problemjupyddl:astar/lmcutsolved7.7 ms7.7 ms7.7 ms3361/1
grid/problemjupyddl:astar/lmcuterror0/1jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:astar/lmcutsolved1.1 ms1.1 ms1.1 ms4441/1
miconic/s1-1jupyddl:astar/lmcutsolved1.2 ms1.2 ms1.2 ms3331/1
miconic/s1-2jupyddl:astar/lmcutsolved1.2 ms1.2 ms1.2 ms4441/1
miconic/s10-0jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
miconic/s10-1jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
miconic/s10-2jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
miconic/s11-0jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
miconic/s11-1jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
miconic/s12-0jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
miconic/s12-1jupyddl:astar/lmcuttimeout0/1planner stopped on its internal time limit
pallet/problemjupyddl:astar/lmcutsolved32.2 ms32.2 ms32.2 ms12121271/1
switch/problemjupyddl:astar/lmcutsolved3.5 ms3.5 ms3.5 ms3351/1
tsp/problemjupyddl:astar/lmcutsolved2.0 ms2.0 ms2.0 ms155121/1
vehicle/problemjupyddl:astar/lmcutunsolved0/1search space exhausted without finding a plan
blocksworld/problemjupyddl:bfssolved591 µs591 µs591 µs2221/1
dinner/problemjupyddl:bfssolved1.9 ms1.9 ms1.9 ms1111/1
flip/problemjupyddl:bfssolved898 µs898 µs898 µs3391/1
grid/problemjupyddl:bfserror0/1jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:bfssolved1.0 ms1.0 ms1.0 ms4441/1
miconic/s1-1jupyddl:bfssolved991 µs991 µs991 µs3341/1
miconic/s1-2jupyddl:bfssolved995 µs995 µs995 µs4441/1
miconic/s10-0jupyddl:bfstimeout0/1planner stopped on its internal time limit
miconic/s10-1jupyddl:bfstimeout0/1planner stopped on its internal time limit
miconic/s10-2jupyddl:bfstimeout0/1planner stopped on its internal time limit
miconic/s11-0jupyddl:bfstimeout0/1planner stopped on its internal time limit
miconic/s11-1jupyddl:bfstimeout0/1planner stopped on its internal time limit
miconic/s12-0jupyddl:bfstimeout0/1planner stopped on its internal time limit
miconic/s12-1jupyddl:bfstimeout0/1planner stopped on its internal time limit
pallet/problemjupyddl:bfssolved1.8 ms1.8 ms1.8 ms12121241/1
switch/problemjupyddl:bfssolved2.3 ms2.3 ms2.3 ms3341/1
tsp/problemjupyddl:bfssolved959 µs959 µs959 µs155181/1
vehicle/problemjupyddl:bfsunsolved0/1search space exhausted without finding a plan
blocksworld/problemjupyddl:dijkstrasolved617 µs617 µs617 µs2241/1
dinner/problemjupyddl:dijkstrasolved1.9 ms1.9 ms1.9 ms1121/1
flip/problemjupyddl:dijkstrasolved1.1 ms1.1 ms1.1 ms33271/1
grid/problemjupyddl:dijkstraerror0/1jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:dijkstrasolved1.0 ms1.0 ms1.0 ms4441/1
miconic/s1-1jupyddl:dijkstrasolved1.0 ms1.0 ms1.0 ms3341/1
miconic/s1-2jupyddl:dijkstrasolved1.0 ms1.0 ms1.0 ms4441/1
miconic/s10-0jupyddl:dijkstratimeout0/1planner stopped on its internal time limit
miconic/s10-1jupyddl:dijkstratimeout0/1planner stopped on its internal time limit
miconic/s10-2jupyddl:dijkstratimeout0/1planner stopped on its internal time limit
miconic/s11-0jupyddl:dijkstratimeout0/1planner stopped on its internal time limit
miconic/s11-1jupyddl:dijkstratimeout0/1planner stopped on its internal time limit
miconic/s12-0jupyddl:dijkstratimeout0/1planner stopped on its internal time limit
miconic/s12-1jupyddl:dijkstratimeout0/1planner stopped on its internal time limit
pallet/problemjupyddl:dijkstrasolved2.0 ms2.0 ms2.0 ms12121271/1
switch/problemjupyddl:dijkstrasolved2.4 ms2.4 ms2.4 ms3351/1
tsp/problemjupyddl:dijkstrasolved1.0 ms1.0 ms1.0 ms155241/1
vehicle/problemjupyddl:dijkstraunsolved0/1search space exhausted without finding a plan
blocksworld/problemjupyddl:gbfs/haddsolved687 µs687 µs687 µs2221/1
dinner/problemjupyddl:gbfs/haddsolved2.1 ms2.1 ms2.1 ms1111/1
flip/problemjupyddl:gbfs/haddsolved1.3 ms1.3 ms1.3 ms3331/1
grid/problemjupyddl:gbfs/hadderror0/1jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:gbfs/haddsolved1.1 ms1.1 ms1.1 ms4441/1
miconic/s1-1jupyddl:gbfs/haddsolved1.1 ms1.1 ms1.1 ms3331/1
miconic/s1-2jupyddl:gbfs/haddsolved1.0 ms1.0 ms1.0 ms4441/1
miconic/s10-0jupyddl:gbfs/haddsolved216.7 ms216.7 ms216.7 ms3939611/1
miconic/s10-1jupyddl:gbfs/haddsolved175.9 ms175.9 ms175.9 ms3636421/1
miconic/s10-2jupyddl:gbfs/haddsolved169.9 ms169.9 ms169.9 ms3737381/1
miconic/s11-0jupyddl:gbfs/haddsolved232.7 ms232.7 ms232.7 ms4242461/1
miconic/s11-1jupyddl:gbfs/haddsolved260.5 ms260.5 ms260.5 ms4242441/1
miconic/s12-0jupyddl:gbfs/haddsolved322.4 ms322.4 ms322.4 ms4646591/1
miconic/s12-1jupyddl:gbfs/haddsolved352.1 ms352.1 ms352.1 ms4545521/1
pallet/problemjupyddl:gbfs/haddsolved1.5 ms1.5 ms1.5 ms1212121/1
switch/problemjupyddl:gbfs/haddsolved2.6 ms2.6 ms2.6 ms3331/1
tsp/problemjupyddl:gbfs/haddsolved1.1 ms1.1 ms1.1 ms15591/1
vehicle/problemjupyddl:gbfs/haddunsolved0/1search space exhausted without finding a plan
blocksworld/problemjupyddl:gbfs/hffsolved676 µs676 µs676 µs2221/1
dinner/problemjupyddl:gbfs/hffsolved2.2 ms2.2 ms2.2 ms1111/1
flip/problemjupyddl:gbfs/hffsolved1.4 ms1.4 ms1.4 ms3331/1
grid/problemjupyddl:gbfs/hfferror0/1jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms4441/1
miconic/s1-1jupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms3331/1
miconic/s1-2jupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms4441/1
miconic/s10-0jupyddl:gbfs/hffsolved175.0 ms175.0 ms175.0 ms3535431/1
miconic/s10-1jupyddl:gbfs/hffsolved174.5 ms174.5 ms174.5 ms3434371/1
miconic/s10-2jupyddl:gbfs/hffsolved173.8 ms173.8 ms173.8 ms3434401/1
miconic/s11-0jupyddl:gbfs/hffsolved240.2 ms240.2 ms240.2 ms3939461/1
miconic/s11-1jupyddl:gbfs/hffsolved259.4 ms259.4 ms259.4 ms3737411/1
miconic/s12-0jupyddl:gbfs/hffsolved324.3 ms324.3 ms324.3 ms4242631/1
miconic/s12-1jupyddl:gbfs/hffsolved348.3 ms348.3 ms348.3 ms4444611/1
pallet/problemjupyddl:gbfs/hffsolved1.7 ms1.7 ms1.7 ms1212121/1
switch/problemjupyddl:gbfs/hffsolved2.6 ms2.6 ms2.6 ms3331/1
tsp/problemjupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms15551/1
vehicle/problemjupyddl:gbfs/hffunsolved0/1search space exhausted without finding a plan

Median, Min and Max are over the solved repetitions of that cell only, so a partially-solved cell times the repetitions that finished and a cell that never solved shows —. A timeout row is therefore absent from every time column here: what it recorded is wall_time_s in the results file, the elapsed time at which the run was stopped — slightly past the budget, because a planner notices its own limit and unwinds — and never an estimate of how long a solution would have taken. The budget itself is the separate timeout_s column. Sorting this table reorders rows whose Samples denominators differ; the Samples column is shown so that is visible.

Classical planning — smoke

Eight hand-written instances plus the five one-passenger miconic problems, across six jupyddl configurations. Classical planning here is deterministic, so the seed does nothing and the three repetitions exist purely to give the timing a median rather than a single sample.

11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz (16 logical CPUs), Linux 6.8.0-136-generic (x86_64), Python 3.10.12, harness 0.1.0@62459c293440. Installed: jupyddl 2.3.0, matplotlib 3.10.9, numpy 2.2.6, openplan-bench 0.1.0, pymapf 0.8.0.
Per-instance budget: 30 s wall clock, 3,072 MiB address space (RLIMIT_AS).
run stamped 2026-08-20T21:46:29+00:00 (one stamp for the whole run) · published 2026-08-20T21:46:39+00:00 · results: 2026-08-20.csv

Rows recorded234
Runs attempted234
Solved198
Timed out0
Errored18
Not run0

These six count rows — one per (configuration, instance, seed, repetition). The Solved column in the leaderboard below counts instances, and only those a configuration solved on every seed, so the two numbers are different measurements of different things and will not agree.

Leaderboard

Per-instance budget: 30 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
ConfigurationFamilyCoverageSolvedInstancesTimeoutsErrorsUnsolvedMedian time
solved only
Total time
solved only
Expanded
solved only
jupyddl:bfsclassical85%11130111.0 ms13.6 ms534
jupyddl:dijkstraclassical85%11130111.0 ms13.9 ms627
jupyddl:gbfs/haddclassical85%11130111.1 ms14.9 ms147
jupyddl:gbfs/hffclassical85%11130111.1 ms15.0 ms135
jupyddl:astar/hmaxclassical85%11130111.1 ms18.8 ms564
jupyddl:astar/lmcutclassical85%11130111.2 ms56.8 ms514

Coverage is Solved ÷ Instances, and both are columns here so the denominator is never implied. Median time, Total time and Expanded are computed over the instances a configuration actually solved, so each row has a different denominator and none of those three are comparable across rows — including when you sort by them. A configuration that solves only the easy instances posts the fastest time and the smallest node count on this table; that is an artefact of the subset it solved, not a result. Read them against Coverage and Instances, never instead of them.

Figures

Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 30 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 30 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 30 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 30 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.

Every instance

Per-instance budget: 30 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
InstanceConfigurationOutcomeMedian timeMinMaxCostLengthMakespanExpandedSamples
seeds x reps
Note
blocksworld/problemjupyddl:astar/hmaxsolved682 µs662 µs685 µs2223/3
dinner/problemjupyddl:astar/hmaxsolved2.1 ms2.1 ms2.1 ms1113/3
flip/problemjupyddl:astar/hmaxsolved2.2 ms2.1 ms2.3 ms33223/3
grid/problemjupyddl:astar/hmaxerror0/3jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:astar/hmaxsolved1.1 ms1.0 ms1.1 ms4443/3
miconic/s1-1jupyddl:astar/hmaxsolved1.1 ms1.1 ms1.1 ms3333/3
miconic/s1-2jupyddl:astar/hmaxsolved1.1 ms1.1 ms1.1 ms4443/3
miconic/s1-3jupyddl:astar/hmaxsolved1.1 ms1.0 ms1.1 ms4443/3
miconic/s1-4jupyddl:astar/hmaxsolved1.0 ms1.0 ms1.1 ms4443/3
pallet/problemjupyddl:astar/hmaxsolved4.3 ms4.3 ms4.4 ms12121273/3
switch/problemjupyddl:astar/hmaxsolved3.0 ms2.7 ms3.3 ms3353/3
tsp/problemjupyddl:astar/hmaxsolved1.2 ms1.1 ms1.3 ms155123/3
vehicle/problemjupyddl:astar/hmaxunsolved0/3search space exhausted without finding a plan
blocksworld/problemjupyddl:astar/lmcutsolved904 µs894 µs928 µs2223/3
dinner/problemjupyddl:astar/lmcutsolved2.4 ms2.3 ms2.4 ms1113/3
flip/problemjupyddl:astar/lmcutsolved7.7 ms7.6 ms7.8 ms3363/3
grid/problemjupyddl:astar/lmcuterror0/3jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:astar/lmcutsolved1.2 ms1.2 ms1.2 ms4443/3
miconic/s1-1jupyddl:astar/lmcutsolved1.2 ms1.2 ms1.3 ms3333/3
miconic/s1-2jupyddl:astar/lmcutsolved1.2 ms1.1 ms1.2 ms4443/3
miconic/s1-3jupyddl:astar/lmcutsolved1.2 ms1.2 ms1.3 ms4443/3
miconic/s1-4jupyddl:astar/lmcutsolved1.2 ms1.2 ms1.2 ms4443/3
pallet/problemjupyddl:astar/lmcutsolved33.8 ms33.0 ms34.3 ms12121263/3
switch/problemjupyddl:astar/lmcutsolved3.5 ms3.4 ms3.6 ms3353/3
tsp/problemjupyddl:astar/lmcutsolved2.5 ms2.1 ms2.8 ms155123/3
vehicle/problemjupyddl:astar/lmcutunsolved0/3search space exhausted without finding a plan
blocksworld/problemjupyddl:bfssolved571 µs565 µs583 µs2223/3
dinner/problemjupyddl:bfssolved1.9 ms1.9 ms2.0 ms1113/3
flip/problemjupyddl:bfssolved964 µs882 µs999 µs3393/3
grid/problemjupyddl:bfserror0/3jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:bfssolved997 µs994 µs1.0 ms4443/3
miconic/s1-1jupyddl:bfssolved1.0 ms990 µs1.0 ms3343/3
miconic/s1-2jupyddl:bfssolved1.0 ms1.0 ms1.0 ms4443/3
miconic/s1-3jupyddl:bfssolved1.1 ms1.0 ms1.1 ms4443/3
miconic/s1-4jupyddl:bfssolved1.0 ms985 µs1.0 ms4443/3
pallet/problemjupyddl:bfssolved1.8 ms1.8 ms1.9 ms12121243/3
switch/problemjupyddl:bfssolved2.3 ms2.2 ms2.3 ms3343/3
tsp/problemjupyddl:bfssolved973 µs936 µs976 µs155183/3
vehicle/problemjupyddl:bfsunsolved0/3search space exhausted without finding a plan
blocksworld/problemjupyddl:dijkstrasolved590 µs580 µs594 µs2243/3
dinner/problemjupyddl:dijkstrasolved1.9 ms1.9 ms1.9 ms1123/3
flip/problemjupyddl:dijkstrasolved1.1 ms1.1 ms1.2 ms33273/3
grid/problemjupyddl:dijkstraerror0/3jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:dijkstrasolved1.0 ms996 µs1.1 ms4443/3
miconic/s1-1jupyddl:dijkstrasolved995 µs966 µs1.0 ms3343/3
miconic/s1-2jupyddl:dijkstrasolved1.0 ms996 µs1.0 ms4443/3
miconic/s1-3jupyddl:dijkstrasolved1.0 ms986 µs1.0 ms4443/3
miconic/s1-4jupyddl:dijkstrasolved1.0 ms997 µs1.1 ms4443/3
pallet/problemjupyddl:dijkstrasolved1.9 ms1.9 ms1.9 ms12121273/3
switch/problemjupyddl:dijkstrasolved2.3 ms2.2 ms2.3 ms3353/3
tsp/problemjupyddl:dijkstrasolved1.0 ms985 µs1.3 ms155243/3
vehicle/problemjupyddl:dijkstraunsolved0/3search space exhausted without finding a plan
blocksworld/problemjupyddl:gbfs/haddsolved670 µs670 µs675 µs2223/3
dinner/problemjupyddl:gbfs/haddsolved2.1 ms2.1 ms2.1 ms1113/3
flip/problemjupyddl:gbfs/haddsolved1.4 ms1.3 ms1.4 ms3333/3
grid/problemjupyddl:gbfs/hadderror0/3jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:gbfs/haddsolved1.1 ms1.0 ms1.1 ms4443/3
miconic/s1-1jupyddl:gbfs/haddsolved1.1 ms1.0 ms1.1 ms3333/3
miconic/s1-2jupyddl:gbfs/haddsolved1.1 ms1.1 ms1.2 ms4443/3
miconic/s1-3jupyddl:gbfs/haddsolved1.1 ms1.1 ms1.1 ms4443/3
miconic/s1-4jupyddl:gbfs/haddsolved1.0 ms1.0 ms1.1 ms4443/3
pallet/problemjupyddl:gbfs/haddsolved1.5 ms1.4 ms1.5 ms1212123/3
switch/problemjupyddl:gbfs/haddsolved2.6 ms2.5 ms2.6 ms3333/3
tsp/problemjupyddl:gbfs/haddsolved1.3 ms1.2 ms1.8 ms15593/3
vehicle/problemjupyddl:gbfs/haddunsolved0/3search space exhausted without finding a plan
blocksworld/problemjupyddl:gbfs/hffsolved683 µs679 µs706 µs2223/3
dinner/problemjupyddl:gbfs/hffsolved2.1 ms2.1 ms2.2 ms1113/3
flip/problemjupyddl:gbfs/hffsolved1.4 ms1.4 ms1.4 ms3333/3
grid/problemjupyddl:gbfs/hfferror0/3jupyddl.parser.ast.UnsupportedFeatureError: nested/numeric term in atom is not supported: ['wall', 'xpos', ['+', 'ypos', '1']]
miconic/s1-0jupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms4443/3
miconic/s1-1jupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms3333/3
miconic/s1-2jupyddl:gbfs/hffsolved1.1 ms1.0 ms1.1 ms4443/3
miconic/s1-3jupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms4443/3
miconic/s1-4jupyddl:gbfs/hffsolved1.1 ms1.1 ms1.1 ms4443/3
pallet/problemjupyddl:gbfs/hffsolved1.7 ms1.6 ms1.7 ms1212123/3
switch/problemjupyddl:gbfs/hffsolved2.7 ms2.6 ms2.7 ms3333/3
tsp/problemjupyddl:gbfs/hffsolved1.0 ms1.0 ms1.1 ms15553/3
vehicle/problemjupyddl:gbfs/hffunsolved0/3search space exhausted without finding a plan

Median, Min and Max are over the solved repetitions of that cell only, so a partially-solved cell times the repetitions that finished and a cell that never solved shows —. A timeout row is therefore absent from every time column here: what it recorded is wall_time_s in the results file, the elapsed time at which the run was stopped — slightly past the budget, because a planner notices its own limit and unwinds — and never an estimate of how long a solution would have taken. The budget itself is the separate timeout_s column. Sorting this table reorders rows whose Samples denominators differ; the Samples column is shown so that is visible.

MAPF — obstacle density

Sixteen agents on 20x20 grids, obstacle density from 5% to 30%, five seeds. Same solvers as the scaling suite. The generator guarantees every start and goal lies in one connected region, so a failure here is a solver failure and never an unreachable goal.

11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz (16 logical CPUs), Linux 6.8.0-136-generic (x86_64), Python 3.10.12, harness 0.1.0@1c81f77e6938. Installed: jupyddl 2.3.0, matplotlib 3.10.9, numpy 2.2.6, openplan-bench 0.1.0, pymapf 0.8.0.
Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
rows stamped 2026-08-21T16:25:36+00:00 to 2026-08-21T16:31:23+00:00 · published 2026-08-21T16:31:23+00:00 · results: 2026-08-20.csv, 2026-08-21.csv

Rows recorded150
Runs attempted150
Solved130
Timed out16
Errored0
Not run0

These six count rows — one per (configuration, instance, seed, repetition). The Solved column in the leaderboard below counts instances, and only those a configuration solved on every seed, so the two numbers are different measurements of different things and will not agree.

Leaderboard

Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
ConfigurationFamilyCoverageSolvedInstancesTimeoutsErrorsUnsolvedMedian time
solved only
Total time
solved only
Expanded
solved only
pymapf:pibtmapf100%6600013.0 ms78.2 ms874
pymapf:lacammapf100%6600013.9 ms84.7 ms875
pymapf:wcbsmapf83%5610057.3 ms351.4 ms863
pymapf:prioritizedmapf67%4600224.4 ms96.2 ms416
pymapf:cbsmapf17%1650074.7 ms74.7 ms7,616

Coverage is Solved ÷ Instances, and both are columns here so the denominator is never implied. Median time, Total time and Expanded are computed over the instances a configuration actually solved, so each row has a different denominator and none of those three are comparable across rows — including when you sort by them. A configuration that solves only the easy instances posts the fastest time and the smallest node count on this table; that is an artefact of the subset it solved, not a result. Read them against Coverage and Instances, never instead of them.

Figures

Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Median wall time against obstacle density; the band is the observed min–max over seeds. Every curve is drawn only over the values that solver solved on every seed, so two curves of different length cover different instance sets and their heights are not a like-for-like comparison. Hollow triangles mark cells that hit the budget. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Median wall time against obstacle density; the band is the observed min–max over seeds. Every curve is drawn only over the values that solver solved on every seed, so two curves of different length cover different instance sets and their heights are not a like-for-like comparison. Hollow triangles mark cells that hit the budget. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).

Every instance

Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
InstanceConfigurationOutcomeMedian timeMinMaxCostLengthMakespanExpandedSamples
seeds x reps
Note
random_obstacles/20x20/n16/d0.05pymapf:cbspartial (timeout)67.8 ms16.0 ms8.51 s18223143/5time limit (20s) reached after 3403 nodes
random_obstacles/20x20/n16/d0.1pymapf:cbssolved74.7 ms30.2 ms118.4 ms21628155/5
random_obstacles/20x20/n16/d0.15pymapf:cbspartial (timeout)159.8 ms77.0 ms16.77 s21222463/5time limit (20s) reached after 6289 nodes
random_obstacles/20x20/n16/d0.2pymapf:cbspartial (timeout)82.3 ms56.2 ms108.4 ms230.522.5262/5time limit (20s) reached after 4607 nodes
random_obstacles/20x20/n16/d0.25pymapf:cbspartial (timeout)3.56 s3.56 s3.56 s214267121/5time limit (20s) reached after 4858 nodes
random_obstacles/20x20/n16/d0.3pymapf:cbspartial (timeout)99.5 ms99.5 ms99.5 ms19323301/5time limit (20s) reached after 4822 nodes
random_obstacles/20x20/n16/d0.05pymapf:lacamsolved14.0 ms13.8 ms15.0 ms24024245/5
random_obstacles/20x20/n16/d0.1pymapf:lacamsolved14.5 ms12.9 ms15.1 ms24628285/5
random_obstacles/20x20/n16/d0.15pymapf:lacamsolved13.7 ms12.9 ms14.4 ms24226265/5
random_obstacles/20x20/n16/d0.2pymapf:lacamsolved16.6 ms15.6 ms17.9 ms23729295/5
random_obstacles/20x20/n16/d0.25pymapf:lacamsolved13.3 ms12.8 ms15.3 ms28332325/5
random_obstacles/20x20/n16/d0.3pymapf:lacamsolved12.5 ms10.5 ms13.9 ms32733335/5
random_obstacles/20x20/n16/d0.05pymapf:pibtsolved13.4 ms12.9 ms14.3 ms24024245/5
random_obstacles/20x20/n16/d0.1pymapf:pibtsolved13.6 ms13.0 ms13.9 ms24628285/5
random_obstacles/20x20/n16/d0.15pymapf:pibtsolved12.7 ms12.3 ms13.1 ms24226265/5
random_obstacles/20x20/n16/d0.2pymapf:pibtsolved14.7 ms13.6 ms18.6 ms23729295/5
random_obstacles/20x20/n16/d0.25pymapf:pibtsolved12.1 ms11.5 ms13.2 ms28332325/5
random_obstacles/20x20/n16/d0.3pymapf:pibtsolved11.8 ms10.3 ms12.6 ms32733335/5
random_obstacles/20x20/n16/d0.05pymapf:prioritizedsolved23.6 ms18.6 ms28.9 ms21424165/5
random_obstacles/20x20/n16/d0.1pymapf:prioritizedsolved25.4 ms19.9 ms39.8 ms23128165/5
random_obstacles/20x20/n16/d0.15pymapf:prioritizedsolved22.2 ms21.3 ms23.6 ms22025165/5
random_obstacles/20x20/n16/d0.2pymapf:prioritizedsolved25.1 ms22.2 ms31.2 ms21225165/5
random_obstacles/20x20/n16/d0.25pymapf:prioritizedpartial (unsolved)28.4 ms28.0 ms67.3 ms24126163/5agent 'a14' has no path under the reservations of the 14 higher-priority agents
random_obstacles/20x20/n16/d0.3pymapf:prioritizedpartial (unsolved)32.9 ms22.0 ms47.8 ms24224163/5agent 'a9' has no path under the reservations of the 9 higher-priority agents
random_obstacles/20x20/n16/d0.05pymapf:wcbssolved43.1 ms16.3 ms120.3 ms22024105/5
random_obstacles/20x20/n16/d0.1pymapf:wcbssolved54.0 ms29.5 ms70.9 ms2162895/5
random_obstacles/20x20/n16/d0.15pymapf:wcbssolved61.2 ms50.5 ms152.0 ms21524165/5
random_obstacles/20x20/n16/d0.2pymapf:wcbssolved57.3 ms33.8 ms195.8 ms22625135/5
random_obstacles/20x20/n16/d0.25pymapf:wcbssolved135.7 ms65.2 ms377.0 ms24229265/5
random_obstacles/20x20/n16/d0.3pymapf:wcbspartial (timeout)615.9 ms34.2 ms5.00 s2582965.54/5time limit (20s) reached after 1286 nodes

Median, Min and Max are over the solved repetitions of that cell only, so a partially-solved cell times the repetitions that finished and a cell that never solved shows —. A timeout row is therefore absent from every time column here: what it recorded is wall_time_s in the results file, the elapsed time at which the run was stopped — slightly past the budget, because a planner notices its own limit and unwinds — and never an estimate of how long a solution would have taken. The budget itself is the separate timeout_s column. Sorting this table reorders rows whose Samples denominators differ; the Samples column is shown so that is visible.

MAPF — scaling with agent count

Random-obstacle grids at 15% density, from 4 to 32 agents, over five seeds. Five pymapf solvers and both cuplan CPU solvers on the same generated instances. CBS and weighted CBS are optimal and bounded-suboptimal respectively, on sum of costs. LaCAM (Okumura, 2023) is complete but not optimal; PIBT (Okumura et al., 2022) is neither; prioritized planning is neither. Completeness is a statement about eventual termination, not about finishing inside this suite's 20-second budget. Expect the optimal solvers to fall off first — that is the result, not a failure of the run.

11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz (16 logical CPUs), Linux 6.8.0-136-generic (x86_64), Python 3.10.12, harness 0.1.0@7c0b8e81ea92. Installed: jupyddl 2.3.0, matplotlib 3.10.9, numpy 2.2.6, openplan-bench 0.1.0, pymapf 0.8.0.
Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
rows stamped 2026-08-21T16:39:44+00:00 to 2026-08-21T16:46:42+00:00 · published 2026-08-21T16:46:42+00:00 · results: 2026-08-20.csv, 2026-08-21.csv

Rows recorded400
Runs attempted350
Solved322
Timed out17
Errored0
Not run50

These six count rows — one per (configuration, instance, seed, repetition). The Solved column in the leaderboard below counts instances, and only those a configuration solved on every seed, so the two numbers are different measurements of different things and will not agree.

Leaderboard

Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
ConfigurationFamilyCoverageSolvedInstancesTimeoutsErrorsUnsolvedMedian time
solved only
Total time
solved only
Expanded
solved only
pymapf:lacammapf100%101000011.9 ms149.3 ms1,251
pymapf:wcbsmapf100%101000050.0 ms1.86 s2,052
pymapf:pibtmapf90%9100019.0 ms121.0 ms1,199
cuplan:prioritized@cpumapf80%81000214.4 ms160.6 ms
pymapf:prioritizedmapf80%81000210.0 ms266.5 ms720
cuplan:pibt@cpumapf70%71000311.5 ms83.4 ms
pymapf:cbsmapf50%5105003.9 ms90.4 ms4,012
cuplan:pibt@cudamapfnot run

Coverage is Solved ÷ Instances, and both are columns here so the denominator is never implied. Median time, Total time and Expanded are computed over the instances a configuration actually solved, so each row has a different denominator and none of those three are comparable across rows — including when you sort by them. A configuration that solves only the easy instances posts the fastest time and the smallest node count on this table; that is an artefact of the subset it solved, not a result. Read them against Coverage and Instances, never instead of them.

Figures

Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved as the per-instance time budget grows. A curve that stops has run out of instances it can solve, not out of speed. The dashed line is the budget this suite actually ran under. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Instances solved on every seed, with the timed-out and unsolved remainder broken out. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Every run in this suite by outcome, including runs that were never attempted because a backend was absent.
Median wall time against agent count; the band is the observed min–max over seeds. Each point is the median over the cells at that x, which here also differ in grid size. Every curve is drawn only over the values that solver solved on every seed, so two curves of different length cover different instance sets and their heights are not a like-for-like comparison. Hollow triangles mark cells that hit the budget. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).
Median wall time against agent count; the band is the observed min–max over seeds. Each point is the median over the cells at that x, which here also differ in grid size. Every curve is drawn only over the values that solver solved on every seed, so two curves of different length cover different instance sets and their heights are not a like-for-like comparison. Hollow triangles mark cells that hit the budget. Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS).

Every instance

Per-instance budget: 20 s wall clock, 3,072 MiB address space (RLIMIT_AS). Enforced on every row in this table.
InstanceConfigurationOutcomeMedian timeMinMaxCostLengthMakespanExpandedSamples
seeds x reps
Note
random_obstacles/16x16/n16/d0.15cuplan:pibt@cpupartial (unsolved)11.3 ms10.6 ms11.6 ms207.5224/5backend=cpu
random_obstacles/16x16/n24/d0.15cuplan:pibt@cpusolved14.4 ms11.9 ms18.2 ms332265/5backend=cpu
random_obstacles/16x16/n32/d0.15cuplan:pibt@cpupartial (unsolved)14.3 ms12.3 ms17.9 ms46023.54/5backend=cpu
random_obstacles/16x16/n4/d0.15cuplan:pibt@cpusolved9.0 ms8.5 ms9.4 ms44165/5backend=cpu
random_obstacles/16x16/n8/d0.15cuplan:pibt@cpusolved9.4 ms9.0 ms10.7 ms70165/5backend=cpu
random_obstacles/24x24/n16/d0.15cuplan:pibt@cpusolved13.0 ms12.5 ms19.5 ms318305/5backend=cpu
random_obstacles/24x24/n24/d0.15cuplan:pibt@cpusolved14.8 ms14.1 ms23.8 ms420315/5backend=cpu
random_obstacles/24x24/n32/d0.15cuplan:pibt@cpupartial (unsolved)17.8 ms16.5 ms25.8 ms589.530.54/5backend=cpu
random_obstacles/24x24/n4/d0.15cuplan:pibt@cpusolved11.3 ms9.8 ms16.8 ms81245/5backend=cpu
random_obstacles/24x24/n8/d0.15cuplan:pibt@cpusolved11.5 ms11.2 ms11.9 ms128255/5backend=cpu
random_obstacles/16x16/n16/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/16x16/n24/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/16x16/n32/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/16x16/n4/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/16x16/n8/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/24x24/n16/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/24x24/n24/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/24x24/n32/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/24x24/n4/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/24x24/n8/d0.15cuplan:pibt@cudaskipped0/5no working CUDA device (cuplan.cuda_available() returned False)
random_obstacles/16x16/n16/d0.15cuplan:prioritized@cpusolved15.7 ms13.8 ms16.7 ms180195/5backend=cpu
random_obstacles/16x16/n24/d0.15cuplan:prioritized@cpupartial (unsolved)23.7 ms21.6 ms28.5 ms274.520.54/5backend=cpu
random_obstacles/16x16/n32/d0.15cuplan:prioritized@cpupartial (unsolved)30.8 ms28.6 ms35.0 ms360213/5backend=cpu
random_obstacles/16x16/n4/d0.15cuplan:prioritized@cpusolved5.7 ms4.2 ms9.0 ms42155/5backend=cpu
random_obstacles/16x16/n8/d0.15cuplan:prioritized@cpusolved6.3 ms6.1 ms12.6 ms64165/5backend=cpu
random_obstacles/24x24/n16/d0.15cuplan:prioritized@cpusolved27.9 ms24.5 ms45.2 ms283305/5backend=cpu
random_obstacles/24x24/n24/d0.15cuplan:prioritized@cpusolved34.9 ms33.7 ms40.0 ms377315/5backend=cpu
random_obstacles/24x24/n32/d0.15cuplan:prioritized@cpusolved48.9 ms48.0 ms65.0 ms534295/5backend=cpu
random_obstacles/24x24/n4/d0.15cuplan:prioritized@cpusolved8.2 ms5.0 ms10.4 ms77265/5backend=cpu
random_obstacles/24x24/n8/d0.15cuplan:prioritized@cpusolved13.1 ms11.0 ms15.6 ms129265/5backend=cpu
random_obstacles/16x16/n16/d0.15pymapf:cbspartial (timeout)376.8 ms127.2 ms2.50 s171.520136.54/5time limit (20s) reached after 6296 nodes
random_obstacles/16x16/n24/d0.15pymapf:cbspartial (timeout)9.59 s9.59 s9.59 s261221,6971/5time limit (20s) reached after 4914 nodes
random_obstacles/16x16/n32/d0.15pymapf:cbstimeout0/5time limit (20s) reached after 1884 nodes
random_obstacles/16x16/n4/d0.15pymapf:cbssolved1.4 ms799 µs2.1 ms421515/5
random_obstacles/16x16/n8/d0.15pymapf:cbssolved3.9 ms1.1 ms5.9 ms641655/5
random_obstacles/24x24/n16/d0.15pymapf:cbssolved76.6 ms36.3 ms1.39 s27530245/5
random_obstacles/24x24/n24/d0.15pymapf:cbspartial (timeout)1.78 s826.7 ms2.73 s351281342/5time limit (20s) reached after 2508 nodes
random_obstacles/24x24/n32/d0.15pymapf:cbspartial (timeout)5.68 s5.68 s5.68 s490292651/5time limit (20s) reached after 1657 nodes
random_obstacles/24x24/n4/d0.15pymapf:cbssolved3.0 ms702 µs18.9 ms772615/5
random_obstacles/24x24/n8/d0.15pymapf:cbssolved5.5 ms3.1 ms366.6 ms1282535/5
random_obstacles/16x16/n16/d0.15pymapf:lacamsolved8.7 ms7.7 ms9.4 ms19019195/5
random_obstacles/16x16/n24/d0.15pymapf:lacamsolved14.2 ms12.8 ms14.9 ms33523235/5
random_obstacles/16x16/n32/d0.15pymapf:lacamsolved18.5 ms16.7 ms21.8 ms52029295/5
random_obstacles/16x16/n4/d0.15pymapf:lacamsolved2.2 ms2.1 ms2.6 ms4416165/5
random_obstacles/16x16/n8/d0.15pymapf:lacamsolved4.1 ms3.7 ms4.4 ms6416165/5
random_obstacles/24x24/n16/d0.15pymapf:lacamsolved18.9 ms18.0 ms19.7 ms28632325/5
random_obstacles/24x24/n24/d0.15pymapf:lacamsolved27.7 ms25.7 ms29.3 ms40531315/5
random_obstacles/24x24/n32/d0.15pymapf:lacamsolved40.7 ms39.5 ms42.3 ms59031315/5
random_obstacles/24x24/n4/d0.15pymapf:lacamsolved4.8 ms4.5 ms5.3 ms8624245/5
random_obstacles/24x24/n8/d0.15pymapf:lacamsolved9.5 ms9.1 ms9.9 ms12827275/5
random_obstacles/16x16/n16/d0.15pymapf:pibtsolved7.8 ms7.4 ms8.5 ms19019195/5
random_obstacles/16x16/n24/d0.15pymapf:pibtsolved12.9 ms12.2 ms14.0 ms33523235/5
random_obstacles/16x16/n32/d0.15pymapf:pibtpartial (unsolved)16.8 ms15.9 ms17.7 ms492.527.527.54/5livelock: 301 timesteps without reaching the goals
random_obstacles/16x16/n4/d0.15pymapf:pibtsolved1.9 ms1.9 ms2.3 ms4416165/5
random_obstacles/16x16/n8/d0.15pymapf:pibtsolved3.7 ms3.4 ms4.1 ms6416165/5
random_obstacles/24x24/n16/d0.15pymapf:pibtsolved17.9 ms17.7 ms18.5 ms28632325/5
random_obstacles/24x24/n24/d0.15pymapf:pibtsolved27.1 ms25.5 ms27.4 ms40531315/5
random_obstacles/24x24/n32/d0.15pymapf:pibtsolved36.1 ms34.4 ms38.2 ms59031315/5
random_obstacles/24x24/n4/d0.15pymapf:pibtsolved4.5 ms4.3 ms5.0 ms8624245/5
random_obstacles/24x24/n8/d0.15pymapf:pibtsolved9.0 ms8.7 ms9.2 ms12827275/5
random_obstacles/16x16/n16/d0.15pymapf:prioritizedsolved12.4 ms10.6 ms14.2 ms17019165/5
random_obstacles/16x16/n24/d0.15pymapf:prioritizedpartial (unsolved)37.9 ms35.0 ms42.0 ms27320.5244/5agent 'a9' has no path under the reservations of the 9 higher-priority agents
random_obstacles/16x16/n32/d0.15pymapf:prioritizedpartial (unsolved)70.9 ms68.1 ms73.7 ms36921322/5agent 'a28' has no path under the reservations of the 28 higher-priority agents
random_obstacles/16x16/n4/d0.15pymapf:prioritizedsolved1.3 ms998 µs1.9 ms421545/5
random_obstacles/16x16/n8/d0.15pymapf:prioritizedsolved2.6 ms2.4 ms3.8 ms701685/5
random_obstacles/24x24/n16/d0.15pymapf:prioritizedsolved30.3 ms24.3 ms35.9 ms27530165/5
random_obstacles/24x24/n24/d0.15pymapf:prioritizedsolved69.1 ms64.4 ms97.8 ms37931245/5
random_obstacles/24x24/n32/d0.15pymapf:prioritizedsolved139.4 ms128.5 ms147.9 ms51129325/5
random_obstacles/24x24/n4/d0.15pymapf:prioritizedsolved3.7 ms1.3 ms4.5 ms772645/5
random_obstacles/24x24/n8/d0.15pymapf:prioritizedsolved7.7 ms6.7 ms9.8 ms1282685/5
random_obstacles/16x16/n16/d0.15pymapf:wcbssolved47.0 ms27.8 ms70.3 ms17019155/5
random_obstacles/16x16/n24/d0.15pymapf:wcbssolved199.4 ms139.8 ms438.6 ms27521425/5
random_obstacles/16x16/n32/d0.15pymapf:wcbssolved831.1 ms729.7 ms10.46 s372231035/5
random_obstacles/16x16/n4/d0.15pymapf:wcbssolved1.3 ms783 µs3.6 ms421515/5
random_obstacles/16x16/n8/d0.15pymapf:wcbssolved2.2 ms1.1 ms6.0 ms641625/5
random_obstacles/24x24/n16/d0.15pymapf:wcbssolved52.9 ms36.5 ms91.4 ms2753095/5
random_obstacles/24x24/n24/d0.15pymapf:wcbssolved176.6 ms122.8 ms341.6 ms36131215/5
random_obstacles/24x24/n32/d0.15pymapf:wcbssolved545.3 ms452.2 ms992.2 ms49829385/5
random_obstacles/24x24/n4/d0.15pymapf:wcbssolved3.1 ms729 µs18.8 ms772615/5
random_obstacles/24x24/n8/d0.15pymapf:wcbssolved5.4 ms3.2 ms18.3 ms1282635/5

Median, Min and Max are over the solved repetitions of that cell only, so a partially-solved cell times the repetitions that finished and a cell that never solved shows —. A timeout row is therefore absent from every time column here: what it recorded is wall_time_s in the results file, the elapsed time at which the run was stopped — slightly past the budget, because a planner notices its own limit and unwinds — and never an estimate of how long a solution would have taken. The budget itself is the separate timeout_s column. Sorting this table reorders rows whose Samples denominators differ; the Samples column is shown so that is visible.