An optimal spectrum-balancing algorithm for digital subscriber lines based on particle swarm optimization