## 3 Relevant Research in Wind Farm Design and Optimization
### Solution Methods
#### 3.3.3 Metaheuristic Optimization  
For some problems, there are known heuristic algorithms which are practically useful, but for many problems the best-known heuristic algorithms have running times too large to be of practical use, despite the fact that they might have polynomial time execution. To overcome this issue, more complex and _intelligent_ heuristics have been developed and are commonly referred as metaheuristics and hyper-heuristics [327]. Metaheuristics are high level procedures designed to find near optimal solutions more efficiently than common heuristics. Hyper-heuristics are higher level procedures designed to find or generate a lower-level procedure that may provide a near-optimal solution to a complex problem. Metaheuristics are commonly based on optimization processes observed in the nature (e.g., Simulated Annealing (SA) [338, 339, 340, 341, 342, 343, 344], Particle Swarm Optimization (PSO) [345, 327, 346, 347, 348], Genetic Algorithm (GA) [346, 347, 348, 348], _etc._). Some of the multiple remarkable aspects of metaheuristics are that they make only a few assumptions about the function being extremized, they are relatively easy to implement, and do not require the objective function to be continuous or differentiable. Even though, metaheuristics are designed to be problem-independent, some problems that are successfully solved by one metaheuristic algorithm may not be solved when using another metaheuristic algorithm (_i.e._, metaheuristics are not universal and are subject to the NFLT). In addition, they may require more elementary operations to perform the optimization tasks compared with simple heuristics or calculus-based algorithms. In this regard, the decision of using a metaheuristic algorithm must be based on the problem complexity rather than in its implementation easiness, since for some problems calculus-based algorithms can outperform heuristics and metaheuristics. Metaheuristics are classified in three different groups: constructive-based, local search-based, and population-based metaheuristics. Constructive metaheuristics are based on a set of heuristics to build a feasible solution. The Greedy Randomized Adaptive Search Procedure (GRASP) [349, 327] is considered one of the most powerful constructive metaheuristics and consists of two phases: (1) an iterative procedure made up from a greedy randomized construction (_i.e._, a semi-greedy heuristic) and (2) a local search iterative procedure, which may be a calculus-based local search procedure or a heuristic/metaheuristic-based local search procedure, that improves the previously constructed solution. [PERSON] and [PERSON] [265] implemented a GRASP algorithm complemented with a Variable Neighborhood Search (VNS) metaheuristic algorithm and showed improved results when comparing them with the results of [PERSON] _et al._[28] and [PERSON] _et al._[232], who employed a genetic algorithm to optimize wind farms under simplified conditions. However, the shortcomings of the proposed GRASP procedure, and other procedures as well, are the need to discretize the search space to define the possible locations of the WTs integrating the wind farm, and the fact that the inclusion of additional variables is not straightforward, requiring a complete reformulation of the state/solution representation. Local search metaheuristics are based on the fundamental idea in which feasible solutions of similar quality are related. The hope is that if a solution has good quality, then a related solution will also be good (and possible better). The notion of two solutions being related is handled differently in different local search-based algorithms. Local search procedures iteratively modify the value of the design variables, by performing deterministic or non-deterministic actions, resulting in neighbor solutions. The algorithm selects the best neighbor solution at each iteration and repeats the process until no better solutions are found in the neighborhood.