-
I am using the Scipy optimize tool (minimize function), provided with FLORIS. I am trying to optimize the layout of a wind farm consisting of 15 turbines (using the IEA 15MW reference model). After the optimization I can only see 14 turbines. Is there a limit on the number of turbines (size of the wind farm) that can be used for layout optimization? |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments
-
This occurs when turbines are given the same coordinates, which can happen when an optimizer moves two turbines to the same location. This is a known issue in FLORIS v2.4 and ways to potentially address can be found in Issue #160. This will not be an issue with FLORIS v3 once we implement the layout optimization code, which should be coming in the next few weeks. |
Beta Was this translation helpful? Give feedback.
-
Thanks for your reply and clarification. One more issue that I saw, is that always the last iteration is used as the optimum layout. Although I can see that there were other iterations which had a higher value for the objective function. So they should be shown as the optimum layout. I am looking forward for the layout optimization in version 3, and I would be happy to help testing the beta version. |
Beta Was this translation helpful? Give feedback.
-
The previous iterations with a higher value (or in this case, more negative value) of the objective function most likely did not stay within the specified constraints. The SLSQP algorithm will violate constraints as it explores the solution space, and slowly work back to an optimum where the constraints are satisfied. |
Beta Was this translation helpful? Give feedback.
-
Thanks again for the clarification. One thing that helped me get over the missing turbines is sorting the boundaries such that the boundaries produce a polygon without intersections between the lines. I created a very simple function to sort the boundaries, I will share it here in case it helps with anything. def sort_boundaries(boundaries):
bnd=pd.DataFrame(boundaries, columns=['x','y'])
bnd.mean()
A=np.degrees(np.arctan2(bnd.y-bnd.mean()[1],bnd.x-bnd.mean()[0]))
A %= 360
A.sort_values()
boundaries=bnd.reindex(A.sort_values().index).values.tolist()
return boundaries |
Beta Was this translation helpful? Give feedback.
-
Ah, good catch. Yes, it is necessary for the boundary vertices to be defined in an order such that there are no overlapping boundary lines. That could be clearer in the documentation. |
Beta Was this translation helpful? Give feedback.
This occurs when turbines are given the same coordinates, which can happen when an optimizer moves two turbines to the same location. This is a known issue in FLORIS v2.4 and ways to potentially address can be found in Issue #160. This will not be an issue with FLORIS v3 once we implement the layout optimization code, which should be coming in the next few weeks.