https://mooseframework.inl.gov
Loading...
Searching...
No Matches
LibtorchObservationHistoryHelper.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#ifdef MOOSE_LIBTORCH_ENABLED
11
12#pragma once
13
14#include "MooseTypes.h"
15
16#include <vector>
17
23{
24public:
29 LibtorchObservationHistoryHelper(unsigned int input_timesteps);
30
34 unsigned int inputTimesteps() const { return _input_timesteps; }
35
41 void initializeHistory(const std::vector<Real> & observation,
42 std::vector<std::vector<Real>> & old_observations) const;
43
49 void advanceHistory(const std::vector<Real> & observation,
50 std::vector<std::vector<Real>> & old_observations) const;
51
56 std::vector<Real> expandObservationFactors(const std::vector<Real> & observation_factors) const;
57
63 std::vector<Real>
64 stackCurrentObservation(const std::vector<Real> & observation,
65 const std::vector<std::vector<Real>> & old_observations) const;
66
75 std::vector<Real>
76 stackTrajectoryObservation(const std::vector<std::vector<Real>> & component_trajectories,
77 unsigned int time_index) const;
78
79private:
83 void validateTrajectoryShape(const std::vector<std::vector<Real>> & component_trajectories) const;
84
86 const unsigned int _input_timesteps;
87};
88
89#endif
Shared observation history stacking and factor-expansion logic for libtorch-based controls and traine...
unsigned int inputTimesteps() const
Return the number of timesteps stacked into each flattened input.
void initializeHistory(const std::vector< Real > &observation, std::vector< std::vector< Real > > &old_observations) const
Fill the history buffer with copies of the current observation.
std::vector< Real > expandObservationFactors(const std::vector< Real > &observation_factors) const
Repeat per-observation-entry factors across all stacked timesteps.
void advanceHistory(const std::vector< Real > &observation, std::vector< std::vector< Real > > &old_observations) const
Advance the history buffer by inserting the latest observation.
const unsigned int _input_timesteps
Number of timesteps stacked into each flattened observation.
std::vector< Real > stackCurrentObservation(const std::vector< Real > &observation, const std::vector< std::vector< Real > > &old_observations) const
Flatten the current observation together with its stored history.
std::vector< Real > stackTrajectoryObservation(const std::vector< std::vector< Real > > &component_trajectories, unsigned int time_index) const
Flatten one time slice of observation-component trajectories with causal history.
void validateTrajectoryShape(const std::vector< std::vector< Real > > &component_trajectories) const
Check that all observation-component trajectories have a consistent shape.