Advanced techniques for improving canonical genetic programming