Tasks/Physical Sciences & Engineering

Tidal Seabed Friction Field Inversion

Recover a spatial drag field from sparse, noisy tide-gauge amplitudes and phases on unseen basins

Physical Sciences & Engineeringcoastal ocean modelinginverse problems
Background

Coastal hydrodynamic model calibration sets the seabed friction that governs surge height and tidal range, a field that varies across a basin and cannot be measured directly. The starting point is a shallow-water tidal simulator paired with a routine assigning one uniform friction value basin-wide. It is to be rebuilt to infer the full spatial field from scattered gauge amplitudes and phases. Tens of gauges constrain hundreds of unknowns, a few report gross errors, and the method is re-run on unseen basins.

instruction.mdthis is what the agent is given

Design a calibration method for the spatially varying seabed friction field of a tidal basin, starting from a deliberately weak homogeneous-friction solver. Minimize complex tidal-elevation RMSE at unobserved gauges; your submitted method is re-run on sealed basins and sealed gauges for scoring.

Hard Constraints

  • Modify only /app/methods/main/solver.py as the final submission.
  • Keep the public function estimate_logf(case) and return one finite numpy array with shape (24, 24).
  • Use only information in case; do not read validation heads inside the solver.
  • The returned log-friction field must stay in [-3.0, 1.0].
  • A solver call must finish within 60 seconds on two CPU cores and use no network.

What You Have

  • /app/problem.py: the frequency-domain shallow-water tidal simulator (solve_field / simulate) and case schema.
  • /app/data/visible_cases.npz: six calibration cases, each with known bathymetry, the forced open-boundary tide, sparse observed-gauge complex elevations, and separate validation gauges.
  • /app/methods/main/solver.py: a homogeneous weak baseline.
  • /app/selfcheck.py: runs the solver on all visible cases and reports validation-gauge elevation RMSE only.

The inverse problem is deliberately ill-posed: friction is a spatial field, the elliptic tidal response smooths away its fine structure, and gauges are sparse, so many friction fields fit the observed gauges while disagreeing elsewhere. Additionally, a fraction of the observed gauges are faulty — they carry gross, non-Gaussian errors unrelated to the true tide — and which gauges are faulty is not disclosed. The separate validation gauges are clean.

What You Submit

Submit /app/methods/main/solver.py. It should infer a full log-friction field from each case's bathymetry, boundary forcing, observed gauge locations, and observed complex elevations. You may implement optimization, basis design, regularization, adjoint/gradient methods, ensembling, or other numerical methods inside that file.

How It Is Judged

The verifier imports your solver in a restricted child process, gives it new anonymized cases without validation heads, and uses the trusted simulator to compute complex tidal-elevation RMSE at sealed gauges. Lower RMSE is better; the score increases monotonically after clearing the disclosed weak-baseline gate of 0.14, and beating the reference solver is the goal.

Rollouts

129 minWall clock
$28.15Spend
44.9MTokens
21Versions, 12 kept

On the visible set

