public final class HardSoftBigDecimalScore extends AbstractScore<HardSoftBigDecimalScore> implements FeasibilityScore<HardSoftBigDecimalScore>
Score
is based on 2 levels of BigDecimal
constraints: hard and soft.
Hard constraints have priority over soft constraints.
This class is immutable.
Score
,
Serialized FormModifier and Type | Method and Description |
---|---|
HardSoftBigDecimalScore |
add(HardSoftBigDecimalScore augment)
Returns a Score whose value is (this + augment).
|
int |
compareTo(HardSoftBigDecimalScore other) |
HardSoftBigDecimalScore |
divide(double divisor)
Returns a Score whose value is (this / divisor).
|
boolean |
equals(Object o) |
BigDecimal |
getHardScore()
The total of the broken negative hard constraints and fulfilled positive hard constraints.
|
BigDecimal |
getSoftScore()
The total of the broken negative soft constraints and fulfilled positive soft constraints.
|
int |
hashCode() |
boolean |
isFeasible()
A
Solution is feasible if it has no broken hard constraints. |
HardSoftBigDecimalScore |
multiply(double multiplicand)
Returns a Score whose value is (this * multiplicand).
|
HardSoftBigDecimalScore |
negate()
Returns a Score whose value is (- this).
|
static HardSoftBigDecimalScore |
parseScore(String scoreString) |
HardSoftBigDecimalScore |
power(double exponent)
Returns a Score whose value is (this ^ exponent).
|
HardSoftBigDecimalScore |
subtract(HardSoftBigDecimalScore subtrahend)
Returns a Score whose value is (this - subtrahend).
|
Number[] |
toLevelNumbers()
Returns an array of numbers representing the Score.
|
String |
toString() |
static HardSoftBigDecimalScore |
valueOf(BigDecimal hardScore,
BigDecimal softScore) |
buildScorePattern, buildScorePattern, isCompatibleArithmeticArgument, parseLevelAsBigDecimal, parseLevelAsDouble, parseLevelAsInt, parseLevelAsLong, parseLevelStrings, parseLevelStrings
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
isCompatibleArithmeticArgument
public static HardSoftBigDecimalScore parseScore(String scoreString)
public static HardSoftBigDecimalScore valueOf(BigDecimal hardScore, BigDecimal softScore)
public BigDecimal getHardScore()
public BigDecimal getSoftScore()
In a normal score comparison, the soft score is irrelevant if the 2 scores don't have the same hard score.
public boolean isFeasible()
FeasibilityScore
Solution
is feasible if it has no broken hard constraints.isFeasible
in interface FeasibilityScore<HardSoftBigDecimalScore>
public HardSoftBigDecimalScore add(HardSoftBigDecimalScore augment)
Score
add
in interface Score<HardSoftBigDecimalScore>
augment
- value to be added to this Scorepublic HardSoftBigDecimalScore subtract(HardSoftBigDecimalScore subtrahend)
Score
subtract
in interface Score<HardSoftBigDecimalScore>
subtrahend
- value to be subtracted from this Scorepublic HardSoftBigDecimalScore multiply(double multiplicand)
Score
Math.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.
multiply
in interface Score<HardSoftBigDecimalScore>
multiplicand
- value to be multiplied by this Score.public HardSoftBigDecimalScore divide(double divisor)
Score
Math.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.
divide
in interface Score<HardSoftBigDecimalScore>
divisor
- value by which this Score is to be dividedpublic HardSoftBigDecimalScore power(double exponent)
Score
Math.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.
power
in interface Score<HardSoftBigDecimalScore>
exponent
- value by which this Score is to be poweredpublic HardSoftBigDecimalScore negate()
Score
negate
in interface Score<HardSoftBigDecimalScore>
public Number[] toLevelNumbers()
Score
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 specific Score
implementation.
For example: -0hard/-7soft
returns new int{-0, -7}
toLevelNumbers
in interface Score<HardSoftBigDecimalScore>
ScoreDefinition.fromLevelNumbers(Number[])
public int compareTo(HardSoftBigDecimalScore other)
compareTo
in interface Comparable<HardSoftBigDecimalScore>
Copyright © 2006–2016 JBoss by Red Hat. All rights reserved.