Autonomous task allocation by artificial evolution for robotic swarms in complex tasks