0 0.025 0.050 0.075 0.100 0.125 0 100 200 300 Agent step Gauge RMSE ↓ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21
keptrolled backsubmitted
  1. v1The agent started from one flat friction value for the whole basin.0.1294271 min · $0.22
  2. v2The agent fit a single robust friction level after trimming the suspect gauges.0.042151 min · $0.32
  3. v3The agent moved to smooth spectral modes solved by robust nonlinear inversion.0.0122514 min · $0.57
  4. v4The agent tried a wider basis with a weaker ridge, and one basin blew up.0.01273710 min · $1.23
  5. v5The agent widened the basis more carefully and typical basins improved.0.01144815 min · $1.76
  6. v6The agent tried a gentler robust first pass, but the clean refit erased the gain.0.01144721 min · $2.49
  7. v7The agent tried returning the robust fit itself, and it underfit everywhere.0.01968422 min · $2.65
  8. v8The agent tried yet more modes, and one basin failed badly.0.01192432 min · $4.09
  9. v9The agent learned its basis from the generator's own friction statistics.0.01191137 min · $5.01
  10. v10The agent added a fallback that triggers when two models disagree over thin coverage.0.01191146 min · $6.45
  11. v11The agent kept only the modes the sparse gauges could actually see.0.01182259 min · $8.77
  12. v12The agent tried a weaker ridge and traded stability for a lucky visible score.0.01173266 min · $10.66
  13. v13The agent fit coarse structure first and grew into the full basis from there.0.01105369 min · $11.34
  14. v14The agent tried an even coarser start, which rescued tails but lost typical cases.0.01184875 min · $12.57
  15. v15The agent ran both starts and let the fitted cost decide which to trust.0.01105380 min · $13.63
  16. v16The agent widened its learned basis to fifty modes.0.01112588 min · $15.88
  17. v17The agent tried ordering the modes per basin, and it was a tie for more compute.0.01113391 min · $16.63
  18. v18The agent tried rescaling the least-squares columns, and confirmation said tie.0.01113398 min · $18.43
  19. v19The agent tried freeing the newest modes, and it overfit.0.011902107 min · $21.00
  20. v20The agent learned to catch a faulty gauge too small to stand out in the residuals.0.011125125 min · $26.46
  21. v21The agent stripped out the abandoned branches and shipped the staged fit.0.011125128 min · $27.91

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (GPT-5.6-sol)
Case 010.1390000.0117020.0042430.011702
Case 020.1390000.0059100.0042430.005910
Case 030.1390000.0068910.0042430.006891
Case 040.1390000.0083160.0042430.008316
Case 050.1390000.0045120.0042430.004512
Case 060.1390000.0059430.0042430.005943
Case 070.1390000.0057580.0042430.005758
Case 080.1390000.0062590.0042430.006259
Normalised score0.6000
720 minWall clock
$32.65Spend
51.1MTokens
10Versions, 9 kept

On the visible set

0 0.025 0.050 0.075 0.100 0.125 0 2 4 6 8 Agent step Gauge RMSE ↓ v0 v1 v2 v3 v4 v5 v6 v7 v8 v9
keptrolled backsubmitted
  1. v0The agent inherited the homogeneous constant-friction baseline0.12712$0.99
  2. v1The agent fit the full field with robust regularized Gauss-NewtonSolve all 576 cells at once against an exact adjoint Jacobian, with Tukey weights to reject the faulty gauges.0.0464920 min · $1.97
  3. v2The agent rewrote the Gauss-Newton step with Woodbury and box projection0.0131674 min · $7.09
  4. v3The agent replaced the prior with a Matern kernel and free level0.0113874 min · $7.09
  5. v4The agent added edge taper, continuation stages and a robust-scale floorThe objective is multimodal, a 0.15 shift of the start costing 25%, so relax the data weight in warm-started stages.0.00947150 min · $13.54
  6. v5The agent consolidated the solver and added error and time guards0.00947213 min · $17.16
  7. v6The agent adopted a two-scale heavy-tailed prior with coarse-to-fine continuation0.00917328 min · $21.62
  8. v7The agent retuned the data weight for the richer prior0.00908443 min · $24.06
  9. v8The agent restored the wall-clock guard with graceful degradation0.00908488 min · $25.90
  10. v9The agent added basin hopping after the continuation fitRefitting from the true field reaches a lower objective in 83% of cases, so the search, not the objective, was the limit.0.00908715 min · $32.46

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (Opus 5)
Case 010.1390000.0117020.0042430.167250
Case 020.1390000.0059100.0042430.053411
Case 030.1390000.0068910.0042430.031924
Case 040.1390000.0083160.0042430.032425
Case 050.1390000.0045120.0042430.086583
Case 060.1390000.0059430.0042430.047480
Case 070.1390000.0057580.0042430.056831
Case 080.1390000.0062590.0042430.031756
Normalised score0.1298
21 minWall clock
$1.50Spend
7.4MTokens
3Versions, 2 kept

