To produce a set of heuristics, a Genetic Programming hyper-heuristic is used as training algorithm (see Algorithm 3). Introduced by Koza [60], Genetic Programming makes use of a tree-based encoding representation and was initially designed to evolve functions and programs. Terminal set and Function set are very important components of GPs. They are nodes and leaves of each solution represented as a syntax tree. The concept behind GP hyper-heuristic is similar to a machine learning model. To obtain a final population of heuristics with high abilities of approximation, the algorithm learns from a set of various instances, i.e., the training set and validates theheuristics on a test set. In this work, we also rely on an approach in which training and optimization are done simultaneously because the optimal solutions are unknown.