Class ExponentialDeviationHeuristicFunction

java.lang.Object
com.aoindustries.aoserv.cluster.optimize.ExponentialDeviationHeuristicFunction
All Implemented Interfaces:
ResultHandler<Object>, HeuristicFunction

public class ExponentialDeviationHeuristicFunction extends Object implements HeuristicFunction, ResultHandler<Object>
Adds up all the non-optimal states of the analyzed cluster giving more weight to higher level problems. Adds in g*.00001 to prefer shorter paths. Each type of problem is scaled by how far off the state is when possible.

This is not thread safe.

The values are:

 BASE = 1.5

 NONE = 0
 LOW = deviation
 MEDIUM = BASE * deviation
 HIGH = BASE*BASE * deviation
 CRITICAL = 1024 + BASE*BASE*BASE * deviation
 
Author:
AO Industries, Inc.
  • Constructor Details

    • ExponentialDeviationHeuristicFunction

      public ExponentialDeviationHeuristicFunction()
  • Method Details

    • getHeuristic

      public double getHeuristic(ClusterConfiguration clusterConfiguration, int g)
      Description copied from interface: HeuristicFunction
      Estimates the number of moves to an optimal state. If it uses the provided g g(n) it will result in Algorithm A. If it also always uses h(n) <= h*(n) it will result in Algorithm A*.
      Specified by:
      getHeuristic in interface HeuristicFunction
      Parameters:
      clusterConfiguration - The ClusterConfiguration representing the current state.
      g - The number of moves already made.
      Returns:
      The estimated number of moves to an optimal state
    • handleResult

      public boolean handleResult(Result<?> result)
      Description copied from interface: ResultHandler
      Each result is provided as it is generated instead of building into lists.
      Specified by:
      handleResult in interface ResultHandler<Object>
      Returns:
      true if more results are wanted, or false to receive no more results.