pub use gae::{
compute_advantages, compute_advantages_multi_agent, compute_advantages_partial,
compute_mc_returns, compute_nstep_returns, normalize_advantages,
};
pub use recurrent::{RecurrentMinibatchIterator, RecurrentRolloutBatch, RecurrentRolloutBuffer};
pub use sampling::{
Minibatch, MinibatchIterator, generate_minibatch_indices, sample_minibatch, shuffle_indices,
train_val_split,
};
pub use storage::{RolloutBatch, RolloutBuffer, RolloutBurnTensors};
pub use vtrace::compute_vtrace_advantages;
mod gae;
mod recurrent;
mod sampling;
mod storage;
mod vtrace;
#[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 compute_vtrace_advantages(
&mut self,
target_log_probs: &[Vec<f32>],
last_values: &[f32],
gamma: f32,
rho_bar: f32,
c_bar: f32,
) {
vtrace::compute_vtrace_advantages(
self,
target_log_probs,
last_values,
gamma,
rho_bar,
c_bar,
);
}
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)
}
}