Runner extras#

Stopping Criteria#

Runners allow you to specify the stopping criterion by providing a goal as a function that takes the learner and returns a boolean: False for “continue running” and True for “stop”. This gives you a lot of flexibility for defining your own stopping conditions, however we also provide some common stopping conditions as a convenience.

adaptive.runner.stop_after(*, seconds=0, minutes=0, hours=0)[source]#

Stop a runner after a specified time.

For example, to specify a runner that should stop after 5 minutes, one could do the following:

>>> runner = Runner(learner, goal=stop_after(minutes=5))

To stop a runner after 2 hours, 10 minutes and 3 seconds, one could do the following:

>>> runner = Runner(learner, goal=stop_after(hours=2, minutes=10, seconds=3))
Parameters
  • seconds (float, default: 0) – If more than one is specified, then they are added together

  • minutes (float, default: 0) – If more than one is specified, then they are added together

  • hours (float, default: 0) – If more than one is specified, then they are added together

Returns

goal – Can be used as the goal parameter when constructing a Runner.

Return type

callable

Notes

The duration specified is only a lower bound on the time that the runner will run for, because the runner only checks its goal when it adds points to its learner

Simple executor#

adaptive.runner.simple(learner, goal)[source]#

Run the learner until the goal is reached.

Requests a single point from the learner, evaluates the function to be learned, and adds the point to the learner, until the goal is reached, blocking the current thread.

This function is useful for extracting error messages, as the learner’s function is evaluated in the same thread, meaning that exceptions can simple be caught an inspected.

Parameters
  • learner (BaseLearner` instance) –

  • goal (callable) – The end condition for the calculation. This function must take the learner as its sole argument, and return True if we should stop.

Sequential excecutor#

class adaptive.runner.SequentialExecutor[source]#

A trivial executor that runs functions synchronously.

This executor is mainly for testing.

Replay log#

adaptive.runner.replay_log(learner, log)[source]#

Apply a sequence of method calls to a learner.

This is useful for debugging runners.

Parameters
  • learner (BaseLearner instance) – New learner where the log will be applied.

  • log (list) – contains tuples: (method_name, *args).