Class ExponentialDeviationWithNoneHeuristicFunction
java.lang.Object
com.aoindustries.aoserv.cluster.optimize.ExponentialDeviationWithNoneHeuristicFunction
- All Implemented Interfaces:
ResultHandler<Object>
,HeuristicFunction
public class ExponentialDeviationWithNoneHeuristicFunction
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.
The heuristics for "NONE" are also added (in negative form) with a coefficient of .001 (as a tie breaker with more weight than number of moves).
This is not thread safe.
The values are:
BASE = 1.5 NONE = 0.001 * deviation LOW = deviation MEDIUM = BASE * deviation HIGH = BASE*BASE * deviation CRITICAL = 1024 + BASE*BASE*BASE * deviation
- Author:
- AO Industries, Inc.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiondouble
getHeuristic
(ClusterConfiguration clusterConfiguration, int g) Estimates the number of moves to an optimal state.boolean
handleResult
(Result<?> result) Each result is provided as it is generated instead of building into lists.
-
Constructor Details
-
ExponentialDeviationWithNoneHeuristicFunction
public ExponentialDeviationWithNoneHeuristicFunction()
-
-
Method Details
-
getHeuristic
Description copied from interface:HeuristicFunction
Estimates the number of moves to an optimal state. If it uses the providedg
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 interfaceHeuristicFunction
- Parameters:
clusterConfiguration
- TheClusterConfiguration
representing the current state.g
- The number of moves already made.- Returns:
- The estimated number of moves to an optimal state
-
handleResult
Description copied from interface:ResultHandler
Each result is provided as it is generated instead of building into lists.- Specified by:
handleResult
in interfaceResultHandler<Object>
- Returns:
- true if more results are wanted, or false to receive no more results.
-