docstr: Apply the selected strategy to the position-matrix given the bounds
  
  Parameters
  ----------
  position : numpy.ndarray
      The swarm position to be handled
  bounds : tuple of numpy.ndarray or list
      a tuple of size 2 where the first entry is the minimum bound while
      the second entry is the maximum bound. Each array must be of shape
      :code:`(dimensions,)`
  kwargs : dict
  
  Returns
  -------
  numpy.ndarray
      the adjusted positions of the swarm
docstr_tok: ["Apply","the","selected","strategy","to","the","position-matrix","given","the","bounds","Parameters","--","--","--","--","--","position",":","numpy.ndarray","The","swarm","position","to","be","handled","bounds",":","tuple","of","numpy.ndarray","or","list","a","tuple","of","size","2","where","the","first","entry","is","the","minimum","bound","while","the","second","entry","is","the","maximum","bound",".","Each","array","must","be","of","shape",":","code",":","`","(","dimensions",",",")","`","kwargs",":","dict","Returns","--","--","--","-","numpy.ndarray","the","adjusted","positions","of","the","swarm"]
code: def __call__(self, position, bounds, **kwargs):
      """Apply the selected strategy to the position-matrix given the bounds
  
      Parameters
      ----------
      position : numpy.ndarray
          The swarm position to be handled
      bounds : tuple of numpy.ndarray or list
          a tuple of size 2 where the first entry is the minimum bound while
          the second entry is the maximum bound. Each array must be of shape
          :code:`(dimensions,)`
      kwargs : dict
  
      Returns
      -------
      numpy.ndarray
          the adjusted positions of the swarm
      """
      try:
          new_position = self.strategies[self.strategy](
              position, bounds, **kwargs
          )
      except KeyError:
          message = (
              "Unrecognized strategy: {}. Choose one among: "
              + str([strat for strat in self.strategies.keys()])
          )
          self.rep.logger.exception(message.format(self.strategy))
          raise
      else:
          return new_position
  
imports: import inspect
  import logging
  import numpy
  import math
  from copy import copy
  from ..utils.reporter import Reporter
label_desc: Use image node_id 2 for calling the BoundaryHandler obj's underlying member method code with example usage: obj.__call__(position, bounds) and returns: new_position