mod cool

module cool

The cooling-schedule trait of the IISE manuscript: Cool : N -> R_>0, non-increasing.

Traits

trait Cooling<T: Float>

A cooling schedule: maps an epoch index to a positive temperature.

The IISE manuscript law L4 requires the schedule to be non-increasing in the epoch counter. Implementors override is_monotone to advertise this property; the conservative default is false.

Functions

fn is_monotone(&self) -> bool

Witnesses L4: returns true iff temperature is non-increasing in epoch. Default true.

fn temperature(&self, epoch: usize) -> T

Returns the temperature at the given epoch.

Structs and Unions

struct LogCool<T: Float>

Boltzmann (logarithmic) cooling: T(k) = T_0 * log(k0) / log(k + k0).

Strictly decreasing for positive T_0 and k0 greater than one because log(k0) is positive and the argument to the outer log strictly grows.

t_init: T

Initial temperature T_0.

k0: T

Logarithmic offset k0 > 1 controlling the decay rate.

Implementations

impl<T: Float> LogCool<T>

Functions

fn new(t_init: T, k0: T) -> Self

Constructs a LogCool schedule. Requires t_init > 0 and k0 > 1.

Traits implemented

impl<T: Float + Send + Sync> Cooling<T> for LogCool<T>
impl<T: Float> sealed::Cooling for LogCool<T>
impl<T: Float + Send + Sync> CertifiedCooling<T> for LogCool<T>
struct ReciprocalCool<T: Float>

Reciprocal cooling: T(k) = T_0 / (k + 1).

The +1 shift avoids a divide-by-zero at k = 0 and keeps the schedule well-defined on N. Strictly decreasing for positive T_0.

t_init: T

Initial temperature T_0 = T(0).

Implementations

impl<T: Float> ReciprocalCool<T>

Functions

fn new(t_init: T) -> Self

Constructs a ReciprocalCool schedule. Requires t_init > 0.

Traits implemented

impl<T: Float + Send + Sync> Cooling<T> for ReciprocalCool<T>
impl<T: Float> sealed::Cooling for ReciprocalCool<T>
impl<T: Float + Send + Sync> CertifiedCooling<T> for ReciprocalCool<T>
struct TsallisCool<T: Float>

Tsallis (GSA) cooling: T(k) = T_0 * (2^(q_v-1) - 1) / ((1+k)^(q_v-1) - 1).

The case q_v == 1 is a zero-over-zero indeterminate form; an explicit branch returns the L’Hopital limit T_0 * ln 2 / ln(1+k) so the schedule remains continuous and finite. Monotone-decreasing for q_v in the open interval (1, 3).

t_init: T

Initial temperature T_0.

q_v: T

Tsallis visiting index. Practical range: (1, 3).

Implementations

impl<T: Float> TsallisCool<T>

Functions

fn new(t_init: T, q_v: T) -> Self

Constructs a TsallisCool schedule. Requires t_init > 0.

Traits implemented

impl<T: Float + Send + Sync> Cooling<T> for TsallisCool<T>
impl<T: Float> sealed::Cooling for TsallisCool<T>
impl<T: Float + Send + Sync> CertifiedCooling<T> for TsallisCool<T>