Design evolution of engineering systems using bond graphs and genetic programming