TMA via ML
Can a neural network learn target motion analysis from bearings alone?
This is a proof of concept, not a product. A neural network is trained on large volumes of simulated bearings-only data, and asked to estimate a target's range, course and speed. Each iteration ends at a gate; a failed early gate ends the project with a short write-up.
Current gate status
| Experiment | Gate | Verdict | Decided by |
|---|---|---|---|
20261108-p7-g5 | G5 | pass | agent review panel, rounds 1-2 (no rejections, no open blocker or major; experiments/20261108-p7-g5/review.md) |
20261108-g0-p7-r1 | G0 | pass | agent review panel, rounds 0-2 (no rejections, no open blocker or major; experiments/20261108-g0-p7-r1/review.md) |
20261108-g0-p7 | G0 | pass | superseded (round 0, the agent's first severity; never panel-approved): see experiments/20261108-g0-p7-r1/review.md |
20261106-p6v-g7 | G7 | pass | agent review panel, rounds 1-2 (no rejections, no open blocker or major; experiments/20261106-p6v-g7/review.md) |
20261106-p6u-g7 | G7 | inconclusive | agent review panel, rounds 1-2 (no rejections, no open blocker or major; experiments/20261106-p6u-g7/review.md) |
20261102-p4f-g5 | G5 | pass | agent review panel, rounds 1-2 (no rejections, no open blocker or major; experiments/20261102-p4f-g5/review.md) |
20261101-p4h-g5 | G5 | pass | agent review panel, rounds 1-2 (no rejections, no open blocker or major; experiments/20261101-p4h-g5/review.md) |
20261030-g0-p4-r3 | G0 | pass | agent review panel, rounds 1-3 (no rejections; no blocker or major open): G0 PASS (experiments/20261030-g0-p4-r3/review.md) |
20261030-g0-p4-r2 | G0 | pass | harness (pending agent panel review) |
20261030-g0-p4-r1 | G0 | pass | harness (pending agent panel review) |
20261030-g0-p4-r0 | G0 | fail | harness (pending agent panel review) |
20261028-i5-g3 | G3 | pass | agent review panel, round 1 (no rejections; no open blocker or major findings): G3 PASS for the hybrid (classical with the iteration-4 LSTM as fallback; not a network alone) on seed 207, 20,000 test scenarios. Every median and P90 within 0.97-1.02 x classical against 1.2; gross-error rate at zig+300s 0.569% vs 1.190% (-0.620 pp [-0.824, -0.417]); at zig+600s 0.170% vs 0.139%, reported, not gated |
20261028-g0-p3-r2 | G0 | pass | agent review panel, rounds 1-2 (no rejections; no blocker or major open): G0 PASS (experiments/20261028-g0-p3-r2/review.md) |
20261028-g0-p3 | G0 | pass | harness (pending agent panel review) |
20261025-i4-g2-rescore | G2 | pass | agent review panel, round 1 on the result (no rejections; no open blocker or major findings): G2 PASS on the SRD 7 re-score, seed 206, 100,000 test scenarios, frozen models. Instantaneous speed 0.939 kt [0.926, 0.951] against 1 kt (classical 0.319, naive 4.23); time-late 0.740 kt; range and course pass for both. Seed 205 (inconclusive, 0.981 kt) is reported, not pooled |
20261024-i4-g2 | G2 | inconclusive | agent review panel, round 3 (no rejections; no open blocker or major findings): G2 INCONCLUSIVE on instantaneous speed, 0.981 kt [0.940, 1.031] against 1 kt; every other check passes. SRD 7 re-score pre-registered: experiments/20261024-i4-rescore-decision (seed 206, 100,000 test scenarios, frozen models); a fail or inconclusive there is final |
20261017-g0-i3-r3 | G0 | pass | agent review panel, round 3 (no rejections; no open blocker or major findings): G0 PASS on generator 0.3.0 (second zig, across-LOS turns; spec 007); see review.md |
20261017-g0-i3-r2 | G0 | pass | superseded: round-2 evidence of the iteration-3 G0 panel; the round-2 fixes changed the G0 checks (packages/eval), so G0 was re-run and the verdict of record is ../20261017-g0-i3-r3 (see its review.md) |
20261017-g0-i3 | G0 | pass | superseded: round-1 evidence of the iteration-3 G0 panel; the round-1 fixes changed the G0 checks (packages/eval), so G0 was re-run and the verdict of record is ../20261017-g0-i3-r3 (see its review.md) |
20261016-i2d-g2 | G2 | fail | agent review panel, round 2 (no rejections; no open blocker or major findings): G2 FAIL (SRD §5); speed fails for both variants (CI wholly above 1 kt: 1.47 kt [1.37, 1.52] and 1.53 kt [1.47, 1.61]); range and course pass for both; iteration 2c is the last allowed under G2 (SRD §7): no-go; see review.md |
20261015-i2c-g2 | G2 | fail | agent review panel, round 2 (no rejections; no open blocker or major findings): G2 FAIL (SRD §5); speed fails for both variants (CI wholly above 1 kt: 1.77 kt [1.68, 1.83] and 1.77 kt [1.67, 1.86]); range and course pass for both; see review.md |
20261014-i2-g2 | G2 | fail | agent review panel, round 2 (no rejections; no open blocker or major findings): G2 FAIL (SRD §5); speed fails for both variants (CI wholly above 1 kt), time-late course and g1-time-late also fail; see review.md |
20261013-g0-i2-r2 | G0 | pass | agent review panel, rounds 1-3 (no rejections; no open blocker or major findings): G0 pass for generator 0.2.0 at 24bbdab; see review.md |
20261013-g0-i2 | G0 | pass | superseded: round-1 evidence of the iteration-2 G0 panel; the round-1 fixes changed packages/data/src, so the verdict of record is ../20261013-g0-i2-r2 (see its review.md) |
20261012-g1-r2 | G1 | inconclusive | agent review panel, round 3 (no rejections; no open blocker or major findings): G1 PASS under pre-registered rule 1 (SRD §5, amended 2026-10-12); machine result inconclusive from time-late-not-worse, caveat recorded; see review.md |
20261012-g1 | G1 | fail | informational only: the training run's own scoring (train/i1 code, no bootstrap); verdict of record is ../20261012-g1-r2 (agent review panel, round 3: G1 pass) |
20261011-g1-r2 | G1 | fail | agent review panel, rounds 1-2: fail as run (time-late undertrained, 25 of 60 epochs); one continuation pre-registered under SRD §5 (amended 2026-10-12), decided in ../20261012-g1-r2/review.md |
20261011-g0-r3 | G0 | pass | agent review panel, round 3 (no rejections; no open blocker or major findings): see review.md |
20261011-g0-r2 | G0 | pass | harness (pending agent panel review) |
20261011-g0 | G0 | pass | harness (pending team review) |
Machine verdicts come from experiments/*/verdict.json. An agent review panel (five independent specialist reviewers, iterated until none rejects) takes the decision; its record is review.md in the experiment folder.
The plan
| Gate | Criterion | If failed |
|---|---|---|
| G0 — pipeline | Classical solver recovers noise-free truth; naive baseline reproduces | Fix the generator before any training |
| G1 — signal exists | Model median range error < 50% of the naive baseline's, both variants | Stop: report and close |
| G2 — useful | Median range error < 20%, course < 10°, speed < 1 kt at σ = 1° | One more iteration, then stop |
| G3 — classical parity | Within 1.2× classical on every metric, lower gross-error rate | Not a stop; sets the next bar |
Read more
- Blog: one post per iteration, with the gate decision.
- Glossary of TMA and ML terms as used here.
- Data dictionary, generated from the schema.
- Algorithms: generator, features, baselines.
- Evaluation and gates: metric definitions.
- Results: iteration-1 models beside the baselines, with error-vs-time curves.