add particle swarm optimization