Header menu logo bristlecone

SimulatedAnnealing Module

A meta-heuristic that approximates a global optimium by simulating slow cooling as a slow decrease in the probability of temporarily accepting worse solutions.

Types and nested modules

Type/Module Description

CoolingSchemes

Cooling schemes dictate the conditions under which the temperature is cooled during simulated annealing.

Machines

Tuning

AnnealSettings

Represents configurable settings of an annealing procedure that supports (a) heating, followed by (b) annealing.

Functions and values

Function or value Description

anneal writeOut chainEnd annealEnd cool markov temperature (arg7, arg7) previousBests

Full Usage: anneal writeOut chainEnd annealEnd cool markov temperature (arg7, arg7) previousBests

Parameters:
Returns: (float<MeasureProduct<-logL, MeasureOne>> * 'c) list

Cool between homoegenous markov chains according to `cool` schedule. Each anneal recursion begins from the end of the previous markov chain.

writeOut : LogEvent -> unit
chainEnd : 'a
annealEnd : 'b
cool : float -> int -> float
markov : 'a -> float -> float<MeasureProduct<-logL, MeasureOne>> * 'c -> (float<MeasureProduct<-logL, MeasureOne>> * 'c) list
temperature : float
arg6 : float<MeasureProduct<-logL, MeasureOne>>
arg7 : 'c
previousBests : (float<MeasureProduct<-logL, MeasureOne>> * 'c) list
Returns: (float<MeasureProduct<-logL, MeasureOne>> * 'c) list

classicalSimulatedAnnealing scale tDependentProposal settings

Full Usage: classicalSimulatedAnnealing scale tDependentProposal settings

Parameters:
Returns: Optimiser

Candidate distribution: Gaussian univariate [] Probability: Boltzmann Machine

scale : float<MeasureProduct<optim-space, MeasureOne>>
tDependentProposal : bool
settings : AnnealSettings
Returns: Optimiser

fastSimulatedAnnealing scale tDependentProposal settings

Full Usage: fastSimulatedAnnealing scale tDependentProposal settings

Parameters:
Returns: Optimiser

Candidate distribution: Cauchy univariate [] Probability: Bottzmann Machine

scale : float<MeasureProduct<optim-space, MeasureOne>>
tDependentProposal : bool
settings : AnnealSettings
Returns: Optimiser

heat write endCondition ceiling endAcceptanceRate heatingSchedule markov (arg7, arg7) temperature

Full Usage: heat write endCondition ceiling endAcceptanceRate heatingSchedule markov (arg7, arg7) temperature

Parameters:
Returns: float * (float<MeasureProduct<-logL, MeasureOne>> * 'b)

Heat up temperature until acceptance rate of bad moves is above the threshold `endAcceptanceRate`. If it becomes impossible to propose a move during heating, then heating ends.

write : LogEvent -> unit
endCondition : 'a
ceiling : float option
endAcceptanceRate : float
heatingSchedule : float -> float
markov : 'a -> float -> float<MeasureProduct<-logL, MeasureOne>> * 'b -> (float<MeasureProduct<-logL, MeasureOne>> * 'b) list
arg6 : float<MeasureProduct<-logL, MeasureOne>>
arg7 : 'b
temperature : float
Returns: float * (float<MeasureProduct<-logL, MeasureOne>> * 'b)

markovChain writeOut atEnd propose probability random f temperature (arg8, arg8)

Full Usage: markovChain writeOut atEnd propose probability random f temperature (arg8, arg8)

Parameters:
Returns: Solution list

Run a homogenous Markov chain recursively until an end condition - `atEnd` - is met.

writeOut : LogEvent -> unit
atEnd : Solution list -> int<MeasureProduct<iteration, MeasureOne>> -> OptimStopReason
propose : Point -> Point
probability : 'a -> float<MeasureProduct<-logL, MeasureOne>> -> float<MeasureOne>
random : Random
f : Objective
temperature : 'a
arg7 : float<MeasureProduct<-logL, MeasureOne>>
arg8 : Point
Returns: Solution list

simulatedAnnealing scale settings annealEnd machine jump cool random writeOut domain f

Full Usage: simulatedAnnealing scale settings annealEnd machine jump cool random writeOut domain f

Parameters:
Returns: (float<MeasureProduct<-logL, MeasureOne>> * Point) list
scale : float<MeasureProduct<optim-space, MeasureOne>>
settings : AnnealSettings
annealEnd : 'a
machine : float -> float<MeasureProduct<-logL, MeasureOne>> -> float
jump : Random -> float<MeasureProduct<optim-space, MeasureOne>> -> float -> unit -> float<MeasureProduct<optim-space, MeasureOne>>
cool : float -> float -> int -> float
random : Random
writeOut : LogEvent -> unit
domain : Domain
f : TypedTensor<Vector, MeasureProduct<optim-space, MeasureOne>> -> TypedTensor<Scalar, MeasureProduct<-logL, MeasureOne>>
Returns: (float<MeasureProduct<-logL, MeasureOne>> * Point) list

tryMove propose probability random f tries (l1, theta1)

Full Usage: tryMove propose probability random f tries (l1, theta1)

Parameters:
Returns: Solution option

Jump based on a proposal function and probability function

propose : Point -> Point
probability : float<MeasureProduct<-logL, MeasureOne>> -> float<MeasureOne>
random : Random
f : Objective
tries : int
l1 : float<MeasureProduct<-logL, MeasureOne>>
theta1 : Point
Returns: Solution option

Type something to start searching.