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: Updates the agent's position using a local movement (eq. 3).
  
  Args:
      agent_positio: Agent's current position.
      j_positio: Agent `j` current position.
      k_positio: Agent `k` current position.
      fragrance: Agent's current fragrance value.
      random: A random number between 0 and 1.
  
  Returns:
      (np.ndarray): A new position based on local movement.
docstr_tok: ["Updates","the","agent","'s","position","using","a","local","movement","(","eq",".","3",")",".","Args",":","agent_positio",":","Agent","'s","current","position",".","j_positio",":","Agent","`","j","`","current","position",".","k_positio",":","Agent","`","k","`","current","position",".","fragrance",":","Agent","'s","current","fragrance","value",".","random",":","A","random","number","between","0","and","1",".","Returns",":","(","np.ndarray",")",":","A","new","position","based","on","local","movement","."]
code: def _local_movement(
      self,
      agent_position: np.ndarray,
      j_position: np.ndarray,
      k_position: np.ndarray,
      fragrance: np.ndarray,
      random: float,
  ) -> np.ndarray:
      """Updates the agent's position using a local movement (eq. 3).
  
      Args:
          agent_positio: Agent's current position.
          j_positio: Agent `j` current position.
          k_positio: Agent `k` current position.
          fragrance: Agent's current fragrance value.
          random: A random number between 0 and 1.
  
      Returns:
          (np.ndarray): A new position based on local movement.
  
      """
  
      new_position = (
          agent_position
          + (random**2 * j_position - k_position) * fragrance
      )
  
      return new_position
  
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 12 for calling the BOA obj's underlying member method code with example usage: obj._local_movement(agent_position, j_position, k_position, fragrance, random) and returns: new_position