code: def setup(self, s):
      # Follow the hyperband paper, set up internal variables based on s_max
      self.s = s
      self.n = int(
          ceil(self.B / self.max_iter / (s + 1) * self.eta**s)
      )
      self.r = self.max_iter * self.eta ** (-s)
      gen_config = self.config.copy()
      gen_config["n_samples"] = self.n
      gen_config["random_seed"] = random.randint(0, 100)
      gen_config["proposer"] = gen_config["engine"]
      proposer = get_proposer(gen_config["proposer"])(gen_config)
      self.test_set = [proposer.get for _ in range(self.n)]
      self.t = 0
      self.i = 0
      self.n_configs = self.n * self.eta ** (-self.i)
      self.n_iterations = self.r * self.eta**self.i
  
file_path: auptimizer/src/aup/Proposer/HyperbandProposer.py
imports: import logging
  import random
  from math import log, ceil
  from six.moves import input
  from aup.Proposer import get_proposer
  from .AbstractProposer import AbstractProposer
  from ..utils import set_default_keyvalue, get_from_options
label_desc: Use image node_id 2 for calling the HyperbandProposer obj's underlying member method code with example usage: obj.setup(s) without return types