This is the formula for the velocity update in PSO:
In simplified terms:
velocity(n+1) = momentum_component + cognitive_component + social_component
Now according to the formula the social and cognitive component have the same weight to the resulting velocity. So if the cognitive component vector would point into the opposite direction of the social component vector, then the particle would keep moving back and forth between the two directions and never converge.
However when running the basic PSO particles seem to always converge to the global best as if the social component is overpowering the cognitive component. How is this possible?