pybnb.futures

class pybnb.futures.NestedSolver(problem, node_limit=None, time_limit=5, queue_limit=None, track_bound=True, queue_strategy='depth')[source]

A class for creating a nested branch-and-bound solve strategy. An instance of this class (wrapped around a standard problem) can be passed to the solver as the problem argument.

Parameters
  • problem (pybnb.Problem) – An object defining a branch-and-bound problem.

  • node_limit (int, optional) – The same as the standard solver option, but applied to the nested solver to limit the number of nodes to explore when processing a work item. (default: None)

  • time_limit (float, optional) – The same as the standard solver option, but applied to the nested solver to limit the amount of time spent processing a work item. (default: 5)

  • queue_limit (int, optional) – The same as the standard solver option, but applied to the nested solver to limit the size of the queue. (default: None)

  • track_bound (bool, optional) – The same as the standard solver option, but applied to the nested solver control bound tracking. (default: True)

  • queue_strategy (QueueStrategy or tuple) – The same as the standard solver option, but applied to the nested solver to control the queue strategy used when processing a work item. (default: ‘depth’)

objective()[source]

The solver does not call this method when it sees the problem implements a nested solve.

bound()[source]

The solver does not call this method when it sees the problem implements a nested solve.

branch()[source]

The solver does not call this method when it sees the problem implements a nested solve.

sense()[source]

Calls the sense() method on the user-provided problem.

save_state(node)[source]

Calls the save_state() method on the user-provided problem.

load_state(node)[source]

Calls the load_state() method on the user-provided problem and prepares for a nested solve.

notify_solve_begins(comm, worker_comm, convergence_checker)[source]

Calls the notify_solve_begins() method on the user-provided problem and prepares for a solve.

notify_new_best_node(node, current)[source]

Calls the notify_new_best_node() method on the user-provided problem and stores the best node for use in the next nested solve.

notify_solve_finished(comm, worker_comm, results)[source]

Calls the notify_solve_finished() method on the user-provided problem and does some final cleanup.