A Blind Source Separation Algorithm Based on Dynamic Niching Particle Swarm Optimization