Stopping's attributes ID: StopRemoteControl

Usual instances of AbstractStopping contains a StopRemoteControl <: AbstractStopRemoteControl (stp.stop_remote), which controls the various checks run by the functions start! and stop!. An instance of StopRemoteControl contains:

  • unbounded_and_domain_x_check :: Bool
  • domain_check :: Bool
  • optimality_check :: Bool
  • infeasibility_check :: Bool
  • unbounded_problem_check :: Bool
  • tired_check :: Bool
  • resources_check :: Bool
  • stalled_check :: Bool
  • iteration_check :: Bool
  • main_pb_check :: Bool
  • user_check :: Bool
  • user_start_check :: Bool
  • cheap_check :: Bool

Only the last attributes, cheap_check, is not related with a specific check. Set as true, it stopped whenever one of the checks is successful and the algorithm needs to stop. It is false by default. All the other entries are set as true by default, i.e.

#initializes a remote control with all the checks on.
src = StopRemoteControl()

In order to remove some checks, it suffices to use keywords:

#remove time and iteration checks.
src = StopRemoteControl(tired_check = false, iteration_check = false)

FAQ: Is there performance issues with all these checks?

Assuming that x is a vector of length n, some of these checks are indeed in O(n), which can be undesirable for some applications. In this case, you can either initialize a "cheap" remote control as follows

#initialize a StopRemoteControl with 0(n) checks set as false
src = cheap_stop_remote_control()

or deactivate the tests by hand as shown previously.

FAQ: How can I fine-tune these checks?

All these checks can be fine-tuned by selecting entries in the StoppingMeta.