CoolingScheduleSpec

@Serializable
sealed class CoolingScheduleSpec(source)

Cooling-schedule selection for a simulated-annealing solver.

Mirrors the three ksl.simopt.solvers.algorithms.CoolingScheduleIfc implementations: linear, exponential, and logarithmic cooling.

The initialTemperature field on each variant is the temperature at iteration 0; for an Exponential schedule the temperature at iteration i is initialTemperature * coolingRate^i.

Inheritors

Constructors

Link copied to clipboard
protected constructor()

Types

Link copied to clipboard
@Serializable
@SerialName(value = "exponential")
data class Exponential(val initialTemperature: Double, val coolingRate: Double = 0.95) : CoolingScheduleSpec

Geometric cooling: temperature at iteration i is initialTemperature * coolingRate^i.

Link copied to clipboard
@Serializable
@SerialName(value = "linear")
data class Linear(val initialTemperature: Double, val stoppingTemperature: Double, val maxIterations: Int) : CoolingScheduleSpec

Linear cooling between initialTemperature and stoppingTemperature over maxIterations iterations.

Link copied to clipboard
@Serializable
@SerialName(value = "logarithmic")
data class Logarithmic(val initialTemperature: Double) : CoolingScheduleSpec

Logarithmic cooling; very slow but with theoretical convergence guarantees.