-
Notifications
You must be signed in to change notification settings - Fork 150
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SciPy Yaw optimization classes: improved efficiency, automated downstream turbine exclusion and turbine-dependent weighing terms #245
Commits on Jul 22, 2021
-
Implement yaw optimization functionality to automatically exclude tur…
…bines from the optimization if the lower bound is equal to the upper bound. Also, I took particular care for allowing a non-zero fixed value for special situations, such as having an upstream turbine fixed at a yaw offset or mimicking non-zero vane bias. This functionality significantly speeds up optimizations since one can eliminate turbines beforehand, reducing the dimensionality of the optimization problem.
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for 2d1a873 - Browse repository at this point
Copy the full SHA 2d1a873View commit details -
Add turbine weighing option to yaw.py in the scipy optimization suite…
…. Now one can use a full farm model to optimize only for a subset of turbines. Doing this, one includes the wake effects of other turbines without caring about them in terms of power capture.
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for 5fb31cb - Browse repository at this point
Copy the full SHA 5fb31cbView commit details -
Implement functionality in YawOptimizationWindRose to only optimize f…
…or a select number of yaw angles through specifying the yaw angle bounds. For yaw angles of turbines that should be excluded as control variables, the lower bound should be specified as equal to the upper bound. This lb==ub does not necessarily have to be 0.0, but can also be a nonzero number, if one desires to keep that turbine fixed at that misalignment. Secondly, I implemented a turbine weighing function with which the floris-produced turbine power production values are multiplied in the calculation of the objective/cost function. This allows one to remove turbines from contributing to the cost function. This is particularly useful if one a subset of turbines takes part in a wake steering experiment, whereas the other turbines should be modeled for their wake effects.
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for 35455a8 - Browse repository at this point
Copy the full SHA 35455a8View commit details -
Add functionality to yaw.py to automatically estimate what turbines a…
…re the most downstreamturbines (i.e., their wakes have no effect on other turbines/the power of the farm). Then, these turbines are excluded in the optimization if exclude_downstream_turbines=True. This allows the user to easily reduce the number of variables to optimize without any loss in performance, potentially leading to significant reductions in computation time.
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for 41691b9 - Browse repository at this point
Copy the full SHA 41691b9View commit details -
Implement similar functionality for exclusion of downstream turbines …
…in yaw_wind_rose.py (see previous commit)
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for ae75697 - Browse repository at this point
Copy the full SHA ae75697View commit details -
Quick bug fix for new features in yaw.py and yaw_wind_rose.py. Array …
…dimension did not match because the optimization variables were only reduced if bnds was not None. However, even with bnds=None, we can only be optimizing a subset of turbines due to exclude_downstream_turbines=True. Hence, always reduce variables. Worst case scenario, variables stay the same, negligible computational cost.
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for 108e20f - Browse repository at this point
Copy the full SHA 108e20fView commit details -
Implement new features in parallelized yaw optimization function too.…
… Needs verification.
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for fc85499 - Browse repository at this point
Copy the full SHA fc85499View commit details -
Refactor some of the recent improvements into a separate function. Al…
…so, this facilitates a bug fix where initially the downstream turbines were only calculated for the first wind direction in the array (for _wind_rose.py), while it should be calculated and the solution space is to be modified for every optimization call.
Bart Doekemeijer committedJul 22, 2021 Configuration menu - View commit details
-
Copy full SHA for c0775ce - Browse repository at this point
Copy the full SHA c0775ceView commit details
Commits on Aug 10, 2021
-
Bug fix for setting bounds closest to 0. when non-zero bounds are spe…
…cified for a downstream machine
Bart Doekemeijer committedAug 10, 2021 Configuration menu - View commit details
-
Copy full SHA for 63183a4 - Browse repository at this point
Copy the full SHA 63183a4View commit details -
Further fix bound fixing for downstream turbines. Also, add descripti…
…on for exclude_downstream_turbines in yaw.py
Bart Doekemeijer committedAug 10, 2021 Configuration menu - View commit details
-
Copy full SHA for 7dbaa24 - Browse repository at this point
Copy the full SHA 7dbaa24View commit details -
Add description for exclude_downstream_turbines docstring
Bart Doekemeijer committedAug 10, 2021 Configuration menu - View commit details
-
Copy full SHA for 6504d50 - Browse repository at this point
Copy the full SHA 6504d50View commit details -
Bug fixes to address applying bounds to a downstream machine when exc…
…lude_downstream_turbines=True. Also, ensure initial conditions and predicted farm outputs are weighted appropriately with self.turbine_weights.
Bart Doekemeijer committedAug 10, 2021 Configuration menu - View commit details
-
Copy full SHA for 55d39c4 - Browse repository at this point
Copy the full SHA 55d39c4View commit details -
Move _reduce_control_variables to private methods
Bart Doekemeijer committedAug 10, 2021 Configuration menu - View commit details
-
Copy full SHA for 64c00b6 - Browse repository at this point
Copy the full SHA 64c00b6View commit details
Commits on Aug 18, 2021
-
Add self.x_baseline as being the yaw angles that are inherently insid…
…e floris when passed to the optimization class. This variable is used to calculate the baseline power production and can differ from the initial guess in the optimization, self.x0. Also, self.x0 is now no longer changed within the optimization class. Rather, the user is forced to specify an appropriate array for self.x0 that meets the bounds.
Bart Doekemeijer committedAug 18, 2021 Configuration menu - View commit details
-
Copy full SHA for 58ca7af - Browse repository at this point
Copy the full SHA 58ca7afView commit details
Commits on Aug 19, 2021
-
Add more elaborate description in simple wake model and set a higher …
…default wake slope to ensure validity for high turbulence cases
Bart Doekemeijer committedAug 19, 2021 Configuration menu - View commit details
-
Copy full SHA for 0bedbc3 - Browse repository at this point
Copy the full SHA 0bedbc3View commit details -
Implement yaw_angles_baseline as separate variable
Bart Doekemeijer committedAug 19, 2021 Configuration menu - View commit details
-
Copy full SHA for b65e0d2 - Browse repository at this point
Copy the full SHA b65e0d2View commit details -
Add INFO statement if not all baseline yaw angles are zero and also i…
…mplement changes to yaw_wind_rose_parallel.py
Bart Doekemeijer committedAug 19, 2021 Configuration menu - View commit details
-
Copy full SHA for b40097b - Browse repository at this point
Copy the full SHA b40097bView commit details
Commits on Aug 20, 2021
-
Add a variable called self.yaw_angles_template where the yaw angles a…
…re all np.nan, besides for downstream turbines which are assigned a value closest to 0.0 constraint-allowing, and for equality-constrained turbines which have their value equal to their lower bound (=upper bound). This clarifies which values are assigned to downstream and equality-assigned turbines
Bart Doekemeijer committedAug 20, 2021 Configuration menu - View commit details
-
Copy full SHA for ffd61f8 - Browse repository at this point
Copy the full SHA ffd61f8View commit details -
Update yaw_angles_template to have a non-nan value for every turbine …
…for situations such as where ws > ws_max or ws < ws_min. Namely, in that situation, we should just fall back to the baseline situation where we put every turbines yaw angle as close to 0.0 as possible.
Bart Doekemeijer committedAug 20, 2021 Configuration menu - View commit details
-
Copy full SHA for 6ecf10a - Browse repository at this point
Copy the full SHA 6ecf10aView commit details -
Remove unused variables in _reduce_control_variables
Bart Doekemeijer committedAug 20, 2021 Configuration menu - View commit details
-
Copy full SHA for 401e53e - Browse repository at this point
Copy the full SHA 401e53eView commit details -
Implement recent changes in yaw.py to yaw_wind_rose.py and yaw_wind_r…
…ose_parallel.py. Specifically, we now create a yaw_angles_template variable that is the default yaw angle array, meeting the equality constraints and also setting the right values for downstream turbines. In optimization, values for the turbines still be to optimized will be overwritten, and the remaining values (for equality-constrained and downstream turbines, if applicable) are unchanged. These changes clarify the default values for turbines, different from x0 (initial guess) and different from yaw_angles_baseline (baseline values for initial power evaluation).
Bart Doekemeijer committedAug 20, 2021 Configuration menu - View commit details
-
Copy full SHA for 954b336 - Browse repository at this point
Copy the full SHA 954b336View commit details
Commits on Aug 24, 2021
-
Configuration menu - View commit details
-
Copy full SHA for 6ed1d13 - Browse repository at this point
Copy the full SHA 6ed1d13View commit details -
Configuration menu - View commit details
-
Copy full SHA for cddfe91 - Browse repository at this point
Copy the full SHA cddfe91View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0e0bf58 - Browse repository at this point
Copy the full SHA 0e0bf58View commit details -
Configuration menu - View commit details
-
Copy full SHA for e76fc4b - Browse repository at this point
Copy the full SHA e76fc4bView commit details
Commits on Aug 27, 2021
-
Bart Doekemeijer committed
Aug 27, 2021 Configuration menu - View commit details
-
Copy full SHA for c87dc35 - Browse repository at this point
Copy the full SHA c87dc35View commit details -
Update yaw_wind_rose.py and _parallel.py docstring
Bart Doekemeijer committedAug 27, 2021 Configuration menu - View commit details
-
Copy full SHA for 8bfa4e9 - Browse repository at this point
Copy the full SHA 8bfa4e9View commit details -
Merge branch 'revised-optimization' of github.com:Bartdoekemeijer/flo…
…ris into HEAD
Bart Doekemeijer committedAug 27, 2021 Configuration menu - View commit details
-
Copy full SHA for b83b67b - Browse repository at this point
Copy the full SHA b83b67bView commit details