pub struct PrioritizedReplayBuffer { /* private fields */ }Expand description
Prioritized Experience Replay buffer with proportional priority and IS weights.
Implementations§
Source§impl PrioritizedReplayBuffer
impl PrioritizedReplayBuffer
Sourcepub fn new(
capacity: usize,
obs_dim: usize,
act_dim: usize,
alpha: f64,
beta_start: f64,
) -> Self
pub fn new( capacity: usize, obs_dim: usize, act_dim: usize, alpha: f64, beta_start: f64, ) -> Self
Create a PER buffer.
capacity— maximum number of transitions.obs_dim,act_dim— observation / action dimensions.alpha— priority exponent (default 0.6).beta_start— initial IS exponent (default 0.4, annealed to 1).
Sourcepub fn push(
&mut self,
obs: impl AsRef<[f32]>,
action: impl AsRef<[f32]>,
reward: f32,
next_obs: impl AsRef<[f32]>,
done: bool,
)
pub fn push( &mut self, obs: impl AsRef<[f32]>, action: impl AsRef<[f32]>, reward: f32, next_obs: impl AsRef<[f32]>, done: bool, )
Push a transition with maximum priority (so it will be sampled at least once).
Sourcepub fn update_priority(&mut self, index: usize, priority: f64)
pub fn update_priority(&mut self, index: usize, priority: f64)
Update priority for a transition that was previously sampled.
§Arguments
index— the buffer index returned inPrioritySample::index.priority— new absolute priority (typically|TD error| + ε).
Sourcepub fn anneal_beta(&mut self, step: f64)
pub fn anneal_beta(&mut self, step: f64)
Anneal β toward 1 by step (additive).
Sourcepub fn sample(
&self,
batch_size: usize,
handle: &mut RlHandle,
) -> RlResult<Vec<PrioritySample>>
pub fn sample( &self, batch_size: usize, handle: &mut RlHandle, ) -> RlResult<Vec<PrioritySample>>
Sample batch_size transitions using stratified proportional sampling.
Stratified: the [0, total_priority] interval is divided into
batch_size equal strata and one sample is drawn uniformly from each
stratum. This reduces variance compared to fully random sampling.
§Errors
RlError::InsufficientTransitionsifsize < batch_size.RlError::ZeroPrioritySumif all priorities are zero.
Trait Implementations§
Source§impl Clone for PrioritizedReplayBuffer
impl Clone for PrioritizedReplayBuffer
Source§fn clone(&self) -> PrioritizedReplayBuffer
fn clone(&self) -> PrioritizedReplayBuffer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for PrioritizedReplayBuffer
impl RefUnwindSafe for PrioritizedReplayBuffer
impl Send for PrioritizedReplayBuffer
impl Sync for PrioritizedReplayBuffer
impl Unpin for PrioritizedReplayBuffer
impl UnsafeUnpin for PrioritizedReplayBuffer
impl UnwindSafe for PrioritizedReplayBuffer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more