Official source release for PAST-Mixer: Observable Kinematic-State Mixing for Open-Loop Long-Horizon Ballistic Trajectory Prediction.
PAST-Mixer maps a short tracked Cartesian trajectory to a complete future trajectory. The released mainline constructs causal position--velocity--acceleration descriptors from the observed prefix, applies pre-normalized temporal and channel mixing, and predicts horizon-wide displacements anchored at the last observation.
This repository contains the model, training and evaluation pipeline, paper configuration, unit tests, and a non-operational synthetic smoke-test generator. It intentionally excludes local datasets, checkpoints, generated result arrays, internal archives, candidate architectures, and third-party baseline snapshots.
The manuscript benchmark uses controlled representative projectile-class simulation and is not field telemetry, an exact firing-table reconstruction, or an operational deployment study. The parameterized benchmark generator and generated benchmark data are not included in this source-only release. The demo data produced below verify the software interface only and must not be used to reproduce or reinterpret the manuscript results.
- Input: 100 tracked Cartesian samples at 0.01 s (1 s).
- Output: the next 1000 clean Cartesian positions (10 s).
- Model: 3 mixer blocks, model dimension 256, feed-forward dimension 512.
- Training seeds: 2021, 2022, and 2023.
- Evaluation: RMSE, ADE, and FDE in meters.
The machine-readable settings are in configs/paper_protocol.json.
python -m venv .venv
python -m pip install -r requirements-dev.txtPython 3.10 or later is recommended. GPU execution is optional.
Generate a small generic dataset and run one CPU epoch:
python scripts/generate_demo_data.py --output data/demo --seq-len 16 --pred-len 32
python run.py --dataset_dir data/demo --seq_len 16 --pred_len 32 --dt 0.1 --d_model 16 --d_ff 32 --e_layers 1 --batch_size 8 --train_epochs 1 --patience 1 --use_gpu 0 --model_id software_demoThis command writes ignored artifacts under checkpoints/ and results/. It is a software check, not a paper benchmark.
Run the unit tests with:
pytestEach split is a PyTorch file named train.pt, val.pt, or test.pt containing:
X: a float tensor or NumPy array with shape(N, T, 3);X_observed(optional): tracked observations with shape(N, T_obs, 3).
Place a protocol_manifest.json in the same directory. The loader computes normalization statistics from train.pt only.
The numerical results reported in the manuscript were obtained from the fixed three-seed paper protocol, not from the demo generator. Across those runs, the manuscript reports RMSE, ADE, and FDE reductions of 14.72%, 27.26%, and 24.51%, respectively, relative to the strongest matched Transformer baseline. These values are reported for provenance and are not regenerated by the source-only demo.
The manuscript is under review. Citation metadata will be updated with the final bibliographic record after publication; see CITATION.cff.
The source code in this repository is released under the MIT License.