class_docstr: A PPA class, inherited from Optimizer.
  
  This is the designed class to define PPA-related
  variables and methods.
  
  References:
      A. Mohamed et al. Parasitism – Predation algorithm (PPA): A novel approach for feature selection.
      Ain Shams Engineering Journal (2020).
class_docstr_tok: ["A","PPA","class",",","inherited","from","Optimizer",".","This","is","the","designed","class","to","define","PPA-related","variables","and","methods",".","References",":","A.","Mohamed","et","al",".","Parasitism","\u2013","Predation","algorithm","(","PPA",")",":","A","novel","approach","for","feature","selection",".","Ain","Shams","Engineering","Journal","(","2020",")","."]
docstr: Wraps Parasitism-Predation Algorithm over all agents and variables.
  
  Args:
      space: Space containing agents and update-related information.
      iteration: Current iteration.
      n_iterations: Maximum number of iterations.
docstr_tok: ["Wraps","Parasitism-Predation","Algorithm","over","all","agents","and","variables",".","Args",":","space",":","Space","containing","agents","and","update-related","information",".","iteration",":","Current","iteration",".","n_iterations",":","Maximum","number","of","iterations","."]
code: def update(
      self, space: Space, iteration: int, n_iterations: int
  ) -> None:
      """Wraps Parasitism-Predation Algorithm over all agents and variables.
  
      Args:
          space: Space containing agents and update-related information.
          iteration: Current iteration.
          n_iterations: Maximum number of iterations.
  
      """
  
      n_crows, n_cats, n_cuckoos = self._calculate_population(
          space.n_agents, iteration, n_iterations
      )
  
      self._nesting_phase(space, n_crows)
      self._parasitism_phase(
          space, n_crows, n_cuckoos, iteration, n_iterations
      )
      self._predation_phase(
          space, n_crows, n_cuckoos, n_cats, iteration, n_iterations
      )
  
imports: from typing import Any, Dict, Optional, Tuple
  import numpy
  import opytimizer.math.distribution
  import opytimizer.math.general
  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 9 for calling the PPA obj's underlying member method code with example usage: obj.update(space, iteration, n_iterations) without return types