4.6 KiB
Scratch: manual solver tuning in progress
Current Subgoal
Manual solver tuning is in progress; full-validate tighter/slower local search candidates before shipping params.
Current bounded subgoal
Find a shippable config/solver_params.json update for the simplified explicit phase-field solver. Do not resume random tuner blindly. Continue deliberate parameter nudging with benchmark evidence.
Baseline
Current committed config before tuning:
phase_field_local_search_radius_ratio:0.80phase_field_local_search_blend:0.18phase_field_signal_weight:0.25phase_field_local_search_grid_weight:0.0
Timing / benchmark setup
Manual batches use run_roundtrip_benchmark(...), CPU, steps=48, variants=1, usually pinned ground-truth size (infer_size=False).
Progress/log artifacts are under artifacts/manual-tuning-*, artifacts/tuning-validation-01, and artifacts/tuning-regression-guard-01.
Key findings so far
-
Blindly increasing signal made results worse.
more-signal: score0.7339vs baseline0.6014on 8-case soft+ai slice.signal-and-spring: score0.7090.- Stronger attraction causes feature crowding / artifacts; do not chase bigger signal.
-
Increasing spring weight above current
4.0did nothing on the slice.more-spring: exactly same score as baseline.- Reason found in source:
_relax_lattice_springs_npclamps spring step at0.22, and current4.0is already above the clamp threshold.
-
Smaller local search radius is the first real improvement.
- 8-case soft+ai slice baseline: score
0.6014, mean0.3570, worst1.1717. radius=0.60: score0.3746, mean0.2104, worst0.7575.- Biggest wins were soft enemy cases that baseline lost to naive.
- 8-case soft+ai slice baseline: score
-
Slower local search blend improves further.
radius=0.60, blend=0.10: score0.2804, mean0.1643, worst0.5513on same slice.- Blend bracket showed
0.06,0.07,0.08are basically a plateau. - Best small-slice objective:
radius=0.60, blend=0.07, score0.2687356, mean0.1616738, worst0.5185465. radius=0.60, blend=0.08is almost tied: score0.2687747.
-
Full-corpus validation across all 38 cases x soft/crisp/ai chose
radius=0.60, blend=0.07over baseline andblend=0.08.- Baseline: score
0.7701765, mean0.4552439, worst1.5050192. r060-b007: score0.5790363, mean0.2814493, worst1.2734060.r060-b008: score0.5938681, mean0.2864235, worst1.3112390.r060-b007improved 97 / 114 rows, regressed 14 / 114, tied 3 / 114.- Mean deltas by profile: ai
-0.1981, crisp-0.1836, soft-0.1396.
- Baseline: score
-
Known regression guard says
radius=0.60still hurts specific crisp cases, especiallydisciplecrisp. Full validation worst regression forr060-b007:disciplecrisp: row score0.6688 -> 1.2734, delta+0.6046. Other notable regressions:dagrons5-08crisp:1.1013 -> 1.2413, delta+0.1400.dagrons5-10ai:0.8494 -> 0.9664, delta+0.1170.
-
Regression-guard batch on the known bad cases prefers tighter radius. Cases:
disciple,dagrons5-08,dagrons5-10,dagrons5-11,9rpgenemies-02,9rpgenemies-06,minion,more-rpg-enemies-06; profiles soft/crisp/ai; seed 23.- Guard baseline: score
0.8112430, mean0.5648541, worst1.3861505. r060-b007: score0.6277928, mean0.3144768, worst1.3588636.r055-b007: score0.5313045, mean0.3039784, worst1.0617322.r050-b007: score0.4075140, mean0.2843421, worst0.6949151.r055-b005: score0.4298573, mean0.2982637, worst0.7369090.r060-b007-grid004: score0.6339122, mean0.3133518, worst1.3818866. This meansr050-b007orr055-b005need full-corpus validation before shipping.r060-b007is no longer automatically safe despite winning full validation, because the guard set exposes known bruises.
- Guard baseline: score
Recommended next action after compaction
Run full-corpus validation for:
- baseline
radius=0.60, blend=0.07if not already using existing results for comparisonradius=0.50, blend=0.07radius=0.55, blend=0.05- optionally
radius=0.55, blend=0.07
Use all 38 cases, profiles soft/crisp/ai, seed 23, steps 48, CPU, pinned size. If r050-b007 generalizes, it is the leading ship candidate. If it overfits the guard set, compare r055-b005 and r060-b007 on mean/worst/regression count.
Do not edit config/solver_params.json yet. The current best full-corpus validated params are r060-b007, but the regression guard has created a better hypothesis that still needs full validation.