Particle swarm optimization (PSO) that supports constraints