On the visible set

0.025 0.050 0.075 0.100 0.125 0 0 1 2 2 Agent step Gauge RMSE ↓ v0 v1 v2
keptrolled backsubmitted
  1. v0The agent inherited the homogeneous constant-friction baseline0.129427
  2. v1The agent built a multi-scale sequential adjoint inversion with robust lossAn exact Wirtinger adjoint costs one extra solve, so the field can be fit scale by scale under a Cauchy loss.0.013831
  3. v2The agent jointly fit two scales and filtered the faulty gaugesCut the 12% bad gauges on a 3.5x-median residual gate, then solve both scales together instead of one after the other.0.013526

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (Gemini 3.7 Flash)
Case 010.1390000.0117020.0042430.013638
Case 020.1390000.0059100.0042430.008820
Case 030.1390000.0068910.0042430.007582
Case 040.1390000.0083160.0042430.006803
Case 050.1390000.0045120.0042430.006109
Case 060.1390000.0059430.0042430.006206
Case 070.1390000.0057580.0042430.007260
Case 080.1390000.0062590.0042430.007276
Normalised score0.5401
102 minWall clock
$4.55Spend
9.5MTokens
6Versions, 5 kept

On the visible set

0.025 0.050 0.075 0.100 0.125 0 25 50 75 100 Agent step Gauge RMSE ↓ v0 v1 v2 v3 v4 v5
keptrolled backsubmitted
  1. v0The agent inherited the homogeneous constant-friction baseline0.129427$0.12
  2. v1The agent added adjoint L-BFGS with pseudo-Huber loss and Tikhonov regularizationExact adjoint gradients make a full 576-cell fit affordable, and the pseudo-Huber misfit blunts the faulty gauges.0.0218$1.04
  3. v2The agent collapsed the fit to one stage and retuned its penalties0.0218$1.42
  4. v3The agent switched to a KL-basis MAP with a generator-matched priorSample the disclosed generator at runtime and invert in its own eigenmodes instead of under a generic smoothness penalty.0.01264$2.15
  5. v4The agent rebuilt the KL basis without threaded linear algebraThe eigh basis thrashes when BLAS sees more cores than the two-core quota allows; rebuild it without threaded kernels.0.01266$4.12
  6. v5The agent added coefficient bounds as a blow-up guard before submitting0.01263$4.49

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (Kimi K3)
Case 010.1390000.0117020.0042430.016060
Case 020.1390000.0059100.0042430.009113
Case 030.1390000.0068910.0042430.012358
Case 040.1390000.0083160.0042430.007205
Case 050.1390000.0045120.0042430.006494
Case 060.1390000.0059430.0042430.007664
Case 070.1390000.0057580.0042430.007299
Case 080.1390000.0062590.0042430.009458
Normalised score0.4744
87 minWall clock
$9.50Spend
15.7MTokens
5Versions, 3 kept

On the visible set

0.025 0.050 0.075 0.100 0.125 0 30 60 90 120 Agent step Gauge RMSE ↓ v1 v2 v3 v4 v5
keptrolled backsubmitted
  1. v1The agent inherited the homogeneous constant-friction baseline0.12943
  2. v2The agent fit prior-PCA modes with a robust Cauchy Gauss-NewtonFaulty gauges are 12% of the set, so fit redescending in the generator prior's own PCA modes, not one scalar.0.01451
  3. v3The agent used an exact Jacobian with more modes but blew the time budget0.01438
  4. v4The agent replaced the tall SVD with a cheap Gram-matrix PCAThe tall SVD of v3 eats 54 s of the 60 s call limit; the Gram matrix gives the same modes in about a second.0.01467
  5. v5The agent added an inlier re-check and guards for empty cases0.01467

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (Grok 4.6)
Case 010.1390000.0117020.0042430.014666
Case 020.1390000.0059100.0042430.022560
Case 030.1390000.0068910.0042430.007507
Case 040.1390000.0083160.0042430.006003
Case 050.1390000.0045120.0042430.005608
Case 060.1390000.0059430.0042430.007136
Case 070.1390000.0057580.0042430.005346
Case 080.1390000.0062590.0042430.008091
Normalised score0.5238
94 minWall clock across 2 runs
$1.49Spend
10.7MTokens
11Versions, 6 kept

