All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.drools.planner.core.score.buildin.simpledouble.DefaultSimpleDoubleScore Maven / Gradle / Ivy

Go to download

Drools Planner optimizes automated planning by combining metaheuristic search algorithms with rule engine powered score calculation. This is the drools-planner-core module which contains metaheuristic algorithms.

There is a newer version: 6.0.0.Alpha9
Show newest version
/*
 * Copyright 2011 JBoss Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.drools.planner.core.score.buildin.simpledouble;

import org.drools.planner.core.score.AbstractScore;

/**
 * Default implementation of {@link SimpleDoubleScore}.
 * 

* This class is immutable. * @see SimpleDoubleScore */ public final class DefaultSimpleDoubleScore extends AbstractScore implements SimpleDoubleScore { public static DefaultSimpleDoubleScore parseScore(String scoreString) { return valueOf(Double.parseDouble(scoreString)); } public static DefaultSimpleDoubleScore valueOf(double score) { return new DefaultSimpleDoubleScore(score); } private final double score; public DefaultSimpleDoubleScore(double score) { this.score = score; } public double getScore() { return score; } // ************************************************************************ // Worker methods // ************************************************************************ public SimpleDoubleScore add(SimpleDoubleScore augment) { return new DefaultSimpleDoubleScore(score + augment.getScore()); } public SimpleDoubleScore subtract(SimpleDoubleScore subtrahend) { return new DefaultSimpleDoubleScore(score - subtrahend.getScore()); } public SimpleDoubleScore multiply(double multiplicand) { return new DefaultSimpleDoubleScore(Math.floor(score * multiplicand)); } public SimpleDoubleScore divide(double divisor) { return new DefaultSimpleDoubleScore(Math.floor(score / divisor)); } public double[] toDoubleArray() { return new double[]{score}; } public boolean equals(Object o) { // A direct implementation (instead of EqualsBuilder) to avoid dependencies if (this == o) { return true; } else if (o instanceof SimpleDoubleScore) { SimpleDoubleScore other = (SimpleDoubleScore) o; return score == other.getScore(); } else { return false; } } public int hashCode() { // A direct implementation (instead of HashCodeBuilder) to avoid dependencies return (17 * 37) + Double.valueOf(score).hashCode(); } public int compareTo(SimpleDoubleScore other) { // A direct implementation (instead of CompareToBuilder) to avoid dependencies if (score < other.getScore()) { return -1; } else if (score > other.getScore()) { return 1; } else { return 0; } } public String toString() { return Double.toString(score); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy