Class HardMediumSoftLongScore
- All Implemented Interfaces:
Score<HardMediumSoftLongScore>,Serializable,Comparable<HardMediumSoftLongScore>
Score is based on 3 levels of long constraints: hard, medium and soft.
Hard constraints have priority over medium constraints.
Medium constraints have priority over soft constraints.
Hard constraints determine feasibility.
This class is immutable.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final HardMediumSoftLongScorestatic final HardMediumSoftLongScorestatic final HardMediumSoftLongScorestatic final HardMediumSoftLongScore -
Method Summary
Modifier and TypeMethodDescriptionabs()Returns a Score whose value is the absolute value of the score, i.e.add(HardMediumSoftLongScore addend) Returns a Score whose value is (this + addend).intcompareTo(HardMediumSoftLongScore other) divide(double divisor) Returns a Score whose value is (this / divisor).booleanlongDeprecated, for removal: This API element is subject to removal in a future version.longDeprecated, for removal: This API element is subject to removal in a future version.UsemediumScore()instead.longDeprecated, for removal: This API element is subject to removal in a future version.UsesoftScore()instead.longThe total of the broken negative hard constraints and fulfilled positive hard constraints.inthashCode()booleanAPlanningSolutionis feasible if it has no broken hard constraints.longThe total of the broken negative medium constraints and fulfilled positive medium constraints.multiply(double multiplicand) Returns a Score whose value is (this * multiplicand).static HardMediumSoftLongScoreof(long hardScore, long mediumScore, long softScore) static HardMediumSoftLongScoreofHard(long hardScore) static HardMediumSoftLongScoreofMedium(long mediumScore) static HardMediumSoftLongScoreofSoft(long softScore) static HardMediumSoftLongScoreofUninitialized(int initScore, long hardScore, long mediumScore, long softScore) Deprecated, for removal: This API element is subject to removal in a future version.Useof(long, long, long)instead.static HardMediumSoftLongScoreparseScore(String scoreString) power(double exponent) Returns a Score whose value is (this ^ exponent).longThe total of the broken negative soft constraints and fulfilled positive soft constraints.subtract(HardMediumSoftLongScore subtrahend) Returns a Score whose value is (this - subtrahend).Number[]Returns an array of numbers representing the Score.LikeObject.toString(), but trims score levels which have a zero weight.toString()zero()Returns a Score, all levels of which are zero.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface ai.timefold.solver.core.api.score.Score
getInitScore, initScore, isSolutionInitialized, isZero, negate, toLevelDoubles, withInitScore
-
Field Details
-
ZERO
-
ONE_HARD
-
ONE_MEDIUM
-
ONE_SOFT
-
-
Method Details
-
parseScore
-
ofUninitialized
@Deprecated(forRemoval=true, since="1.22.0") public static HardMediumSoftLongScore ofUninitialized(int initScore, long hardScore, long mediumScore, long softScore) Deprecated, for removal: This API element is subject to removal in a future version.Useof(long, long, long)instead.- Returns:
- init score is always zero
-
of
-
ofHard
-
ofMedium
-
ofSoft
-
hardScore
public long hardScore()The total of the broken negative hard constraints and fulfilled positive hard constraints. Their weight is included in the total. The hard score is usually a negative number because most use cases only have negative constraints.- Returns:
- higher is better, usually negative, 0 if no hard constraints are broken/fulfilled
-
getHardScore
Deprecated, for removal: This API element is subject to removal in a future version.UsehardScore()instead.As defined byhardScore(). -
mediumScore
public long mediumScore()The total of the broken negative medium constraints and fulfilled positive medium constraints. Their weight is included in the total. The medium score is usually a negative number because most use cases only have negative constraints.In a normal score comparison, the medium score is irrelevant if the 2 scores don't have the same hard score.
- Returns:
- higher is better, usually negative, 0 if no medium constraints are broken/fulfilled
-
getMediumScore
Deprecated, for removal: This API element is subject to removal in a future version.UsemediumScore()instead.As defined bymediumScore(). -
softScore
public long softScore()The total of the broken negative soft constraints and fulfilled positive soft constraints. Their weight is included in the total. The soft score is usually a negative number because most use cases only have negative constraints.In a normal score comparison, the soft score is irrelevant if the 2 scores don't have the same hard and medium score.
- Returns:
- higher is better, usually negative, 0 if no soft constraints are broken/fulfilled
-
getSoftScore
Deprecated, for removal: This API element is subject to removal in a future version.UsesoftScore()instead.As defined bysoftScore(). -
isFeasible
public boolean isFeasible()APlanningSolutionis feasible if it has no broken hard constraints.- Specified by:
isFeasiblein interfaceScore<HardMediumSoftLongScore>- Returns:
- true if the
hardScore()is 0 or higher
-
add
Description copied from interface:ScoreReturns a Score whose value is (this + addend).- Specified by:
addin interfaceScore<HardMediumSoftLongScore>- Parameters:
addend- value to be added to this Score- Returns:
- this + addend
-
subtract
Description copied from interface:ScoreReturns a Score whose value is (this - subtrahend).- Specified by:
subtractin interfaceScore<HardMediumSoftLongScore>- Parameters:
subtrahend- value to be subtracted from this Score- Returns:
- this - subtrahend, rounded as necessary
-
multiply
Description copied from interface:ScoreReturns a Score whose value is (this * multiplicand). When rounding is needed, it should be floored (as defined byMath.floor(double)).If the implementation has a scale/precision, then the unspecified scale/precision of the double multiplicand should have no impact on the returned scale/precision.
- Specified by:
multiplyin interfaceScore<HardMediumSoftLongScore>- Parameters:
multiplicand- value to be multiplied by this Score.- Returns:
- this * multiplicand
-
divide
Description copied from interface:ScoreReturns a Score whose value is (this / divisor). When rounding is needed, it should be floored (as defined byMath.floor(double)).If the implementation has a scale/precision, then the unspecified scale/precision of the double divisor should have no impact on the returned scale/precision.
- Specified by:
dividein interfaceScore<HardMediumSoftLongScore>- Parameters:
divisor- value by which this Score is to be divided- Returns:
- this / divisor
-
power
Description copied from interface:ScoreReturns a Score whose value is (this ^ exponent). When rounding is needed, it should be floored (as defined byMath.floor(double)).If the implementation has a scale/precision, then the unspecified scale/precision of the double exponent should have no impact on the returned scale/precision.
- Specified by:
powerin interfaceScore<HardMediumSoftLongScore>- Parameters:
exponent- value by which this Score is to be powered- Returns:
- this ^ exponent
-
abs
Description copied from interface:ScoreReturns a Score whose value is the absolute value of the score, i.e. |this|.- Specified by:
absin interfaceScore<HardMediumSoftLongScore>
-
zero
Description copied from interface:ScoreReturns a Score, all levels of which are zero.- Specified by:
zeroin interfaceScore<HardMediumSoftLongScore>
-
toLevelNumbers
Description copied from interface:ScoreReturns an array of numbers representing the Score. Each number represents 1 score level. A greater score level uses a lower array index than a lesser score level.When rounding is needed, each rounding should be floored (as defined by
Math.floor(double)). The length of the returned array must be stable for a specificScoreimplementation.For example:
-0hard/-7softreturnsnew int{-0, -7}- Specified by:
toLevelNumbersin interfaceScore<HardMediumSoftLongScore>
-
equals
-
hashCode
public int hashCode() -
compareTo
- Specified by:
compareToin interfaceComparable<HardMediumSoftLongScore>
-
toShortString
Description copied from interface:ScoreLikeObject.toString(), but trims score levels which have a zero weight. For example 0hard/-258soft returns -258soft.Do not use this format to persist information as text, use
Object.toString()instead, so it can be parsed reliably.- Specified by:
toShortStringin interfaceScore<HardMediumSoftLongScore>
-
toString
-
hardScore()instead.