Class SimulatedAnnealing<M extends Move<S,I>,S extends Solution<S,I>,I extends Instance>

java.lang.Object
es.urjc.etsii.grafo.improve.Improver<S,I>
es.urjc.etsii.grafo.improve.sa.SimulatedAnnealing<M,S,I>
Type Parameters:
M - Move type
S - Solution type
I - Instance type

public class SimulatedAnnealing<M extends Move<S,I>,S extends Solution<S,I>,I extends Instance> extends Improver<S,I>
Simulated annealing (SA) is a metaheuristic whose name comes from annealing in metallurgy. This metaheuristic considers some neighboring state s* of the current state s, and probabilistically decides between moving the system to state s* or staying in-state s. The transition is always performed if it improves the current solution, while it depends on the current temperature if not. The decision to transition is controlled by the AcceptanceCriteria. These probabilities ultimately lead the system to move to lower energy states. After each possible transition, the current temperature is lowered, using the CoolDownControl. The process is repeated until the TerminationCriteria is met. The initial temperature is configured using InitialTemperatureCalculator, which usually defaults to something like the Max diff between the moves in the neighborhood, as implemented in MaxDifferenceInitialTemperature.
See Also: