class_docstr: A BOA class, inherited from Optimizer.
  
  This is the designed class to define BOA-related
  variables and methods.
  
  References:
      S. Arora and S. Singh. Butterfly optimization algorithm: a novel approach for global optimization.
      Soft Computing (2019).
docstr: Wraps Butterfly Optimization Algorithm over all agents and variables.
  
  Args:
      space: Space containing agents and update-related information.
docstr_tok: ["Wraps","Butterfly","Optimization","Algorithm","over","all","agents","and","variables",".","Args",":","space",":","Space","containing","agents","and","update-related","information","."]
code: def update(self, space: Space) -> None:
      """Wraps Butterfly Optimization Algorithm over all agents and variables.
  
      Args:
          space: Space containing agents and update-related information.
  
      """
  
      for i, agent in enumerate(space.agents):
          # Calculates fragrance for current agent (eq. 1)
          self.fragrance[i] = self.c * agent.fit**self.a
  
      for i, agent in enumerate(space.agents):
          r1 = r.generate_uniform_random_number()
          if r1 < self.p:
              # Moves current agent towards the best one (eq. 2)
              agent.position = self._best_movement(
                  agent.position,
                  space.best_agent.position,
                  self.fragrance[i],
                  r1,
              )
          else:
              j = r.generate_integer_random_number(0, len(space.agents))
              k = r.generate_integer_random_number(
                  0, len(space.agents), exclude_value=j
              )
  
              # Moves current agent using a local movement (eq. 3)
              agent.position = self._local_movement(
                  agent.position,
                  space.agents[j].position,
                  space.agents[k].position,
                  self.fragrance[i],
                  r1,
              )
  
imports: from typing import Any, Dict, Optional
  import numpy
  import opytimizer.math.random
  import opytimizer.utils.exception
  from opytimizer.core import Optimizer
  from opytimizer.core.space import Space
  from opytimizer.utils import logging
label_desc: Use image node_id 13 for calling the BOA obj's underlying member method code with example usage: obj.update(space) without return types