Package org.drools.planner.core.score.buildin.hardandsoft

Examples of org.drools.planner.core.score.buildin.hardandsoft.HardAndSoftScoreDefinition


                case SIMPLE:
                    return new SimpleScoreDefinition();
                case SIMPLE_DOUBLE:
                    return new SimpleDoubleScoreDefinition();
                case HARD_AND_SOFT:
                    return new HardAndSoftScoreDefinition();
                case HARD_AND_SOFT_LONG:
                    return new HardAndSoftLongScoreDefinition();
                default:
                    throw new IllegalStateException("The scoreDefinitionType (" + scoreDefinitionType
                            + ") is not implemented");
View Full Code Here


public class HardAndSoftScoreDefinitionTest {

    @Test
    public void testCalculateTimeGradient() {
        HardAndSoftScoreDefinition scoreDefinition = new HardAndSoftScoreDefinition();
        scoreDefinition.setHardScoreTimeGradientWeight(0.75);

        // Normal cases
        // Smack in the middle
        assertEquals(0.6, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-14, -340)), 0.0);
        // No hard broken, total soft broken
        assertEquals(0.75, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-10, -400)), 0.0);
        // Total hard broken, no soft broken
        assertEquals(0.25, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-20, -300)), 0.0);
        // No hard broken, more than total soft broken
        assertEquals(0.75, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-10, -900)), 0.0);
        // More than total hard broken, no soft broken
        assertEquals(0.0, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-90, -300)), 0.0);

        // Perfect min/max cases
        assertEquals(1.0, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-10, -300), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-10, -300)), 0.0);
        assertEquals(0.0, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-20, -400)), 0.0);
        assertEquals(1.0, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-10, -300)), 0.0);

        // Hard total delta is 0
        assertEquals(0.6, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-10, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-10, -340)), 0.0);
        assertEquals(0.0, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-10, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-20, -340)), 0.0);
        assertEquals(1.0, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-10, -400), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-0, -340)), 0.0);

        // Soft total delta is 0
        assertEquals((0.6 * 0.75) + 0.25, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -300), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-14, -300)), 0.0);
        assertEquals(0.6 * 0.75, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -300), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-14, -400)), 0.0);
        assertEquals((0.6 * 0.75) + 0.25, scoreDefinition.calculateTimeGradient(
                DefaultHardAndSoftScore.valueOf(-20, -300), DefaultHardAndSoftScore.valueOf(-10, -300),
                DefaultHardAndSoftScore.valueOf(-14, -0)), 0.0);
    }
View Full Code Here

                case SIMPLE:
                    return new SimpleScoreDefinition();
                case SIMPLE_DOUBLE:
                    return new SimpleDoubleScoreDefinition();
                case HARD_AND_SOFT:
                    return new HardAndSoftScoreDefinition();
                case HARD_AND_SOFT_LONG:
                    return new HardAndSoftLongScoreDefinition();
                default:
                    throw new IllegalStateException("The scoreDefinitionType (" + scoreDefinitionType
                            + ") is not implemented");
View Full Code Here

                case SIMPLE:
                    return new SimpleScoreDefinition();
                case SIMPLE_DOUBLE:
                    return new SimpleDoubleScoreDefinition();
                case HARD_AND_SOFT:
                    return new HardAndSoftScoreDefinition();
                case HARD_AND_SOFT_LONG:
                    return new HardAndSoftLongScoreDefinition();
                default:
                    throw new IllegalStateException("The scoreDefinitionType (" + scoreDefinitionType
                            + ") is not implemented");
View Full Code Here

TOP

Related Classes of org.drools.planner.core.score.buildin.hardandsoft.HardAndSoftScoreDefinition

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.