Struct SimulatedAnnealingSettings

template<class Point>
struct SimulatedAnnealingSettings

Configuration parameters for the simulated annealing algorithm Contains all tunable parameters for controlling the optimization process, including convergence criteria, temperature schedule, and random walk settings.

Template Parameters:

Point – Point type representing vectors in the optimization space

Public Types

typedef Point::FT NT

Numeric type.

Public Functions

inline SimulatedAnnealingSettings(NT error_ = NT(1e-6), int walkLength_ = 3, int maxSteps_ = 5000, NT decFactor_ = NT(0.98), NT tempMinRatio_ = NT(1e-8), bool usePolynomialSchedule_ = true, NT polynomialK_ = NT(0.5), bool enableEarlyConvergence_ = true, int convergenceWindow_ = 20)

Construct settings with default or custom parameters Validates all parameters and throws exceptions if constraints are violated.

Parameters:
  • error_[in] Convergence tolerance (must be > 0)

  • walkLength_[in] HMC walk length per iteration (must be > 0)

  • maxSteps_[in] Maximum optimization steps (must be > 0)

  • decFactor_[in] Exponential decay factor (must be in (0,1))

  • tempMinRatio_[in] Minimum temperature ratio (must be > 0)

  • usePolynomialSchedule_[in] Enable polynomial cooling schedule

  • polynomialK_[in] Polynomial schedule parameter (must be > 0)

  • enableEarlyConvergence_[in] Enable early stopping based on convergence

  • convergenceWindow_[in] Sliding window size for convergence detection

Throws:

std::invalid_argument – if any parameter violates its constraints

Public Members

NT error

Desired accuracy threshold for convergence (relative error tolerance)

int walkLength

Number of steps taken in each HMC random walk iteration.

int maxSteps

Maximum number of optimization steps before termination.

NT decFactor

Temperature decay factor for exponential cooling schedule (must be in (0,1))

NT tempMinRatio

Ratio of minimum temperature to initial temperature (T_min = T_0 * tempMinRatio)

bool usePolynomialSchedule

If true, use polynomial cooling schedule; otherwise use exponential schedule.

NT polynomialK

Parameter k for polynomial schedule: alpha = 1 - 1/(d*k) where d is dimension.

bool enableEarlyConvergence

If true, check for early convergence using sliding window analysis.

int convergenceWindow

Size of sliding window for tracking convergence (number of recent values to track)