code: def std_velocity(particle, social, state):
      
      inertia = state.params['inertia']
      c_1, c_2 = state.params['c_1'], state.params['c_2']
      v_max = state.params['v_max']
      size = particle.position.size
  
      c1r1 = __acceleration__(state.rng, c_1, size)
      c2r2 = __acceleration__(state.rng, c_2, size)
  
      velocity = __std_velocity_equation__(inertia, c1r1, c2r2, particle, social)
      return __clamp__(velocity, v_max)
docs: Standard particle velocity update according to the equation:
  
      :math:`v_{ij}(t+1) &= \\omega v_{ij}(t) + \
      c_1 r_{1j}(t)[y_{ij}(t) - x_{ij}(t)]\\:+ \
      c_2 r_{2j}(t)[\\hat{y}_{ij}(t) - x_{ij}(t)],\\;\\;\
      \\forall\\; j \\in\\; \\{1,...,n\\}`
  
      If a v_max parameter is supplied (state.params['v_max'] is not None) the
      returned velocity is clamped to v_max.
  
      Args:
          particle (cipy.algorithms.pso.types.Particle): Particle to update the
              velocity for.
          social (numpy.array): The social best for the
              particle.
          state (cipy.algorithms.pso.types.State): The PSO algorithm state.
  
      Returns:
          numpy.array: The calculated velocity, clamped to state.params['v_max'].