Class HardSoftDoubleScore
- java.lang.Object
-
- org.optaplanner.core.api.score.AbstractScore<HardSoftDoubleScore>
-
- org.optaplanner.core.api.score.buildin.hardsoftdouble.HardSoftDoubleScore
-
- All Implemented Interfaces:
Serializable,Comparable<HardSoftDoubleScore>,FeasibilityScore<HardSoftDoubleScore>,Score<HardSoftDoubleScore>
@Deprecated public final class HardSoftDoubleScore extends AbstractScore<HardSoftDoubleScore> implements FeasibilityScore<HardSoftDoubleScore>
Deprecated.Double-based scores are deprecated as floating point numbers are not associative (A + B + C == C + B + A) and therefore they are not compatible with incremental score calculation. UseHardSoftBigDecimalScoreor a scaledHardSoftLongScoreinstead.ThisScoreis based on 2 levels of double constraints: hard and soft. Hard constraints have priority over soft constraints. Hard constraints determine feasibility.WARNING: NOT RECOMMENDED TO USE DUE TO ROUNDING ERRORS THAT CAUSE SCORE CORRUPTION. For example, this prints false:
System.out.println((0.01 + 0.05) == (0.01 + 0.02 + 0.03));UseHardSoftBigDecimalScoreinstead.This class is immutable.
- See Also:
Score, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static HardSoftDoubleScoreONE_HARDDeprecated.static HardSoftDoubleScoreONE_SOFTDeprecated.static HardSoftDoubleScoreZERODeprecated.-
Fields inherited from class org.optaplanner.core.api.score.AbstractScore
INIT_LABEL, initScore
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description HardSoftDoubleScoreadd(HardSoftDoubleScore addend)Deprecated.Returns a Score whose value is (this + addend).intcompareTo(HardSoftDoubleScore other)Deprecated.HardSoftDoubleScoredivide(double divisor)Deprecated.Returns a Score whose value is (this / divisor).booleanequals(Object o)Deprecated.doublegetHardScore()Deprecated.The total of the broken negative hard constraints and fulfilled positive hard constraints.doublegetSoftScore()Deprecated.The total of the broken negative soft constraints and fulfilled positive soft constraints.inthashCode()Deprecated.booleanisCompatibleArithmeticArgument(Score otherScore)Deprecated.booleanisFeasible()Deprecated.APlanningSolutionis feasible if it has no broken hard constraints andScore.isSolutionInitialized()is true.HardSoftDoubleScoremultiply(double multiplicand)Deprecated.Returns a Score whose value is (this * multiplicand).HardSoftDoubleScorenegate()Deprecated.Returns a Score whose value is (- this).static HardSoftDoubleScoreof(double hardScore, double softScore)Deprecated.static HardSoftDoubleScoreofHard(double hardScore)Deprecated.static HardSoftDoubleScoreofSoft(double softScore)Deprecated.static HardSoftDoubleScoreofUninitialized(int initScore, double hardScore, double softScore)Deprecated.static HardSoftDoubleScoreparseScore(String scoreString)Deprecated.HardSoftDoubleScorepower(double exponent)Deprecated.Returns a Score whose value is (this ^ exponent).HardSoftDoubleScoresubtract(HardSoftDoubleScore subtrahend)Deprecated.Returns a Score whose value is (this - subtrahend).Number[]toLevelNumbers()Deprecated.Returns an array of numbers representing the Score.StringtoShortString()Deprecated.LikeObject.toString(), but trims score levels which have a zero weight.StringtoString()Deprecated.static HardSoftDoubleScorevalueOf(double hardScore, double softScore)Deprecated.in favor ofof(double, double)static HardSoftDoubleScorevalueOfUninitialized(int initScore, double hardScore, double softScore)Deprecated.in favor ofofUninitialized(int, double, double)HardSoftDoubleScorewithInitScore(int newInitScore)Deprecated.For example0hard/-8softwith-7returns-7init/0hard/-8soft.-
Methods inherited from class org.optaplanner.core.api.score.AbstractScore
assertNoInitScore, buildScorePattern, buildShortString, getInitPrefix, getInitScore, isSolutionInitialized, parseInitScore, parseLevelAsBigDecimal, parseLevelAsDouble, parseLevelAsInt, parseLevelAsLong, parseScoreTokens
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.optaplanner.core.api.score.Score
getInitScore, isSolutionInitialized, toInitializedScore
-
-
-
-
Field Detail
-
ZERO
public static final HardSoftDoubleScore ZERO
Deprecated.
-
ONE_HARD
public static final HardSoftDoubleScore ONE_HARD
Deprecated.
-
ONE_SOFT
public static final HardSoftDoubleScore ONE_SOFT
Deprecated.
-
-
Method Detail
-
parseScore
public static HardSoftDoubleScore parseScore(String scoreString)
Deprecated.
-
ofUninitialized
public static HardSoftDoubleScore ofUninitialized(int initScore, double hardScore, double softScore)
Deprecated.
-
valueOfUninitialized
@Deprecated public static HardSoftDoubleScore valueOfUninitialized(int initScore, double hardScore, double softScore)
Deprecated.in favor ofofUninitialized(int, double, double)
-
of
public static HardSoftDoubleScore of(double hardScore, double softScore)
Deprecated.
-
valueOf
@Deprecated public static HardSoftDoubleScore valueOf(double hardScore, double softScore)
Deprecated.in favor ofof(double, double)
-
ofHard
public static HardSoftDoubleScore ofHard(double hardScore)
Deprecated.
-
ofSoft
public static HardSoftDoubleScore ofSoft(double softScore)
Deprecated.
-
getHardScore
public double getHardScore()
Deprecated.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
-
getSoftScore
public double getSoftScore()
Deprecated.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 score.
- Returns:
- higher is better, usually negative, 0 if no soft constraints are broken/fulfilled
-
withInitScore
public HardSoftDoubleScore withInitScore(int newInitScore)
Deprecated.Description copied from interface:ScoreFor example0hard/-8softwith-7returns-7init/0hard/-8soft.- Specified by:
withInitScorein interfaceScore<HardSoftDoubleScore>- Parameters:
newInitScore- always negative (except in statistical calculations), 0 if all planning variables are initialized- Returns:
- equals score except that
Score.getInitScore()is set tonewInitScore
-
isFeasible
public boolean isFeasible()
Deprecated.Description copied from interface:FeasibilityScoreAPlanningSolutionis feasible if it has no broken hard constraints andScore.isSolutionInitialized()is true.- Specified by:
isFeasiblein interfaceFeasibilityScore<HardSoftDoubleScore>- Specified by:
isFeasiblein interfaceScore<HardSoftDoubleScore>- Returns:
- true if the hard score is 0 or higher and the
Score.getInitScore()is 0.
-
add
public HardSoftDoubleScore add(HardSoftDoubleScore addend)
Deprecated.Description copied from interface:ScoreReturns a Score whose value is (this + addend).- Specified by:
addin interfaceScore<HardSoftDoubleScore>- Parameters:
addend- value to be added to this Score- Returns:
- this + addend
-
subtract
public HardSoftDoubleScore subtract(HardSoftDoubleScore subtrahend)
Deprecated.Description copied from interface:ScoreReturns a Score whose value is (this - subtrahend).- Specified by:
subtractin interfaceScore<HardSoftDoubleScore>- Parameters:
subtrahend- value to be subtracted from this Score- Returns:
- this - subtrahend, rounded as necessary
-
multiply
public HardSoftDoubleScore multiply(double multiplicand)
Deprecated.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<HardSoftDoubleScore>- Parameters:
multiplicand- value to be multiplied by this Score.- Returns:
- this * multiplicand
-
divide
public HardSoftDoubleScore divide(double divisor)
Deprecated.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<HardSoftDoubleScore>- Parameters:
divisor- value by which this Score is to be divided- Returns:
- this / divisor
-
power
public HardSoftDoubleScore power(double exponent)
Deprecated.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<HardSoftDoubleScore>- Parameters:
exponent- value by which this Score is to be powered- Returns:
- this ^ exponent
-
negate
public HardSoftDoubleScore negate()
Deprecated.Description copied from interface:ScoreReturns a Score whose value is (- this).- Specified by:
negatein interfaceScore<HardSoftDoubleScore>- Returns:
- - this
-
toLevelNumbers
public Number[] toLevelNumbers()
Deprecated.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}The level numbers do not contain the
Score.getInitScore(). For example:-3init/-0hard/-7softalso returnsnew int{-0, -7}- Specified by:
toLevelNumbersin interfaceScore<HardSoftDoubleScore>- Returns:
- never null
- See Also:
ScoreDefinition.fromLevelNumbers(int, Number[])
-
compareTo
public int compareTo(HardSoftDoubleScore other)
Deprecated.- Specified by:
compareToin interfaceComparable<HardSoftDoubleScore>
-
toShortString
public String toShortString()
Deprecated.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<HardSoftDoubleScore>- Returns:
- never null
-
isCompatibleArithmeticArgument
public boolean isCompatibleArithmeticArgument(Score otherScore)
Deprecated.- Specified by:
isCompatibleArithmeticArgumentin interfaceScore<HardSoftDoubleScore>- Parameters:
otherScore- never null- Returns:
- true if the otherScore is accepted as a parameter of
Score.add(Score),Score.subtract(Score)andComparable.compareTo(Object).
-
-