SolverScope

Struct SolverScope 

Source
pub struct SolverScope<S: PlanningSolution> { /* private fields */ }
Expand description

Top-level scope for the entire solving process.

Holds the working solution, score director, and tracks the best solution found.

Implementations§

Source§

impl<S: PlanningSolution> SolverScope<S>

Source

pub fn new(score_director: Box<dyn ScoreDirector<S>>) -> Self

Creates a new solver scope with the given score director.

Source

pub fn with_seed(score_director: Box<dyn ScoreDirector<S>>, seed: u64) -> Self

Creates a solver scope with a specific random seed.

Source

pub fn with_statistics( self, collector: Arc<StatisticsCollector<S::Score>>, ) -> Self

Attaches a statistics collector to this scope.

The collector will be updated during solving to track metrics.

Source

pub fn statistics(&self) -> Option<&Arc<StatisticsCollector<S::Score>>>

Returns the statistics collector, if one is attached.

Source

pub fn record_move(&self, accepted: bool)

Records a move evaluation in statistics.

Does nothing if no statistics collector is attached.

Source

pub fn record_score_calculation(&self)

Records a score calculation in statistics.

Does nothing if no statistics collector is attached.

Source

pub fn start_solving(&mut self)

Marks the start of solving.

Source

pub fn elapsed(&self) -> Option<Duration>

Returns the elapsed time since solving started.

Source

pub fn score_director(&self) -> &dyn ScoreDirector<S>

Returns a reference to the score director.

Source

pub fn score_director_mut(&mut self) -> &mut dyn ScoreDirector<S>

Returns a mutable reference to the score director.

Source

pub fn working_solution(&self) -> &S

Returns a reference to the working solution.

Source

pub fn working_solution_mut(&mut self) -> &mut S

Returns a mutable reference to the working solution.

Source

pub fn calculate_score(&mut self) -> S::Score

Calculates and returns the current score.

Source

pub fn best_solution(&self) -> Option<&S>

Returns the best solution found so far.

Source

pub fn best_score(&self) -> Option<&S::Score>

Returns the best score found so far.

Source

pub fn update_best_solution(&mut self)

Updates the best solution if the current solution is better.

Source

pub fn set_best_solution(&mut self, solution: S, score: S::Score)

Forces an update of the best solution regardless of score comparison.

Source

pub fn rng(&mut self) -> &mut StdRng

Returns a reference to the RNG.

Source

pub fn increment_step_count(&mut self) -> u64

Increments and returns the total step count.

Source

pub fn total_step_count(&self) -> u64

Returns the total step count.

Source

pub fn take_best_solution(self) -> Option<S>

Extracts the best solution, consuming this scope.

Source

pub fn take_best_or_working_solution(self) -> S

Returns the best solution or the current working solution if no best was set.

This is useful after construction heuristic where the working solution may be the only valid solution even if it wasn’t marked as “best”.

Source

pub fn set_terminate_early_flag(&mut self, flag: Arc<AtomicBool>)

Sets the terminate-early flag shared with the Solver.

This allows phases to check if early termination was requested.

Source

pub fn is_terminate_early(&self) -> bool

Checks if early termination was requested.

Returns true if the terminate-early flag is set, otherwise false.

Auto Trait Implementations§

§

impl<S> Freeze for SolverScope<S>
where S: Freeze, <S as PlanningSolution>::Score: Freeze,

§

impl<S> !RefUnwindSafe for SolverScope<S>

§

impl<S> Send for SolverScope<S>

§

impl<S> !Sync for SolverScope<S>

§

impl<S> Unpin for SolverScope<S>
where S: Unpin, <S as PlanningSolution>::Score: Unpin,

§

impl<S> !UnwindSafe for SolverScope<S>

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
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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.

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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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