The donut problem: scalability, generalization and breeding policies in genetic programming