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)