On the visible set

0 0.025 0.050 0.075 0.100 0.125 0 2 5 8 10 Agent step Gauge RMSE ↓ v0 v1 v2 v3 v4 v5 v7 v8
keptrolled backsubmitted
  1. v0The agent inherited the homogeneous constant-friction baseline0.13253 min · $0.91
  2. v0_baselineThe agent snapshotted the inherited baseline solver as its first versioninherited, never run$0.95
  3. v1The agent built a Gaussian MAP inversion with an empirical generator prior0.013762 min · $1.00
  4. v2The agent added a greedy parametric channel stage and reverted it0.012311 min · $1.25
  5. v3The agent tried posterior-mean channel templates and reverted them0.013317 min · $1.36
  6. v4The agent blended the empirical covariance with an isotropic GP prior0.01117$1.43
  7. v5The agent re-ran the channel stage and reverted it again0.01307$1.43
  8. v6The agent ported the whole pipeline into a hermetic main solverselfcheck 0.0120$1.43
  9. v7The agent resampled the prior at 20000 fields and stored it in float640.01156$1.43
  10. v8The agent raised the GP-hedge fraction and the penalty weight0.01059$1.43
  11. v9The agent screened a wider hedge grid and kept the previous configtop-4 spread 0.0003$1.43

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (DeepSeek V4 Pro)
Case 010.1390000.0117020.0042430.010142
Case 020.1390000.0059100.0042430.015035
Case 030.1390000.0068910.0042430.006897
Case 040.1390000.0083160.0042430.006728
Case 050.1390000.0045120.0042430.006098
Case 060.1390000.0059430.0042430.006226
Case 070.1390000.0057580.0042430.005893
Case 080.1390000.0062590.0042430.007874
Normalised score0.5621
254 minWall clock
$17.19Spend
46.6MTokens
13Versions, 10 kept

On the visible set

0 0.025 0.050 0.075 0.100 0.125 0 2 5 8 10 Agent step Gauge RMSE ↓ v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 FIN
keptrolled backsubmitted
  1. v0The agent inherited the homogeneous constant-friction baseline0.1294$0.26
  2. v1The agent fit a coarse bilinear basis with Huber loss and adjoint L-BFGS0.03269 min · $0.52
  3. v2The agent added hard outlier rejection and a clean refit0.02414 min · $0.75
  4. v3The agent added a warm-started coarse second stage0.018227 min · $1.30
  5. v4The agent replaced the second stage with a low-order cosine basis0.011353 min · $2.49
  6. v5The agent widened the cosine basis and added a diagonal Gaussian prior0.014123 min · $7.55
  7. v6The agent replaced the diagonal prior with a full Monte-Carlo covariance0.0133145 min · $8.80
  8. v7The agent raised the cosine cutoff to sixty-six modes0.0147171 min · $10.49
  9. v8The agent wrapped the solver in a global fallback safety net0.0147196 min · $12.24
  10. v9The agent extended the cosine domain to fix the boundary bias0.0121214 min · $13.81
  11. v9+The agent swept prior and basis variants and adopted noneswept, adopted none$15.50
  12. v9+ (drop)The agent tried a Fourier sine-cosine basis and rejected itworse: 0.0273 unstable$15.50
  13. FINThe agent re-evaluated the committed solver as its final submission0.0121$15.50

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (Qwen3.8 Max)
Case 010.1390000.0117020.0042430.011415
Case 020.1390000.0059100.0042430.005208
Case 030.1390000.0068910.0042430.007616
Case 040.1390000.0083160.0042430.006971
Case 050.1390000.0045120.0042430.005443
Case 060.1390000.0059430.0042430.005947
Case 070.1390000.0057580.0042430.006423
Case 080.1390000.0062590.0042430.006633
Normalised score0.6154
186 minWall clock
$8.66Spend
29.2MTokens
5Versions, 4 kept

