Scientific research
PGNN: an Itaipu study
Predict and test physical consistency.
Paper accepted at Latin.Science 2026
Network implementation and co-authored research
The operational scenario with a residual MLP achieved an RMSE of 508 MWavg, versus 590 for persistence. This result should not be confused with the physical-term ablation figures.
THE DECISION THAT MATTERS
Evaluate more than one type of error
In the ablation, removing the physical term reduced data error but increased the physical residual around 33-fold. A single metric does not describe the model's overall quality.
READING THE ABLATION RESULTS
What happens when the physical term is removed?
The model without the physical term had the lowest data error, but a physical residual around 33 times larger. Lower is better for this metric.
Ablation comparison described in the résumé. These values are not the RMSE of the operational scenario with a residual MLP. Bars start at zero and share the same scale.
The question
How can a neural network for hydroelectric generation be evaluated for both prediction error and consistency with physics?
My contribution
I implemented a neural network from scratch in Rust, without machine learning libraries, and worked with ONS data from 2015 to 2024. I reserved 2023 and 2024 for testing and compared the models against a simple baseline: repeating the previous day's generation.
The result
The operational scenario with a residual MLP achieved an error of 508 MWavg, versus 590 for the baseline, outperforming that baseline in every year of rolling validation from 2020 to 2024. The paper was accepted at Latin.Science 2026, part of Latinoware.
A study using public historical Itaipu data, with no stated affiliation to the power plant. In the ablation, the model without the physical term had lower data error but a physical residual around 33 times larger. Results do not guarantee future prediction performance.
Explore the technical details
Backpropagation and Adam implemented by hand and verified with gradient checks. Operational scenario R² of 0.91. Flow alone improved little over persistence (RMSE 586 versus 590 MWavg). Reproducible from a clean clone, with CI running clippy, tests and data SHA-256 checks.
