simulated_annealing library

Simulated Annealing framework for Dart.

Classes

DataLog<T extends Object>
A storage that can be used to log data of type T. Each log record is accessed using a unique String key.
EnergyField
Class representing the system energy and the domain over which it is defined (the search space).
FixedInterval
A fixed numerical interval defined by the start point start and the end point end.
Interval
Abstract class representing a numerical interval.
InverseCdfs
LoggingSimulator
Annealing simulator capable of logging variables via an object of type DataLog.
ParametricInterval
A numerical interval defined by the parametric start point function startFunc and the end point endFunc.
PeriodicInterval
An interval that wraps around itself.
SearchSpace
A search space defined by several by a list of Intervals.
Simulator
Annealing simulator
SingularInterval
A fixed numerical interval where the start point coincides with the end point.

Extensions

Export on DataLog<num>
Records data of type num and List<num>.
RandomInRange on Random
Extension on Random providing the methods nextInRange and nextIntFromList.

Constants

oneThird → const double

Functions

defaultPerturbationSequence(List<num> temperatures, List<num> deltaPositionMax, List<num> deltaPositionMin) List<List<num>>
Returns a sequence of perturbation magnitude vectors by interpolating between deltPositionMax and deltaPositionMin.
exponentialSequence(num tStart, num tEnd, {int iterations = 1000}) List<num>
Exponentially decreasing sequence with start value tStart and end value tEnd.
geometricSequence(num tStart, num tEnd, {int iterations = 1000}) List<num>
Returns a geometric sequence with entries:
interpolate<T extends num>(List<num> temperatures, List<T> start, List<T> end) List<List<T>>
Returns a sequence of vectors by interpolating between start and end.
linearSequence(num tStart, num tEnd, {int iterations = 1000}) List<num>
Linear temperature sequence with entries:
lundySequence(num tStart, num tEnd, {int iterations = 1000}) List<num>
Returns the sequence: tStart, tStart / (1 + beta * tStart), ..., tStart / (1 * (n-1) * beta * tStart) where beta = (1 / tEnd - 1 / tStart) / (n - 1).
markovChainLength(num temperature, {required num tStart, required num tEnd, int chainLengthStart = 5, int chainLengthEnd = 20}) int
Returns an integer linearly interpolated between chainLengthStart and chainLengthEnd.
normalSequence(num tStart, num tEnd, {int iterations = 1000}) List<num>
Returns a monotonically decreasing sequence with entries: tStart, ..., tEnd.

Typedefs

Energy = num Function(List<num> x)
Function representing the system energy (cost function).
FunctionalInverseCdf = num Function(num p, num start, num end, {required ProbabilityScale scale})
A generalized inverse cummulative distribution function, where the probability is scaled by a function of typedef ProbabilityScale.
InverseCdf = num Function(num p, num start, num end)
Inverse cummulative distribution function of a probability distribution function with non-zero support over the interval: [start, end). The function must return a numerical value in the interval: [start, end).
MarkovChainLength = int Function(num temperature)
Function returning an integer representing a Markov chain length (the number of simulated annealing iterations performed at constant temperature).
Next = num Function()
ParametricPoint = num Function()
Function defining an interval start/end point.
Perturb = num Function(num position, num deltaPosition)
PerturbationSequence = List<List<num>> Function(List<num> temperatures, List<num> deltaPositionMax, List<num> deltaPositionMin)
Function returning a sequence of pertubation magnitude vectors.
ProbabilityScale = num Function(num p)
A function that scales a probability ( a value between 0 and 1) such that the returned value is also a probability:
TemperatureSequence = List<num> Function(num tStart, num tEnd, {int iterations})