public final class HardMediumSoftLongScore extends AbstractScore<HardMediumSoftLongScore> implements FeasibilityScore<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.
This class is immutable.
Score,
Serialized Form| Modifier and Type | Method and Description |
|---|---|
HardMediumSoftLongScore |
add(HardMediumSoftLongScore augment)
Returns a Score whose value is (this + augment).
|
int |
compareTo(HardMediumSoftLongScore other) |
HardMediumSoftLongScore |
divide(double divisor)
Returns a Score whose value is (this / divisor).
|
boolean |
equals(Object o) |
long |
getHardScore()
The total of the broken negative hard constraints and fulfilled positive hard constraints.
|
long |
getMediumScore()
The total of the broken negative medium constraints and fulfilled positive medium constraints.
|
long |
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. |
HardMediumSoftLongScore |
multiply(double multiplicand)
Returns a Score whose value is (this * multiplicand).
|
HardMediumSoftLongScore |
negate()
Returns a Score whose value is (- this).
|
static HardMediumSoftLongScore |
parseScore(String scoreString) |
HardMediumSoftLongScore |
power(double exponent)
Returns a Score whose value is (this ^ exponent).
|
HardMediumSoftLongScore |
subtract(HardMediumSoftLongScore subtrahend)
Returns a Score whose value is (this - subtrahend).
|
Number[] |
toLevelNumbers()
Returns an array of numbers representing the Score.
|
String |
toString() |
static HardMediumSoftLongScore |
valueOf(long hardScore,
long mediumScore,
long softScore) |
buildScorePattern, buildScorePattern, isCompatibleArithmeticArgument, parseLevelAsBigDecimal, parseLevelAsDouble, parseLevelAsInt, parseLevelAsLong, parseLevelStrings, parseLevelStringsclone, finalize, getClass, notify, notifyAll, wait, wait, waitisCompatibleArithmeticArgumentpublic static HardMediumSoftLongScore parseScore(String scoreString)
public static HardMediumSoftLongScore valueOf(long hardScore, long mediumScore, long softScore)
public long getHardScore()
public long getMediumScore()
In a normal score comparison, the medium score is irrelevant if the 2 scores don't have the same hard score.
public long getSoftScore()
In a normal score comparison, the soft score is irrelevant if the 2 scores don't have the same hard and medium score.
public boolean isFeasible()
Solution is feasible if it has no broken hard constraints.isFeasible in interface FeasibilityScore<HardMediumSoftLongScore>getHardScore() is 0 or higherpublic HardMediumSoftLongScore add(HardMediumSoftLongScore augment)
Scoreadd in interface Score<HardMediumSoftLongScore>augment - value to be added to this Scorepublic HardMediumSoftLongScore subtract(HardMediumSoftLongScore subtrahend)
Scoresubtract in interface Score<HardMediumSoftLongScore>subtrahend - value to be subtracted from this Scorepublic HardMediumSoftLongScore multiply(double multiplicand)
ScoreMath.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<HardMediumSoftLongScore>multiplicand - value to be multiplied by this Score.public HardMediumSoftLongScore divide(double divisor)
ScoreMath.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<HardMediumSoftLongScore>divisor - value by which this Score is to be dividedpublic HardMediumSoftLongScore power(double exponent)
ScoreMath.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<HardMediumSoftLongScore>exponent - value by which this Score is to be poweredpublic HardMediumSoftLongScore negate()
Scorenegate in interface Score<HardMediumSoftLongScore>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<HardMediumSoftLongScore>ScoreDefinition.fromLevelNumbers(Number[])public int compareTo(HardMediumSoftLongScore other)
compareTo in interface Comparable<HardMediumSoftLongScore>Copyright © 2006–2016 JBoss by Red Hat. All rights reserved.