Application of particle swarm optimization on self-potential data