Struct TransitionBuffer
pub struct TransitionBuffer<SB, AB>where
SB: SliceAccess,
AB: SliceAccess,{ /* private fields */ }Expand description
A tensor-backed circular buffer for transitions.
Uses SliceAccess to store state and action batches in contiguous
tensor storage, enabling efficient random sampling via select.
The buffer lazily initializes its storage on the first push call.
Implementations§
§impl<SB, AB> TransitionBuffer<SB, AB>where
SB: SliceAccess,
AB: SliceAccess,
impl<SB, AB> TransitionBuffer<SB, AB>where
SB: SliceAccess,
AB: SliceAccess,
pub fn new(capacity: usize, device: &Device) -> TransitionBuffer<SB, AB>
pub fn new(capacity: usize, device: &Device) -> TransitionBuffer<SB, AB>
Creates a new buffer. Storage is lazily allocated on the first push.
pub fn push(
&mut self,
state: SB,
next_state: SB,
action: AB,
reward: f32,
done: bool,
)
pub fn push( &mut self, state: SB, next_state: SB, action: AB, reward: f32, done: bool, )
Add a transition, overwriting the oldest if full.
pub fn sample(&self, batch_size: usize) -> TransitionBatch<SB, AB>
pub fn sample(&self, batch_size: usize) -> TransitionBatch<SB, AB>
Sample a random batch of transitions.
Auto Trait Implementations§
impl<SB, AB> Freeze for TransitionBuffer<SB, AB>
impl<SB, AB> RefUnwindSafe for TransitionBuffer<SB, AB>where
SB: RefUnwindSafe,
AB: RefUnwindSafe,
impl<SB, AB> Send for TransitionBuffer<SB, AB>
impl<SB, AB> Sync for TransitionBuffer<SB, AB>
impl<SB, AB> Unpin for TransitionBuffer<SB, AB>
impl<SB, AB> UnsafeUnpin for TransitionBuffer<SB, AB>where
SB: UnsafeUnpin,
AB: UnsafeUnpin,
impl<SB, AB> UnwindSafe for TransitionBuffer<SB, AB>where
SB: UnwindSafe,
AB: UnwindSafe,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<K, Q> Comparable<Q> for K
impl<K, Q> Comparable<Q> for K
§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
Compare self to
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more