## 2 Background  
Heuristics and metaheuristics are essential in tackling complex optimization problems, particularly when exact models, such as branch-and-bound, integer programming, or dynamic programming, become computationally costly. While exact approaches are ideal in theory for delivering optimal solutions, they often break down in practice when confronted with large-scale combinatorial problems, dynamic inputs, or high numbers of constraints [6]. In such settings, heuristics, like the nearest neighbor algorithm for the traveling salesman problem or a greedy selection rule in scheduling, provide fast, domain-specific strategies to deliver good enough solutions with minimal computational cost. When the problem is particularly complex (NP-complete or NP-hard) or has multiple objectives, uncertainty, or the need for global exploration, metaheuristics are used to enhance search performance and solution quality. These include widely used methods such as genetic algorithms for feature selection, simulated annealing for job shop scheduling, and particle swarm optimization for hyper-parameter tuning. Metaheuristics offer a more flexible and powerful alternative to simple heuristics, but they still require problem-specific encoding, parameter tuning, and often manual intervention, which limits their scalability across domains. Metaheuristic algorithms represent an advancement over classical heuristics, prioritizing deep exploration of the solution space. They often integrate sophisticated neighborhood search rules and solution recombination techniques [7]. While metaheuristics typically yield higher-quality solutions than classical heuristics, this improvement often comes at the expense of increased computational cost. A key limitation of metaheuristics is their context-dependent nature and reliance on finely tuned parameters, which can hinder their generalizability to different problems. This limitation underscores the motivation for higher-level optimization approaches like hyper-heuristics. Hyper-heuristic algorithms address the need for generalization and adaptability, especially when solving multiple instances of a problem class or operating in changing environments. Unlike metaheuristics, which directly search the solution space, hyper-heuristics operate by selecting or generating heuristics or metaheuristics to solve the problem. These approaches are particularly effective in domains like cloud resource management, educational timetabling, or software testing, where problem characteristics vary significantly over time or across institutions (see Section 5). By abstracting away from domain-specific algorithm design, hyper-heuristics enable the development of more adaptive, reusable, and scalable optimization frameworks. Hyper-heuristics offer a higher-level abstraction for search and optimization than metaheuristics. Instead of operating directly on candidate solutions, hyper-heuristics manage a set of low-level heuristics (which can include metaheuristics). They are intended to select or generate the most appropriate heuristics for a given problem instance. Figure 1 shows the initial classification of hyper-heuristics based on their nature, resulting in four distinct categories: constructive selection, perturbative selection, constructive generation, and perturbative generation [8]. Constructive hyper-heuristics iteratively build solutions from scratch, while perturbative hyper-heuristics refine existing solutions. Generative hyper-heuristics represent a more advanced paradigm, automatically creating new heuristics from components of existing ones. The integration of machine learning within hyper-heuristics is a significant and rapidly evolving area. This integration allows hyper-heuristics to learn from past experiences and adapt their behavior accordingly. Based on the timing of the learning process, hyper-heuristics are categorized into online and offline learning approaches.