Knob sweep — how sensitive is the grid to the thresholds?

The adaptive loop’s behaviour on the one-parameter diffusion benchmark depends on a handful of tolerance values. This page is a self-contained sensitivity study: it walks each of those thresholds across a range and records how the terminal refinement level and the per-level verdict counts respond. The goal is to show that the loop’s output is sensitive to the specific tolerance values rather than fixed — small changes move the grid — and to locate which knobs matter and which do not.

As a fixed yardstick, each cell is also scored against a reference verdict-count target: a per-level tuple (n_points, n_subintervals, n_wrong, n_uncertified) that a well-tuned run is expected to produce. The study reports how many of the four target rows each cell reproduces exactly. No single cell reproduces all four.

Model

Same one-parameter 2D diffusion setup as the one-parameter sweep — only the algorithm thresholds vary.

Sweep design

Six threshold axes are walked, all anchored to a single baseline (t_\pi=0.21, t_\lambda=10^{-3}, cluster tolerance 10^{-4}, n_{\text{eigs}}=8, max levels =4):

  1. Lift the artificial L=4 level cap to 8.
  2. t_\lambda \in \{0.03, 0.085, 0.15\} (the a-priori relative-gap threshold).
  3. t_\pi \in \{0.30, 0.43, 0.57\} (the a-posteriori pruning threshold).
  4. n_{\text{eigs}} \in \{4, 6\} (bands tracked per point).
  5. Combined relaxations of (t_\pi, t_\lambda) toward looser values, with and without n_{\text{eigs}}=6.
  6. Fine-tune around the best-scoring (0.43, 0.085, 6) cell.

The reference verdict-count target, per refinement level, is:

L reference target
0 (3, 2, 2, 2)
1 (5, 4, 3, 2)
2 (7, 4, 0, 1)
3 (8, 2, 0, 0)

Each sweep cell’s L0..L3_exact_matches column counts how many of those four rows it reproduces verbatim. The table below ranks the cells by how close they come.

Summary figure

Per-knob termination depth (top) and number of reference rows reproduced exactly (bottom). Bars at 4 in the lower panel would mean perfect reproduction of the reference target; none reach it.

Full sweep table

label t_pi t_lambda cluster_tol n_eigs max_levels terminal_level ran_out L0..L3_exact_matches L0 L1 L2 L3 L4
baseline 0.21 0.001 0.0001 8 4 3 False 1 (3,2,2,2) (5,4,3,3) (8,6,5,1) (9,2,6,0) | | `max_levels=8 only` | `0.21` | `0.001` | `0.0001` | `8` | `8` | `3` | `False` | `1` | `(3,2,2,2)` | `(5,4,3,3)` | `(8,6,5,1)` | `(9,2,6,0)` |
t_lambda=0.03 0.21 0.03 0.0001 8 8 3 False 1 (3,2,2,2) (5,4,3,3) (8,6,5,1) (9,2,6,0) | | `t_lambda=0.085` | `0.21` | `0.085` | `0.0001` | `8` | `8` | `3` | `False` | `1` | `(3,2,2,2)` | `(5,4,3,3)` | `(8,6,5,1)` | `(9,2,6,0)` |
t_lambda=0.15 0.21 0.15 0.0001 8 8 2 False 0 (3,2,1,2) (5,4,1,1) (6,2,2,0) |
t_pi=0.3 0.3 0.001 0.0001 8 8 3 False 1 (3,2,2,2) (5,4,3,3) (8,6,5,1) (9,2,6,0) | | `t_pi=0.43` | `0.43` | `0.001` | `0.0001` | `8` | `8` | `3` | `False` | `1` | `(3,2,2,2)` | `(5,4,3,3)` | `(8,6,5,2)` | `(10,4,6,0)` |
t_pi=0.57 0.57 0.001 0.0001 8 8 4 False 1 (3,2,2,2) (5,4,3,4) (9,8,6,4) (13,8,9,1) (14,2,10,0)
n_eigs=4 0.21 0.001 0.0001 4 8 1 False 0 (3,2,2,1) (4,2,2,0) | | | `n_eigs=6` | `0.21` | `0.001` | `0.0001` | `6` | `8` | `1` | `False` | `0` | `(3,2,2,1)` | `(4,2,2,0)` | |
t_pi=0.43, t_lambda=0.085 0.43 0.085 0.0001 8 8 3 False 1 (3,2,2,2) (5,4,3,3) (8,6,5,2) (10,4,6,0) | | `t_pi=0.57, t_lambda=0.085` | `0.57` | `0.085` | `0.0001` | `8` | `8` | `3` | `False` | `1` | `(3,2,2,2)` | `(5,4,3,4)` | `(9,8,6,4)` | `(13,8,9,0)` |
t_pi=0.43, t_lambda=0.085, n_eigs=6 0.43 0.085 0.0001 6 8 2 False 0 (3,2,1,2) (5,4,2,1) (6,2,2,0) |
tight t_pi=0.21, t_lambda=0.085, n_eigs=6 0.21 0.085 0.0001 6 8 1 False 0 (3,2,2,1) (4,2,2,0) | | | `tight t_pi=0.3, t_lambda=0.085, n_eigs=6` | `0.3` | `0.085` | `0.0001` | `6` | `8` | `2` | `False` | `0` | `(3,2,1,1)` | `(4,2,1,1)` | `(5,2,1,0)` | | | `tight t_pi=0.35, t_lambda=0.085, n_eigs=6` | `0.35` | `0.085` | `0.0001` | `6` | `8` | `2` | `False` | `0` | `(3,2,1,1)` | `(4,2,1,1)` | `(5,2,1,0)` |

The takeaway is twofold: the terminal level and verdict counts shift visibly as t_\pi and n_{\text{eigs}} move (the grid is genuinely sensitive to them), while t_\lambda barely registers in this regime. That the threshold choice is load-bearing is the same lesson the tolerance-perturbation page draws from the downstream ROM error.