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 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
-
ExponentialDeviationHeuristicFunction
public ExponentialDeviationHeuristicFunction()
-
-
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.
-