class_docstr: Class for Tree search based optimisation. 
docstr: Runs DOO optimisation. 
docstr_tok: ["Runs","DOO","optimisation","."]
code: def run_DOO(self, budget, nu, rho):
      """Runs DOO optimisation."""
      leaf_Q = Qu.PriorityQueue()
      d = self.doo_obj.domain_dim
      cell = tuple([tuple([0, 1]) for _ in range(d)])
      height = 0
      cost = 0
      current, c = self.querie(cell, height, rho, nu, 0)
      cost = cost + c
      leaf_Q.put(current)
      dict_of_points = {}
      while cost <= budget:
          current = leaf_Q.get()
          dict_of_points[current.cell] = {
              "val": current.value,
              "fidel": current.fidelity,
              "height": current.height,
          }
          children, curr_cost = self.split_children(current, rho, nu)
          if current.cell == children[0].cell:
              break
          cost = cost + curr_cost
          for child in children:
              leaf_Q.put(child)
      while not leaf_Q.empty():
          c = leaf_Q.get()
          dict_of_points[c.cell] = {
              "val": c.value,
              "fidel": c.fidelity,
              "height": c.height,
          }
  
      # maxi = float(-sys.maxint - 1)
      maxi = float("-inf")
      point = 0
      maxh = 0
      val = 0
      fidel = 0
      for key in dict_of_points:
          c = dict_of_points[key]
          if (
              c["val"] - self.C * (1.0 - c["fidel"]) > maxi
          ):  # - nu*(rho**c.height) > maxi:
              maxi = c["val"] - self.C * (
                  1.0 - c["fidel"]
              )  # - nu*(rho**c.height)
              val = c["val"]
              fidel = c["fidel"]
              point = np.array([(s[0] + s[1]) / 2 for s in key])
              maxh = c["height"]
  
      return val, fidel, point, cost, maxh
  
imports: from __future__ import division
  from functools import total_ordering
  from argparse import Namespace
  import numpy
  from .general_utils import map_to_bounds
label_desc: Use image node_id 6 for calling the OptTree obj's underlying member method code with example usage: obj.run_DOO(budget, nu, rho) and returns: val,  fidel,  point,  cost,  maxh