Skip to main content

Decision

Enum Decision 

#[non_exhaustive]
pub enum Decision { Continue, Prune, Pause, Fork { parent: TrialId, mutation: Assignment, }, Restart { parent: TrialId, mutation: Assignment, mode: RestartMode, }, }
Expand description

What should happen to a trial that just reported.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Continue

Keep going.

§

Prune

Stop now. The trial’s last intermediate value becomes its objective value (FrozenTrial::objective_value).

§

Pause

Suspend, keeping the checkpoint. The trial may be resumed later via Command::ResumeTrial.

Executed by the study loop, which transitions the trial to crate::trial::TrialState::Paused — a resumable, non-terminal state that keeps the trial’s checkpoint reference — instead of completing, pruning or failing it.

§

Fork

Start a child of parent with mutated parameters — PBT’s exploit-and-explore step.

Executed by the study loop. A fork does not stop the trial that reported it (see stops_the_trial): the study loop materializes a new trial whose TrialTemplate carries the parent reference and whose parameters are the parent’s with mutation applied, and the child starts from the parent’s checkpoint reference. Only scalar perturbations are allowed in mutation — a shape/categorical parameter is resume-blocked because the parent checkpoint would not load — and one that is not is refused loudly.

Fields

§parent: TrialId

The trial to copy the checkpoint from.

§mutation: Assignment

Parameters that differ from the parent’s.

§

Restart

Start a child of parent that restarts rather than continues — the fresh or shrink-and-perturb variant of Fork.

Executed by the study loop exactly like a fork, and like a fork it does not stop the reporting trial. The child’s parameters are the parent’s with mutation applied, and its TrialCtx::restart carries mode and a restart seed derived from the study seed and the child’s number. A RestartMode::Fresh child gets no parent checkpoint and records the donor only in its lineage, so mutation may change any parameter; a RestartMode::ShrinkPerturb child starts from the donor’s checkpoint like a fork, so only scalar perturbations are allowed.

Fields

§parent: TrialId

The donor trial whose configuration (and, for RestartMode::ShrinkPerturb, checkpoint) the child starts from.

§mutation: Assignment

Parameters that differ from the donor’s.

§mode: RestartMode

How the child restarts.

Implementations§

§

impl Decision

pub const fn stops_the_trial(&self) -> bool

true if the trial should stop making progress right now.

Trait Implementations§

§

impl Clone for Decision

§

fn clone(&self) -> Decision

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for Decision

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for Decision

§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl PartialEq for Decision

§

fn eq(&self, other: &Decision) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
§

impl Serialize for Decision

§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl StructuralPartialEq for Decision

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more