Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright 2010 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.definition;
A ScoreDefinition knows how to compare scores and what the perfect maximum/minimum Score is.

public interface ScoreDefinition<S extends Score> {

    
The perfect maximum score is the score of which there is no better in any problem instance. This doesn't mean that the current problem instance, or any problem instance for that matter, could ever attain that score. For example, most cases have a perfect maximum score of zero, as most use cases only have negative scores.

Returns:
null if not supported
    S getPerfectMaximumScore();

    
The perfect minimum score is the score of which there is no worser in any problem instance. This doesn't mean that the current problem instance, or any problem instance for that matter, could ever attain such a bad score. For example, most cases have a perfect minimum score of negative infinity.

Returns:
null if not supported
    S getPerfectMinimumScore();

    
Parses the String and returns a Score.

Parameters:
scoreString never null
Returns:
never null
    Score parseScore(String scoreString);

    
See explanation in org.drools.planner.core.termination.Termination.calculateSolverTimeGradient(org.drools.planner.core.solver.DefaultSolverScope).

Parameters:
startScore never null
endScore never null
score never null
Returns:
between 0.0 and 1.0
    double calculateTimeGradient(S startScore, S endScore, S score);

    

Parameters:
score never null
Returns:
null if should not be shown on the graph
    Double translateScoreToGraphValue(S score);

    
TODO remove when the rule that sums the final score can be written as a single rule and ScoreCalculator is dead

Returns:
never null
New to GrepCode? Check out our FAQ X