Difference Between Stoppers and ExitConditions

Stoppers and ExitConditions are small logic checks related to the termination of an optimization. They behave similarly but have different purposes and should not be confused.



What does it do?

Stops the entire optimization.

Stops one running optimizer.

What happens once triggered?

The job ends.

Other optimizers are unaffected
and keep running. If possible,
a new optimizer will be started
to replace the stopped one.

When is it evaluated?

Approximately every 10 function
evaluations or more frequently.

This is controlled by the
CheckStopperInterval key.

Am I required to use one?



What is checked?

Generally, global properties
like total time used, or total
function calls made by all

Generally, optimizer specific
properties. Comparisons are often
made between one optimizer and
the best optimizer.

Easy to setup?

Yes. Generally determined by
resource limitations (like time),
or specific goals (like getting
a certain number of results.

Generally, trickier to setup.
Requires problem-specific
information and a good guess
of how optimizers will behave
on the problem.

Good to know?


By default, wont trigger for the
best optimizer unless
ApplyStoppersToBestOptimizer Yes
is used. A note on combinations

You may use multiple Stoppers or ExitConditions in a single optimization. If there is more than one specified then by default the stop or exit will be triggered if any of them are triggered. You can tailor exactly how to evaluate multiple Stoppers or ExitConditions by specifying the StopperBooleanCombination and ExitConditionBooleanCombination keys respectively (Optimizer Stoppers or Exit Conditions for details).

When multiple conditions are used, then are evaluated lazily:

  • Given x | y, if x is True then y is not evaluated.

  • Given x & y, if x is False then y is not evaluated.