package opt; import shared.Instance; /** * A randomized hill climbing algorithm * @author Andrew Guillory gtg008g@mail.gatech.edu * @version 1.0 */ public class RandomizedHillClimbing extends OptimizationAlgorithm { /** * The current optimization data */ private Instance cur; /** * The current value of the data */ private double curVal; /** * Make a new randomized hill climbing */ public RandomizedHillClimbing(HillClimbingProblem hcp) { super(hcp); cur = hcp.random(); curVal = hcp.value(cur); } /** * @see shared.Trainer#train() */ public double train() { HillClimbingProblem hcp = (HillClimbingProblem) getOptimizationProblem(); Instance neigh = hcp.neighbor(cur); double neighVal = hcp.value(neigh); if (neighVal > curVal) { curVal = neighVal; cur = neigh; } return curVal; } /** * @see opt.OptimizationAlgorithm#getOptimalData() */ public Instance getOptimal() { return cur; } }