6.2.4.3. Exit Conditions

Exit conditions will stop all optimizers and cause ParAMS to exit when they are triggered.

Exit conditions follow the general pattern.

Tip

ExitConditions are different from Stoppers. To understand the difference between them, see the Difference Between Stoppers and ExitConditions.

You can include multiple ExitCondition blocks, and combine them using logical operators with the ExitConditionBooleanCombination key:

ExitConditionBooleanCombination
Type:

String

GUI name:

Combine exit conditions

Description:

If multiple ExitConditions are used, this key indicates how their evaluations relate to one another. Use an integer to refer to a exit condition (defined by order in input file). Recognizes the symbols: ( ) & | E.g. (1 & 2) | 3. Defaults to an OR combination of all selected exit conditions.

For example, to run the optimization for at least one hour, and end when 20 optimizers have been stopped or 1 has converged:

ExitCondition
    Type TimeLimit
    TimeLimit 3600
End
ExitCondition
    Type MaxOptimizersStopped
    MaxOptimizersStopped 20
End
ExitCondition
    Type MaxOptimizersConverged
    MaxOptimizersConverged 1
End
ExitConditionBooleanCombination 1 & (2 | 3)

The following exit conditions are available:

MaxOptimizersConverged

Shutdown when optimizers have converged via their own internal conditions.

MaxOptimizersStarted

Shutdown after a certain number of optimizers have been spawned.

MaxOptimizersStopped

Shutdown when the Optimizer Stoppers configuration has resulted in a number of optimizers being stopped.

MaxTotalFunctionCalls

Stop the optimization after a certain number of loss function evaluations.

StopsAfterConvergence

Stop when some optimizers have converged and others have been stopped.

TargetFunctionValue

Shutdown when a small enough loss function value is found.

TimeLimit

Limit the optimization walltime.

TimeLimitThroughRestarts

Limit the total cumulative walltime across multiple restarts of the optimization.

6.2.4.3.1. MaxOptimizersConverged

Exit after a certain number of optimizers have converged due to their own internal convergence conditions. In other words, optimizers which have been stopped by a Stopper are not counted.

Intention

Input Block

“Exit when we have found ten
good solutions.”
ExitCondition
    Type MaxOptimizersConverged
    MaxOptimizersConverged 10
End
ExitCondition
MaxOptimizersConverged
Type:

Integer

Description:

Return True after n optimizers have converged normally. An optimizer that has ‘converged’ is distinct from an optimizer that was shutdown via the Stopper settings (i.e. ‘stopped’).

6.2.4.3.2. MaxOptimizersStarted

Exit after a certain number of optimizers have been spawned.

Warning

This condition is mainly intended for use with other conditions. It will trigger as soon as the nth optimizer is started. In other words, if this condition is used alone then the new optimizer will not be given time to evaluate at all.

Intention

Input Block

“Exit after starting at least
four optimizers.”
ExitCondition
    Type MaxOptimizersStarted
    MaxOptimizersStarted 4
End
ExitCondition
MaxOptimizersStarted
Type:

Integer

Description:

Return True after n optimizers have been started. Note, this is best used in combination with other conditions because it will stop the optimization as soon as the correct number have been started and not allow newly spawned optimizer to iterate at all.

6.2.4.3.3. MaxOptimizersStopped

Exit after a certain number of optimizers have been stopped by the Stopper. In other words, optimizers which have converged naturally are not counted.

Intention

Input Block

“Exit when five optimizers
have been stopped.”
ExitCondition
    Type MaxOptimizersStopped
    MaxOptimizersStopped 5
End
ExitCondition
MaxOptimizersStopped
Type:

Integer

Description:

Return True after n optimizers have been stopped. An optimizer that has been ‘stopped’ is distinct from an optimizer that stopped due to its internal convergence conditions (i.e., ‘converged’).

6.2.4.3.4. MaxTotalFunctionCalls

Exit the optimization after all optimizers combined have evaluated the loss function a certain number of times. This is distinct from the similar Stopper MaxFunctionCalls. ParAMS Graphs always show the global evaluation number, so the number seen there will match the number used in this condition.

Intention

Input Block

“Exit after evaluating the loss
function 10000 times.”
ExitCondition
    Type MaxTotalFunctionCalls
    MaxTotalFunctionCalls 10000
End
ExitCondition
MaxTotalFunctionCalls
Type:

Integer

Description:

Return True after n function calls have been executed.

6.2.4.3.5. StopsAfterConvergence

First waits for a certain number of optimizers to converge, and then waits for a number of optimizers to be stopped after this. In other words, this is not the same as combining the MaxOptimizersConverged and MaxOptimizersStopped conditions, since this condition counts events sequentially.

Intention

Input Block

“Exit when we have found at least one
good solution, and five other optimizers
are unable to improve on it.”
ExitCondition
    Type StopsAfterConvergence
    StopsAfterConvergence
        OptimizersConverged 1
        OptimizersStopped 5
    End
End
ExitCondition
StopsAfterConvergence
Type:

Block

GUI name:

Max stops after n converged:

Description:

Returns True when at least n_a optimizers have been stopped *after* n_b optimizers have converged.

OptimizersConverged
Type:

Integer

Default value:

1

GUI name:

Min # converged:

Description:

Minimum number of converged optimizers.

OptimizersStopped
Type:

Integer

Default value:

0

GUI name:

Max # stopped:

Description:

Maximum number of stopped optimizers.

6.2.4.3.6. TargetFunctionValue

Exit when any optimizer finds a loss function value below the target value. Useful if you have an understanding of the problem and do not want optimizers spending a long time overfitting.

Intention

Input Block

“Exit when an optimizer decreases
the loss past 100.”
ExitCondition
    Type TargetFunctionValue
    TargetFunctionValue 100
End
ExitCondition
TargetFunctionValue
Type:

Float

Description:

Return True after an optimizer finds a function value less than or equal to n.

6.2.4.3.7. TimeLimit

Exit after the optimization has been running for a certain amount of time.

Intention

Input Block

“Exit after 1 hour.”
ExitCondition
    Type TimeLimit
    TimeLimit 3600  # Expects seconds
End
ExitCondition
TimeLimit
Type:

Float

Unit:

s

Description:

Return True after the entire optimization has been running for n seconds. Note, this is NOT the time for any particular optimizer. See also: Time Limit Through Restarts

6.2.4.3.8. TimeLimitThroughRestarts

For almost all scenarios TimeLimit is the appropriate exit condition to use to end optimizations based on the amount of time used. In some cases, if checkpointing is being used and an optimization has been restarted, you may want to limit the cumulative amount of time used. In other words, the amount of time saved in the checkpoint and the time used in the resumed optimization. The TimeLimitThroughRestarts condition exists for this purpose.

The TimeLimit exit condition measures only the uninterrupted time for a single continuous optimization session.

Intention

Input Block

“Exit after 1 hour, including the
time used in the checkpoint I am
loading from.”
ExitCondition
    Type TimeLimitThroughRestarts
    TimeLimitThroughRestarts 3600  # Expects seconds
End
ExitCondition
TimeLimitThroughRestarts
Type:

Float

Unit:

s

Description:

Return True after the sum-total of all optimization runs (i.e., through all restarts) has been running for n seconds. Note, this is NOT the time for any particular optimizer. See also: Time Limit