ConstraintWeightOverrides

Struct ConstraintWeightOverrides 

Source
pub struct ConstraintWeightOverrides<Sc: Score> { /* private fields */ }
Expand description

Holds runtime overrides for constraint weights.

Use this to adjust constraint weights without recompiling. Weights can be changed between solver runs or even during solving (if you rebuild constraints).

§Example

use solverforge_scoring::ConstraintWeightOverrides;
use solverforge_core::score::HardSoftScore;

let mut overrides = ConstraintWeightOverrides::<HardSoftScore>::new();

// Override specific constraint weights
overrides.put("room_conflict", HardSoftScore::of_hard(2));
overrides.put("preferred_room", HardSoftScore::of_soft(5));

// Get weight with fallback to default
let weight = overrides.get_or_default(
    "room_conflict",
    HardSoftScore::of_hard(1), // default if not overridden
);
assert_eq!(weight, HardSoftScore::of_hard(2));

// Non-overridden constraint uses default
let other = overrides.get_or_default(
    "other_constraint",
    HardSoftScore::of_soft(10),
);
assert_eq!(other, HardSoftScore::of_soft(10));

Implementations§

Source§

impl<Sc: Score> ConstraintWeightOverrides<Sc>

Source

pub fn new() -> Self

Creates an empty overrides container.

Source

pub fn from_pairs<I, N>(iter: I) -> Self
where I: IntoIterator<Item = (N, Sc)>, N: Into<String>,

Creates overrides from an iterator of (name, weight) pairs.

§Example
use solverforge_scoring::ConstraintWeightOverrides;
use solverforge_core::score::HardSoftScore;

let overrides = ConstraintWeightOverrides::from_pairs([
    ("hard_constraint", HardSoftScore::of_hard(1)),
    ("soft_constraint", HardSoftScore::of_soft(10)),
]);
assert_eq!(overrides.len(), 2);
Source

pub fn put<N: Into<String>>(&mut self, name: N, weight: Sc)

Sets the weight for a constraint.

Source

pub fn remove(&mut self, name: &str) -> Option<Sc>

Removes the override for a constraint.

Source

pub fn get_or_default(&self, name: &str, default: Sc) -> Sc

Gets the overridden weight, or returns the default if not overridden.

Source

pub fn get(&self, name: &str) -> Option<&Sc>

Gets the overridden weight if present.

Source

pub fn contains(&self, name: &str) -> bool

Returns true if this constraint has an override.

Source

pub fn len(&self) -> usize

Returns the number of overrides.

Source

pub fn is_empty(&self) -> bool

Returns true if there are no overrides.

Source

pub fn clear(&mut self)

Clears all overrides.

Source

pub fn into_arc(self) -> Arc<Self>

Creates an Arc-wrapped version for sharing across threads.

Trait Implementations§

Source§

impl<Sc: Clone + Score> Clone for ConstraintWeightOverrides<Sc>

Source§

fn clone(&self) -> ConstraintWeightOverrides<Sc>

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<Sc: Score> Debug for ConstraintWeightOverrides<Sc>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<Sc: Score> Default for ConstraintWeightOverrides<Sc>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<Sc: Score> WeightProvider<Sc> for ConstraintWeightOverrides<Sc>

Source§

fn weight(&self, name: &str) -> Option<Sc>

Gets the weight for a constraint by name.
Source§

fn weight_or_default(&self, name: &str, default: Sc) -> Sc

Gets the weight or returns the default.

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
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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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