Class HardSoftLongScore

    • Method Detail

      • ofUninitialized

        public static HardSoftLongScore ofUninitialized​(int initScore,
                                                        long hardScore,
                                                        long softScore)
      • getHardScore

        public long getHardScore()
        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 long getSoftScore()
        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 HardSoftLongScore withInitScore​(int newInitScore)
        Description copied from interface: Score
        For example 0hard/-8soft with -7 returns -7init/0hard/-8soft.
        Specified by:
        withInitScore in interface Score<HardSoftLongScore>
        Parameters:
        newInitScore - always negative (except in statistical calculations), 0 if all planning variables are initialized
        Returns:
        equals score except that Score.getInitScore() is set to newInitScore
      • subtract

        public HardSoftLongScore subtract​(HardSoftLongScore subtrahend)
        Description copied from interface: Score
        Returns a Score whose value is (this - subtrahend).
        Specified by:
        subtract in interface Score<HardSoftLongScore>
        Parameters:
        subtrahend - value to be subtracted from this Score
        Returns:
        this - subtrahend, rounded as necessary
      • multiply

        public HardSoftLongScore multiply​(double multiplicand)
        Description copied from interface: Score
        Returns a Score whose value is (this * multiplicand). When rounding is needed, it should be floored (as defined by 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.

        Specified by:
        multiply in interface Score<HardSoftLongScore>
        Parameters:
        multiplicand - value to be multiplied by this Score.
        Returns:
        this * multiplicand
      • divide

        public HardSoftLongScore divide​(double divisor)
        Description copied from interface: Score
        Returns a Score whose value is (this / divisor). When rounding is needed, it should be floored (as defined by 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.

        Specified by:
        divide in interface Score<HardSoftLongScore>
        Parameters:
        divisor - value by which this Score is to be divided
        Returns:
        this / divisor
      • power

        public HardSoftLongScore power​(double exponent)
        Description copied from interface: Score
        Returns a Score whose value is (this ^ exponent). When rounding is needed, it should be floored (as defined by 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.

        Specified by:
        power in interface Score<HardSoftLongScore>
        Parameters:
        exponent - value by which this Score is to be powered
        Returns:
        this ^ exponent
      • toLevelNumbers

        public Number[] toLevelNumbers()
        Description copied from interface: Score
        Returns 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 specific Score implementation.

        For example: -0hard/-7soft returns new int{-0, -7}

        The level numbers do not contain the Score.getInitScore(). For example: -3init/-0hard/-7soft also returns new int{-0, -7}

        Specified by:
        toLevelNumbers in interface Score<HardSoftLongScore>
        Returns:
        never null
        See Also:
        ScoreDefinition.fromLevelNumbers(int, Number[])
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • toShortString

        public String toShortString()
        Description copied from interface: Score
        Like Object.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:
        toShortString in interface Score<HardSoftLongScore>
        Returns:
        never null