Generation-level parallelism for evolutionary computation: a pipeline-based parallel particle swarm optimization