Semantically-based crossover in genetic programming: application to real-valued symbolic regression