class_docstr: A bracket in Hyperband, all the information of a bracket is managed by an instance of this class
  
  Parameters
  ----------
  bracket_id: string
      The id of this bracket, usually be set as '{Hyperband index}-{SH iteration index}'
  s: int
      The current SH iteration index.
  s_max: int
      total number of SH iterations
  eta: float
      In each iteration, a complete run of sequential halving is executed. In it,
              after evaluating each configuration on the same subset size, only a fraction of
              1/eta of them 'advances' to the next round.
  R:
      the budget associated with each stage
  optimize_mode: str
      optimize mode, 'maximize' or 'minimize'
code: def __init__(self, bracket_id, s, s_max, eta, R, optimize_mode):
      self.bracket_id = bracket_id
      self.s = s
      self.s_max = s_max
      self.eta = eta
      self.n = math.ceil((s_max + 1) * (eta**s) / (s + 1) - _epsilon)
      self.r = R / eta**s
      self.i = 0
      self.hyper_configs = []  # [ {id: params}, {}, ... ]
      self.configs_perf = []  # [ {id: [seq, acc]}, {}, ... ]
      self.num_configs_to_run = []  # [ n, n, n, ... ]
      self.num_finished_configs = []  # [ n, n, n, ... ]
      self.optimize_mode = OptimizeMode(optimize_mode)
      self.no_more_trial = False
  
imports: import copy
  import logging
  import math
  import sys
  import numpy
  from schema import Schema, Optional
  import nni
  from nni import ClassArgsValidator
  from nni.common.hpo_utils import validate_search_space
  from nni.runtime.common import multi_phase_enabled
  from nni.runtime.msg_dispatcher_base import MsgDispatcherBase
  from nni.runtime.tuner_command_channel import CommandType
  from nni.utils import NodeType, OptimizeMode, MetricType, extract_scalar_reward
  from nni import parameter_expressions
label_desc: Use image node_id 1 to create a new Bracket object  with example: obj = Bracket(bracket_id, s, s_max, eta, R, optimize_mode)