EndConditions Module
Composable end conditions to specify when optimisation routines should end.
Functions and values
| Function or value |
Description
|
Full Usage:
atIteration iteration arg2 currentIteration
Parameters:
int<MeasureProduct<iteration, MeasureOne>>
arg1 : Solution list
currentIteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
End on or after a minimum number of iterations.
|
Full Usage:
combineAll conditions results iter
Parameters:
EndCondition list
results : Solution list
iter : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
Stop when all conditions have non-continue reasons.
|
Full Usage:
combineAny conditions results iter
Parameters:
EndCondition list
results : Solution list
iter : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
Stop when any condition has a non-continue reason.
|
Full Usage:
stationarySquaredJumpDistance log
Parameters:
LogEvent -> unit
Returns: EndCondition
|
True if there is no significant slope in mean squared jumping distances (MSJD), binned per 200 iterations and a regression of five bins.
|
Full Usage:
stationarySquaredJumpDistance' fixedBin pointsRequired slopeTol log results i
Parameters:
int
pointsRequired : int
slopeTol : float
log : LogEvent -> unit
results : Solution list
i : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
An `EndCondition` that calculates that segregates the most recent n results into five bins, and runs a regression to detect a temporal variation in the mean squared jumping distance (MSJD). The significance of the slope coefficient of a linear regression is assessed to determine if the MSJD is increasing through time for every parameter sequentially: if all p-values are >0.1, then the `EndCondition` is true.
|
Full Usage:
whenAcceptanceRateOutside min max interval intervalsRequired log results iteration
Parameters:
float
max : float
interval : int<MeasureProduct<iteration, MeasureOne>>
intervalsRequired : int<MeasureOne>
log : LogEvent -> unit
results : Solution list
iteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
|
Full Usage:
whenImprovementsMade count interval results iteration
Parameters:
int
interval : int<MeasureProduct<iteration, MeasureOne>>
results : Solution list
iteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
Ends when the overall number of improvements made is greater than `count`.
|
Full Usage:
whenNoBestValueImprovement window results iteration
Parameters:
int<MeasureProduct<iteration, MeasureOne>>
results : Solution list
iteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
Given a list of solutions, which are ordered most recent first, returns `true` if there are at least `window` recent results, and the change within the recent results is no more than `tolerance`.
|
Full Usage:
whenObjectiveFlat interval results iteration
Parameters:
int<MeasureProduct<iteration, MeasureOne>>
results : Solution list
iteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
Ends if the mean change in the objective's value is less than a tolerance of 1e-6.
|
Full Usage:
whenStableAcceptanceRate min max interval intervalsRequired log
Parameters:
float
max : float
interval : int<MeasureProduct<iteration, MeasureOne>>
intervalsRequired : int<MeasureOne>
log : LogEvent -> unit
Returns: EndCondition
|
Stops when acceptance rate is consistently within the defined range. Used to avoid stopping when not mixing.
|
Full Usage:
whenStationary threshold nSteps results iter
Parameters:
float<MeasureProduct<MeasureProduct<optim-space, optim-space>, MeasureOne>>
nSteps : int<MeasureProduct<iteration, MeasureOne>>
results : Solution list
iter : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
Stops when there is a lack of movement, as indicated by squared jump distance below threshold across the last n steps.
|
Full Usage:
whenStuck movementFloor interval results iteration
Parameters:
float<MeasureProduct<-logL, MeasureOne>>
interval : int<MeasureProduct<iteration, MeasureOne>>
results : Solution list
iteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
|
Full Usage:
whenVarianceStabilised window relTol results iteration
Parameters:
int<MeasureProduct<iteration, MeasureOne>>
-
number of recent samples to compare
relTol : float<MeasureOne>
-
relative change threshold (e.g. 0.05 = 5%)
results : Solution list
iteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
A stop condition or Continue.
|
Stop when the rolling variance of the objective stabilises.
|
Full Usage:
whenWorstValuePlateaued window results iteration
Parameters:
int<MeasureProduct<iteration, MeasureOne>>
results : Solution list
iteration : int<MeasureProduct<iteration, MeasureOne>>
Returns: OptimStopReason
|
End when exploration is not detecting any new worse results. For use in heating stages of simulated annealing.
|
bristlecone