Articles | Volume 9, issue 3
https://doi.org/10.5194/wes-9-585-2024
© Author(s) 2024. This work is distributed under the Creative Commons Attribution 4.0 License.
Gradient-based wind farm layout optimization with inclusion and exclusion zones
Download
- Final revised paper (published on 14 Mar 2024)
- Preprint (discussion started on 21 Feb 2023)
Interactive discussion
Status: closed
Comment types: AC – author | RC – referee | CC – community | EC – editor | CEC – chief editor
| : Report abuse
-
RC1: 'Comment on wes-2023-5', Anonymous Referee #1, 07 Apr 2023
- AC2: 'Reply on RC1', Javier Criado Risco, 18 Oct 2023
-
RC2: 'Comment on wes-2023-5', Michael Muskulus, 24 Sep 2023
- AC1: 'Reply on RC2', Javier Criado Risco, 18 Oct 2023
Peer review completion
AR – Author's response | RR – Referee report | ED – Editor decision | EF – Editorial file upload
AR by Javier Criado Risco on behalf of the Authors (18 Nov 2023)
Author's response
Author's tracked changes
EF by Sarah Buchmann (21 Nov 2023)
Manuscript
ED: Referee Nomination & Report Request started (06 Dec 2023) by Michael Muskulus
RR by Anonymous Referee #1 (09 Dec 2023)
ED: Publish as is (08 Jan 2024) by Michael Muskulus
ED: Publish as is (09 Jan 2024) by Paul Veers (Chief editor)
AR by Javier Criado Risco on behalf of the Authors (17 Jan 2024)
Overall Thoughts
Overall, this is a well-formulated paper with clear objectives. The authors propose a method where the boundary constraints in a layout optimization problem are implemented as inequalities for the distance of the turbine to the nearest edge of the boundary polygon. To avoid the issue with these distinct inclusion zones—namely that the initial conditions fix the number of turbines in each zone—the authors propose two methods: (1) relaxing the wind farm boundaries for a certain number of iterations at the beginning of the optimization and (2) greedily placing the turbines in feasible locations (where the AEP of the new turbine is maximized) before starting the optimization. My major comments are about the explanation of the relaxation process in the “Approach 2” and about the comparison of this method to other penalty methods in the literature. Other minor comments about the text are also listed below. I would recommend this paper for publication in Wind Energy Science with these minor revisions.
Major Comments
Penalty methods: The introduction describes how penalty methods have been used to handle boundary constraints in other papers, but the downside is the tunable hyperparameter. Approach 1 for the optimization uses no penalty methods, and the major downside is that the turbines are fixed in their respective inclusion zones after their initial placement. If a penalty parameter were included in Approach 1, wouldn’t the turbines be able to jump between the inclusion zones more easily (as discussed around Line 402), and the algorithm would perform better? I suppose that the convergence speed would suffer as a result, but I would expect the solutions to compare better to Approaches 2 and 3.
Boundary relaxation: I find Section 3.4 confusing to digest. Starting at Line 317, what is the importance of the “last 300 m?” Does 300 m force the inclusion zones to combine with one another, similar to the first panel in Fig. 3? Second, does the un-relaxation at the rate k_r start at 100 iterations and continue until the limit \gamma_r is reached? If so, how does Eq. 17 reconcile with Eq. 9? Or is the return to the actual boundaries being done continuously at the rate k_r starting at the first iteration? Lastly, on Line 324: if k_r = 100, \gamma_r should equal 103, not 97?
Line 298 mentions how “The values of k_r and \gamma_r have to be selected accordingly to the size of the domain and the inclusion zone areas.” This sentence is vague to me: for a larger domain with more turbines, would the number of iterations increase? If the inclusion zone areas are more complex, would these values increase? Are there heuristics for how many iterations the optimization will take such that \gamma_r is chosen to be smaller than that expected limit? Also, I think calling k_r a relaxation speed (Line 319) is confusing because it’s really an un-relaxation speed. There’s surely a better name than that but ‘relaxation’ implies that the relaxation is progressing with k_r, not being undone (i.e. boundaries are returning from their relaxed state to the normal state).
Lastly, Line 347 discusses the differences between the performance of Combinations 3 and 4. The authors explain this by saying that Combination 4 does not have enough “time to find good positions”, but I think this really has to do with the size of the relaxed inclusion areas. The number of relaxation iterations multiplied by the relaxation speed is the maximum offset of the boundary, and with the smaller k_r and fixed \gamma_r, the relaxed boundaries are not sufficiently large to really explore the unconstrained solution space.
Minor Comments
Line 74: Can more detail be given on why gradient-based optimization would be ineffective? I suppose you’re inferring that the high sensitivity to the initial conditions would require the user to run many optimization studies with randomized initial conditions to find the best candidates, which would be more inefficient than the proposed methods.
Line 78: “This is achieved by adding an offset to the distance determined by the method.” This sentence is vague—adding an offset to the distance to the boundary of the polygon?
Eq 1: Maybe a preface about the lower and upper limits of the design variables could be included here. In Fig. 3, it is clear why these limits on the computational domain are necessary, but from Eq. 1 it appears that the function C_i makes them redundant (since the reader assumes that the inclusion zone boundaries are within the computational domain).
Eq. 4: Can more detail be given on why this step is necessary, as opposed to just using the sign of the distance to the nearest vertex (a_{ik} or b_{ik})? It seems that you’d just want to move towards that nearest point on the boundary. Also, where do the ‘k’ and ‘k-1’ indices come from? Everything else in this section is with respect to indices ‘k’ and ‘k+1’.
Eq. 6: A sign is needed here to denote which side of the boundary the turbine is on. Right now, the absolute value makes C_i >= 0 always, which would satisfy the constraint even when the turbine is outside of the inclusion zone.
Eq. 11: The subscript ‘u’ should be defined similar to the subscript ‘d’. Also, are the authors assuming that the speedup factor does not depend on the wind speed? That seems reasonable, but the assumption could be stated explicitly.
Line 254: Why does the crosswind distance not follow the terrain like the upstream distance does?
Line 270: AEP is from Section 2.4, not Equation 2.4, and the wind speed and direction are defined in Eqs. 11 and 12, not 12 and 13.
Line 275: 12 wind sectors are mentioned here, but then Line 284 mentions 1 degree wind direction resolution for the optimization. What is the meaning of the 12 wind sectors?
Line 290: Can this “chunkification” be explained more? Does this mean that the wind direction resolution is not 1 degree, or is this something to do with how the vectorized wind conditions are distributed across the computational nodes?
Line 294: Autograd is used for automatic differentiation of the objective function and also the spacing constraint? I assume that the analytic gradients of the boundary constraint function (Eq. 7 and 8) have been provided to the optimizer.
Line 326: I would be careful to clarify between optimization “time” and “iterations” throughout the paper. At some points, “time” is used where the authors are really referring to iterations and convergence.
Line 329: Is there any explanation why these seeds fail beyond that the solutions violate the constraints? I suppose it’s tied to the fact that the longer relaxation periods with slower relaxation speeds allow the optimizer to settle into local optima that are infeasible, but maybe that could be explained a bit more again.
Line 364: What does “incompatibility of inequality constraints” mean?
Line 378: The lower cost of the smart-start optimizations, even including the time for the initialization (because the convergence is faster), is a neat result. Is there a sensitivity of the smart-start results to the choice of the randomness parameter? How much randomness is required when initially placing the turbines to compensate for the unknown potential optimal AEP in each inclusion zone based on that number of turbines?
Line 415: What is meant by “vectorized” here? Are the wind conditions computed in PyWake in a vectorized fashion? Are the constraints implemented in TOPFARM in a vectorized fashion? Vectorization has not been mentioned up until this point.
Technical Comments
Line 91: Small typo: “TOPFARMS relies [on] PyWake”
Line 243: Symbol for U_\infty is different from the other notation.
Line 341: Typo, remove “for [a] the”.