pub use gae::{
compute_advantages, compute_advantages_multi_agent, compute_advantages_partial,
compute_mc_returns, compute_nstep_returns, normalize_advantages,
};
pub use sampling::{
Minibatch, MinibatchIterator, generate_minibatch_indices, sample_minibatch, shuffle_indices,
train_val_split,
};
pub use storage::{RolloutBatch, RolloutBuffer, RolloutBurnTensors};
mod gae;
mod sampling;
mod storage;
#[cfg(test)]
mod tests;
impl RolloutBuffer {
pub fn compute_advantages(&mut self, last_values: &[f32], gamma: f32, gae_lambda: f32) {
gae::compute_advantages(self, last_values, gamma, gae_lambda);
}
pub fn compute_advantages_partial(
&mut self,
valid_steps: usize,
last_values: &[f32],
gamma: f32,
gae_lambda: f32,
) {
gae::compute_advantages_partial(self, valid_steps, last_values, gamma, gae_lambda);
}
pub fn get_batch(&self) -> RolloutBatch {
RolloutBatch::from_buffer(self)
}
pub fn get_filled_batch(&self, valid_steps: usize) -> RolloutBatch {
RolloutBatch::from_buffer_partial(self, valid_steps)
}
}