On the visible set

0.015 0.030 0.045 0.060 0 1 2 3 4 Agent step Gauge RMSE ↓ v0 v1 v2 v3 v4
keptrolled backsubmitted
  1. v0The agent inherited the homogeneous constant-friction baseline0.065$1.31
  2. v1The agent built a KL-prior MAP inversion with a robust mixture likelihood0.009949 min · $2.62
  3. v2The agent replaced the anneal with a six-stage geometric schedule0.0089285 min · $3.91
  4. v3The agent hardened the solver with input guards and a deadline0.00882153 min · $6.81
  5. v4The agent kept the faster schedule and dropped a dead knob0.00888173 min · $7.82

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (GLM 5.3)
Case 010.1390000.0117020.0042430.011583
Case 020.1390000.0059100.0042430.008483
Case 030.1390000.0068910.0042430.008017
Case 040.1390000.0083160.0042430.006464
Case 050.1390000.0045120.0042430.005662
Case 060.1390000.0059430.0042430.006112
Case 070.1390000.0057580.0042430.006536
Case 080.1390000.0062590.0042430.006707
Normalised score0.5801
74 minWall clock
$8.32Spend
11.4MTokens
7Versions, 6 kept

On the visible set

0 0.025 0.050 0.075 0.100 0.125 0 25 50 75 100 Agent step Gauge RMSE ↓ v0 v1 v2 v3 v4 v5 v6
keptrolled backsubmitted
  1. v0The agent inherited the homogeneous constant-friction baseline0.1294271 min · $0.10
  2. v1The agent fit a per-case homogeneous friction by robust residual quantile0.0424022 min · $0.34
  3. v2The agent added a linear friction field with trimmed residuals0.0255759 min · $0.87
  4. v3The agent switched to a quadratic basis plus a depth feature0.01630917 min · $1.45
  5. v4The agent moved to a DCT basis and dropped the worst gauges0.0115725 min · $2.33
  6. v5The agent expanded the DCT basis from twelve to twenty modes0.0107945 min · $4.33
  7. v6The agent added multi-start clean refitting after outlier removal0.01063251 min · $5.18

On the hidden set

CaseStarter · 0.0Frontier-calibrated SOTA · 0.6Upper · 1.0This run (GPT-5.5)
Case 010.1390000.0117020.0042430.013067
Case 020.1390000.0059100.0042430.010208
Case 030.1390000.0068910.0042430.010414
Case 040.1390000.0083160.0042430.010559
Case 050.1390000.0045120.0042430.008852
Case 060.1390000.0059430.0042430.006171
Case 070.1390000.0057580.0042430.008500
Case 080.1390000.0062590.0042430.008283
Normalised score0.4709

Leaderboard

Where each run landed on the sealed held-out set, on the same normalised-score scale as the anchors above.

0 0.3 0.6 1.0 1 Qwen3.8 Max qwen coder · xhigh 0.615 2 GPT-5.6-sol codex · max 0.600 3 GLM 5.3 claude code · max 0.580 4 DeepSeek V4 Pro claude code · max 0.562 5 Gemini 3.7 Flash antigravity · high 0.540 6 Grok 4.6 grok · xhigh 0.524 7 Kimi K3 kimi cli · max 0.474 8 GPT-5.5 codex · xhigh 0.471 9 Opus 5 claude code · max 0.130