Class BendableBigDecimalScore
- All Implemented Interfaces:
IBendableScore<BendableBigDecimalScore>,Score<BendableBigDecimalScore>,Serializable,Comparable<BendableBigDecimalScore>
Score is based on n levels of BigDecimal constraints.
The number of levels is bendable at configuration time.
This class is immutable.
The hardLevelsSize() and softLevelsSize() must be the same as in the
BendableScoreDefinition used.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionabs()Returns a Score whose value is the absolute value of the score, i.e.add(BendableBigDecimalScore addend) Returns a Score whose value is (this + addend).intcompareTo(BendableBigDecimalScore other) divide(double divisor) Returns a Score whose value is (this / divisor).booleangetHardOrSoftScore(int index) Deprecated, for removal: This API element is subject to removal in a future version.getHardScore(int index) Deprecated, for removal: This API element is subject to removal in a future version.UsehardScore(int)instead.Deprecated, for removal: This API element is subject to removal in a future version.UsehardScores()instead.getSoftScore(int index) Deprecated, for removal: This API element is subject to removal in a future version.UsesoftScore(int)instead.Deprecated, for removal: This API element is subject to removal in a future version.UsesoftScores()instead.intThe sum of this andIBendableScore.softLevelsSize()equalsIBendableScore.levelsSize().hardOrSoftScore(int index) hardScore(int index) inthashCode()booleanAPlanningSolutionis feasible if it has no broken hard constraints.multiply(double multiplicand) Returns a Score whose value is (this * multiplicand).negate()Returns a Score whose value is (- this).static BendableBigDecimalScoreof(BigDecimal[] hardScores, BigDecimal[] softScores) Creates a newBendableBigDecimalScore.static BendableBigDecimalScoreofHard(int hardLevelsSize, int softLevelsSize, int hardLevel, BigDecimal hardScore) Creates a newBendableBigDecimalScore.static BendableBigDecimalScoreofSoft(int hardLevelsSize, int softLevelsSize, int softLevel, BigDecimal softScore) Creates a newBendableBigDecimalScore.static BendableBigDecimalScoreofUninitialized(int initScore, BigDecimal[] hardScores, BigDecimal[] softScores) Deprecated, for removal: This API element is subject to removal in a future version.Useof(BigDecimal[], BigDecimal[])instead.static BendableBigDecimalScoreparseScore(String scoreString) power(double exponent) Returns a Score whose value is (this ^ exponent).intThe sum ofIBendableScore.hardLevelsSize()and this equalsIBendableScore.levelsSize().softScore(int index) subtract(BendableBigDecimalScore 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()voidzero()Returns a Score, all levels of which are zero.static BendableBigDecimalScorezero(int hardLevelsSize, int softLevelsSize) Creates a newBendableBigDecimalScore.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface ai.timefold.solver.core.api.score.IBendableScore
getHardLevelsSize, getLevelsSize, getSoftLevelsSize, levelsSizeMethods inherited from interface ai.timefold.solver.core.api.score.Score
getInitScore, initScore, isSolutionInitialized, isZero, toLevelDoubles, withInitScore
-
Method Details
-
parseScore
-
ofUninitialized
@Deprecated(forRemoval=true, since="1.22.0") public static BendableBigDecimalScore ofUninitialized(int initScore, BigDecimal[] hardScores, BigDecimal[] softScores) Deprecated, for removal: This API element is subject to removal in a future version.Useof(BigDecimal[], BigDecimal[])instead.- Returns:
- init score is always zero
-
of
Creates a newBendableBigDecimalScore.- Parameters:
hardScores- never change that array afterwards: it must be immutablesoftScores- never change that array afterwards: it must be immutable
-
zero
Creates a newBendableBigDecimalScore.- Parameters:
hardLevelsSize- at least 0softLevelsSize- at least 0
-
ofHard
public static BendableBigDecimalScore ofHard(int hardLevelsSize, int softLevelsSize, int hardLevel, BigDecimal hardScore) Creates a newBendableBigDecimalScore.- Parameters:
hardLevelsSize- at least 0softLevelsSize- at least 0hardLevel- at least 0, less than hardLevelsSize
-
ofSoft
public static BendableBigDecimalScore ofSoft(int hardLevelsSize, int softLevelsSize, int softLevel, BigDecimal softScore) Creates a newBendableBigDecimalScore.- Parameters:
hardLevelsSize- at least 0softLevelsSize- at least 0softLevel- at least 0, less than softLevelsSize
-
hardScores
- Returns:
- array copy because this class is immutable
-
getHardScores
Deprecated, for removal: This API element is subject to removal in a future version.UsehardScores()instead.As defined byhardScores(). -
softScores
- Returns:
- array copy because this class is immutable
-
getSoftScores
Deprecated, for removal: This API element is subject to removal in a future version.UsesoftScores()instead.As defined bysoftScores(). -
hardLevelsSize
public int hardLevelsSize()Description copied from interface:IBendableScoreThe sum of this andIBendableScore.softLevelsSize()equalsIBendableScore.levelsSize().- Specified by:
hardLevelsSizein interfaceIBendableScore<BendableBigDecimalScore>- Returns:
>= 0and<IBendableScore.levelsSize()
-
hardScore
- Parameters:
index-0 <= index <hardLevelsSize()- Returns:
- higher is better
-
getHardScore
Deprecated, for removal: This API element is subject to removal in a future version.UsehardScore(int)instead.As defined byhardScore(int). -
softLevelsSize
public int softLevelsSize()Description copied from interface:IBendableScoreThe sum ofIBendableScore.hardLevelsSize()and this equalsIBendableScore.levelsSize().- Specified by:
softLevelsSizein interfaceIBendableScore<BendableBigDecimalScore>- Returns:
>= 0and<IBendableScore.levelsSize()
-
softScore
- Parameters:
index-0 <= index <softLevelsSize()- Returns:
- higher is better
-
getSoftScore
Deprecated, for removal: This API element is subject to removal in a future version.UsesoftScore(int)instead.As defined bysoftScore(int). -
hardOrSoftScore
- Parameters:
index-0 <= index <IBendableScore.levelsSize()- Returns:
- higher is better
-
getHardOrSoftScore
Deprecated, for removal: This API element is subject to removal in a future version.UsehardOrSoftScore(int)instead.As defined byhardOrSoftScore(int). -
isFeasible
public boolean isFeasible()Description copied from interface:ScoreAPlanningSolutionis feasible if it has no broken hard constraints. Simple scores (SimpleScore,SimpleLongScore,SimpleBigDecimalScore) are always feasible.- Specified by:
isFeasiblein interfaceScore<BendableBigDecimalScore>- Returns:
- true if the hard score is 0 or higher.
-
add
Description copied from interface:ScoreReturns a Score whose value is (this + addend).- Specified by:
addin interfaceScore<BendableBigDecimalScore>- 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<BendableBigDecimalScore>- 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<BendableBigDecimalScore>- 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<BendableBigDecimalScore>- 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<BendableBigDecimalScore>- Parameters:
exponent- value by which this Score is to be powered- Returns:
- this ^ exponent
-
negate
Description copied from interface:ScoreReturns a Score whose value is (- this).- Specified by:
negatein interfaceScore<BendableBigDecimalScore>- Returns:
- - this
-
abs
Description copied from interface:ScoreReturns a Score whose value is the absolute value of the score, i.e. |this|.- Specified by:
absin interfaceScore<BendableBigDecimalScore>
-
zero
Description copied from interface:ScoreReturns a Score, all levels of which are zero.- Specified by:
zeroin interfaceScore<BendableBigDecimalScore>
-
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<BendableBigDecimalScore>
-
equals
-
hashCode
public int hashCode() -
compareTo
- Specified by:
compareToin interfaceComparable<BendableBigDecimalScore>
-
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<BendableBigDecimalScore>
-
toString
-
validateCompatible
-
hardOrSoftScore(int)instead.