pub struct HardSoftScore { /* private fields */ }Expand description
A score with separate hard and soft constraint levels.
Hard constraints must be satisfied for a solution to be feasible. Soft constraints are optimization objectives.
When comparing scores:
- Hard scores are compared first
- Soft scores are only compared when hard scores are equal
§Examples
use solverforge_core::HardSoftScore;
let score1 = HardSoftScore::of(-1, -100); // 1 hard constraint broken
let score2 = HardSoftScore::of(0, -200); // Feasible but poor soft score
// Feasible solutions are always better than infeasible ones
assert!(score2 > score1);
let score3 = HardSoftScore::of(0, -50); // Better soft score
assert!(score3 > score2);Implementations§
Source§impl HardSoftScore
impl HardSoftScore
Sourcepub const ZERO: HardSoftScore
pub const ZERO: HardSoftScore
The zero score.
Sourcepub const ONE_HARD: HardSoftScore
pub const ONE_HARD: HardSoftScore
One hard constraint penalty.
Sourcepub const ONE_SOFT: HardSoftScore
pub const ONE_SOFT: HardSoftScore
One soft constraint penalty.
Sourcepub const fn hard_score(&self) -> HardSoftScore
pub const fn hard_score(&self) -> HardSoftScore
Returns the hard score as a new HardSoftScore.
Sourcepub const fn soft_score(&self) -> HardSoftScore
pub const fn soft_score(&self) -> HardSoftScore
Returns the soft score as a new HardSoftScore.
Trait Implementations§
Source§impl Add for HardSoftScore
impl Add for HardSoftScore
Source§impl Clone for HardSoftScore
impl Clone for HardSoftScore
Source§fn clone(&self) -> HardSoftScore
fn clone(&self) -> HardSoftScore
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 moreSource§impl Debug for HardSoftScore
impl Debug for HardSoftScore
Source§impl Default for HardSoftScore
impl Default for HardSoftScore
Source§fn default() -> HardSoftScore
fn default() -> HardSoftScore
Returns the “default value” for a type. Read more
Source§impl Display for HardSoftScore
impl Display for HardSoftScore
Source§impl Hash for HardSoftScore
impl Hash for HardSoftScore
Source§impl Neg for HardSoftScore
impl Neg for HardSoftScore
Source§impl Ord for HardSoftScore
impl Ord for HardSoftScore
Source§impl ParseableScore for HardSoftScore
impl ParseableScore for HardSoftScore
Source§impl PartialEq for HardSoftScore
impl PartialEq for HardSoftScore
Source§impl PartialOrd for HardSoftScore
impl PartialOrd for HardSoftScore
Source§impl Score for HardSoftScore
impl Score for HardSoftScore
Source§fn is_feasible(&self) -> bool
fn is_feasible(&self) -> bool
Returns true if this score represents a feasible solution. Read more
Source§fn levels_count() -> usize
fn levels_count() -> usize
Returns the number of score levels. Read more
Source§fn from_level_numbers(levels: &[i64]) -> Self
fn from_level_numbers(levels: &[i64]) -> Self
Creates a score from level numbers. Read more
Source§fn compare(&self, other: &Self) -> Ordering
fn compare(&self, other: &Self) -> Ordering
Compares two scores, returning the ordering. Read more
Source§fn is_better_than(&self, other: &Self) -> bool
fn is_better_than(&self, other: &Self) -> bool
Returns true if this score is better than the other score. Read more
Source§fn is_worse_than(&self, other: &Self) -> bool
fn is_worse_than(&self, other: &Self) -> bool
Returns true if this score is worse than the other score.
Source§fn is_equal_to(&self, other: &Self) -> bool
fn is_equal_to(&self, other: &Self) -> bool
Returns true if this score is equal to the other score.
Source§impl Sub for HardSoftScore
impl Sub for HardSoftScore
impl Copy for HardSoftScore
impl Eq for HardSoftScore
impl StructuralPartialEq for HardSoftScore
Auto Trait Implementations§
impl Freeze for HardSoftScore
impl RefUnwindSafe for HardSoftScore
impl Send for HardSoftScore
impl Sync for HardSoftScore
impl Unpin for HardSoftScore
impl UnwindSafe for HardSoftScore
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