From 1d812421186ed31dbcf0d29c7ce0aee4b060c25e Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Tue, 21 Oct 2025 12:17:22 -0600 Subject: [PATCH 01/17] Bump version from 0.1.0-beta0 to 0.1.0-beta1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4ea6dac9..af80fdf7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ include = ["ard", "ard.*"] [project] name = "ard-nrel" -version = "0.1.0-beta0" +version = "0.1.0-beta1" authors = [ {name = "Cory Frontin", email = "cory.frontin@nrel.gov"}, {name = "Rafael Mudafort", email = "rafael.mudafort@nrel.gov"}, From 49b12da8e0ecbf738410494cd031a019d011a36c Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Wed, 22 Oct 2025 09:38:50 -0600 Subject: [PATCH 02/17] Bump version from 0.1.0-beta1 to 0.1.0-beta2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index cd41fb0b..8ceeacfc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ include = ["ard", "ard.*"] [project] name = "ard-nrel" -version = "0.1.0-beta1" +version = "0.1.0-beta2" authors = [ {name = "Cory Frontin", email = "cory.frontin@nrel.gov"}, {name = "Rafael Mudafort", email = "rafael.mudafort@nrel.gov"}, From 157cc9fa9fb79618500e8ab0254cb39e8045b3ae Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Tue, 28 Oct 2025 09:53:42 -0600 Subject: [PATCH 03/17] prototype stdout/stderr capturing implemented. --- ard/api/interface.py | 6 ++++-- ard/farm_aero/floris.py | 9 +++++++++ ard/viz/utils.py | 10 ++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 ard/viz/utils.py diff --git a/ard/api/interface.py b/ard/api/interface.py index dd2ce4f9..31aae289 100644 --- a/ard/api/interface.py +++ b/ard/api/interface.py @@ -113,7 +113,7 @@ def set_up_ard_model(input_dict: Union[str, dict], root_data_path: str = None): def set_up_system_recursive( input_dict: dict, system_name: str = "top_level", - work_dir: str = "ard_prob_out", + work_dir: str = "case_files", parent_group=None, modeling_options: dict = None, analysis_options: dict = None, @@ -132,7 +132,9 @@ def set_up_system_recursive( """ # Initialize the top-level problem if no parent group is provided if parent_group is None: - prob = om.Problem(work_dir=work_dir) + prob = om.Problem( + work_dir=work_dir, + ) parent_group = prob.model # parent_group.name = "ard_model" else: diff --git a/ard/farm_aero/floris.py b/ard/farm_aero/floris.py index 97d12742..bb10bd56 100644 --- a/ard/farm_aero/floris.py +++ b/ard/farm_aero/floris.py @@ -6,6 +6,7 @@ import floris import floris.turbine_library.turbine_utilities +import ard.utils.logging as ard_logging import ard.farm_aero.templates as templates @@ -190,6 +191,7 @@ def initialize(self): """Initialization-time FLORIS management.""" self.options.declare("case_title") + @ard_logging.component_log_capture def setup(self): """Setup-time FLORIS management.""" @@ -340,13 +342,16 @@ def initialize(self): super().initialize() # run super class script first! FLORISFarmComponent.initialize(self) # FLORIS superclass + @ard_logging.component_log_capture def setup(self): super().setup() # run super class script first! FLORISFarmComponent.setup(self) # setup a FLORIS run + @ard_logging.component_log_capture def setup_partials(self): FLORISFarmComponent.setup_partials(self) + @ard_logging.component_log_capture def compute(self, inputs, outputs): # generate the list of conditions for evaluation @@ -442,13 +447,16 @@ def initialize(self): super().initialize() # run super class script first! FLORISFarmComponent.initialize(self) # add on FLORIS superclass + @ard_logging.component_log_capture def setup(self): super().setup() # run super class script first! FLORISFarmComponent.setup(self) # setup a FLORIS run + @ard_logging.component_log_capture def setup_partials(self): super().setup_partials() + @ard_logging.component_log_capture def compute(self, inputs, outputs): # set up and run the floris model @@ -477,5 +485,6 @@ def compute(self, inputs, outputs): outputs["power_turbines"] = FLORISFarmComponent.get_power_turbines(self) outputs["thrust_turbines"] = FLORISFarmComponent.get_thrust_turbines(self) + @ard_logging.component_log_capture def setup_partials(self): FLORISFarmComponent.setup_partials(self) diff --git a/ard/viz/utils.py b/ard/viz/utils.py new file mode 100644 index 00000000..b56882a7 --- /dev/null +++ b/ard/viz/utils.py @@ -0,0 +1,10 @@ +import numpy as np + + +def get_plot_range(values, pct_buffer=5.0): + min_value = np.min(values) + max_value = np.max(values) + dvalues = max_value - min_value + min_value = min_value - pct_buffer/100.0*dvalues + max_value = max_value - pct_buffer/100.0*dvalues + return min_value, max_value \ No newline at end of file From d908e710ca7252c600978417b2150f4f0973e74a Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Tue, 28 Oct 2025 09:56:09 -0600 Subject: [PATCH 04/17] missed a bunch, trying again. --- ard/utils/logging.py | 96 ++ ard/viz/utils.py | 6 +- examples/01_onshore/optimization_demo.ipynb | 1580 +++++-------------- 3 files changed, 471 insertions(+), 1211 deletions(-) create mode 100644 ard/utils/logging.py diff --git a/ard/utils/logging.py b/ard/utils/logging.py new file mode 100644 index 00000000..dd657e26 --- /dev/null +++ b/ard/utils/logging.py @@ -0,0 +1,96 @@ +from contextlib import redirect_stdout, redirect_stderr +from functools import wraps +from pathlib import Path +import shutil + +import openmdao.core.component + + +def name_create_log(component, iter: int = None): + """ + for a given component, clean and create component- and rank-unique logfiles + + Take a component and create logs, parallel to the reports file, mirroring + the OpenMDAO model structure with stdout and stderr files for each rank, + and finally return the file paths for the component to redirect stdout and + stderr to. + + Parameters + ---------- + component : openmdao.core.component.Component + An OpenMDAO component that we want to capture stdout/stderr for + + Returns + ------- + pathlib.Path + a path to in the log system to dump stdout to + pathlib.Path + a path to in the log system to dump err to + """ + + # make sure we are dealing with an OM component + assert isinstance(component, openmdao.core.component.Component) + + logs_dir = ["logs"] + if iter is not None: + logs_dir += f"iter_{iter:04d}" + subdir_logger = component.pathname.split( + "." + ) # mirror the comp path for a log directory + dir_reports = Path( + component._problem_meta["reports_dir"] + ) # find the reports directory + path_logfile_template = Path( + dir_reports.parent, + "logs", + *subdir_logger, + f"%s_rank{component._comm.rank:03d}.txt", + ) # put the logs directory parallel to it + path_logfile_stdout = Path(path_logfile_template.as_posix() % "stdout") + path_logfile_stderr = Path(path_logfile_template.as_posix() % "stderr") + + # make a clean log location for this component + try: + path_logfile_stdout.parent.mkdir(parents=True, exist_ok=False) + except FileExistsError: + shutil.rmtree(path_logfile_stdout.parent, ignore_errors=True) + path_logfile_stdout.parent.mkdir(parents=True, exist_ok=True) + + # return stdout and stderr files + return path_logfile_stdout, path_logfile_stderr + + +def component_log_capture(compute_func, iter: int = None): + """ + decorator that redirects stdout and stderr to disciplinary rankwise logfiles + + This decorator will redirects stdout and stderr to discipline-wise and + rank-wise logfiles, which are determined by the `name_create_log` function. + The decorator uses context managers to redirect output streams to these + files, ensuring that all print statements and errors within the function are + logged appropriately. + + func : Callable + The function to be decorated. It should be a method of a class, as + `self` is expected as the first argument. + + Callable + The wrapped function with stdout and stderr redirected to log files + during its execution. + """ + + @wraps(compute_func) + def wrapper(self, *args, **kwargs): + # get log file paths + path_stdout_log, path_stderr_log = name_create_log(self) + + # use context manager to redirect stdout & stderr + with ( + open(path_stdout_log, "a") as stdout_file, + open(path_stderr_log, "a") as stderr_file, + redirect_stdout(stdout_file), + redirect_stderr(stderr_file), + ): + return compute_func(self, *args, **kwargs) + + return wrapper diff --git a/ard/viz/utils.py b/ard/viz/utils.py index b56882a7..599a537b 100644 --- a/ard/viz/utils.py +++ b/ard/viz/utils.py @@ -5,6 +5,6 @@ def get_plot_range(values, pct_buffer=5.0): min_value = np.min(values) max_value = np.max(values) dvalues = max_value - min_value - min_value = min_value - pct_buffer/100.0*dvalues - max_value = max_value - pct_buffer/100.0*dvalues - return min_value, max_value \ No newline at end of file + min_value = min_value - pct_buffer / 100.0 * dvalues + max_value = max_value - pct_buffer / 100.0 * dvalues + return min_value, max_value diff --git a/examples/01_onshore/optimization_demo.ipynb b/examples/01_onshore/optimization_demo.ipynb index 04b723e6..7bb30089 100644 --- a/examples/01_onshore/optimization_demo.ipynb +++ b/examples/01_onshore/optimization_demo.ipynb @@ -60,17 +60,10 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "29850609", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[34mfloris.floris_model.FlorisModel\u001b[0m \u001b[1;30mWARNING\u001b[0m \u001b[33mturbine_type has been changed without specifying a new reference_wind_height. reference_wind_height remains 90.00 m. Consider calling `FlorisModel.assign_hub_height_to_ref_height` to update the reference wind height to the turbine hub height.\u001b[0m\n" - ] - }, { "name": "stdout", "output_type": "stream", @@ -138,17 +131,6 @@ "id": "b74f9d45", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:231: UserWarning:The existing case recorder file, ard_prob_out/problem_out/cases.sql, is being overwritten.\n", - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, { "name": "stdout", "output_type": "stream", @@ -228,23 +210,7 @@ " 'angle_skew': array([0.]),\n", " 'spacing_primary': array([7.]),\n", " 'spacing_secondary': array([7.])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\n", "Objectives\n", "{'financese.lcoe': array([0.03732881])}\n", "\n", @@ -255,23 +221,7 @@ " 'angle_skew': array([0.]),\n", " 'spacing_primary': array([7.]),\n", " 'spacing_secondary': array([7.])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\n", "Objectives\n", "{'financese.lcoe': array([0.03732881])}\n", "\n", @@ -282,23 +232,7 @@ " 'angle_skew': array([0.]),\n", " 'spacing_primary': array([9.]),\n", " 'spacing_secondary': array([7.])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\n", "Objectives\n", "{'financese.lcoe': array([0.03630168])}\n", "\n", @@ -309,23 +243,7 @@ " 'angle_skew': array([0.]),\n", " 'spacing_primary': array([9.]),\n", " 'spacing_secondary': array([9.])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\n", "Objectives\n", "{'financese.lcoe': array([0.0362278])}\n", "\n", @@ -336,25 +254,9 @@ " 'angle_skew': array([0.]),\n", " 'spacing_primary': array([9.]),\n", " 'spacing_secondary': array([9.])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03589558])}\n", + "{'financese.lcoe': array([0.03589575])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|5\n", "---------------------------------------------------------------\n", @@ -363,1332 +265,594 @@ " 'angle_skew': array([2.]),\n", " 'spacing_primary': array([9.]),\n", " 'spacing_secondary': array([9.])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03576731])}\n", + "{'financese.lcoe': array([0.03576782])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|6\n", "---------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([2.86507341]),\n", - " 'angle_skew': array([0.06342541]),\n", - " 'spacing_primary': array([9.88412296]),\n", - " 'spacing_secondary': array([7.42966507])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([2.86472678]),\n", + " 'angle_skew': array([0.06259902]),\n", + " 'spacing_primary': array([9.88434523]),\n", + " 'spacing_secondary': array([7.42956615])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03536135])}\n", + "{'financese.lcoe': array([0.03536145])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|7\n", "---------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([6.22440279]),\n", - " 'angle_skew': array([1.28942792]),\n", - " 'spacing_primary': array([11.09600928]),\n", - " 'spacing_secondary': array([6.10937891])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:498\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([6.22501024]),\n", + " 'angle_skew': array([1.28476133]),\n", + " 'spacing_primary': array([11.09632739]),\n", + " 'spacing_secondary': array([6.10823591])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03370838])}\n", + "{'financese.lcoe': array([0.03371055])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|8\n", "---------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([12.81065072]),\n", - " 'angle_skew': array([5.41443477]),\n", - " 'spacing_primary': array([10.77869556]),\n", - " 'spacing_secondary': array([4.23722274])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([12.81880541]),\n", + " 'angle_skew': array([5.39824365]),\n", + " 'spacing_primary': array([10.77915004]),\n", + " 'spacing_secondary': array([4.2372664])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03370143])}\n", + "{'financese.lcoe': array([0.03370005])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|9\n", "---------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([4.28310721]),\n", - " 'angle_skew': array([4.24611554]),\n", - " 'spacing_primary': array([11.15159215]),\n", - " 'spacing_secondary': array([4.24222055])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.16585792]),\n", + " 'angle_skew': array([2.65542594]),\n", + " 'spacing_primary': array([10.5497108]),\n", + " 'spacing_secondary': array([5.94479478])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03451831])}\n", + "{'financese.lcoe': array([0.0340762])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|10\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([6.00666884]),\n", - " 'angle_skew': array([1.33986207]),\n", - " 'spacing_primary': array([12.01188114]),\n", - " 'spacing_secondary': array([6.44288611])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([12.83465457]),\n", + " 'angle_skew': array([5.67692701]),\n", + " 'spacing_primary': array([11.57777783]),\n", + " 'spacing_secondary': array([4.77044372])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03373368])}\n", + "{'financese.lcoe': array([0.03359523])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|11\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.20718925]),\n", - " 'angle_skew': array([1.26618807]),\n", - " 'spacing_primary': array([11.04995437]),\n", - " 'spacing_secondary': array([5.85267537])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:498\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([12.6429642]),\n", + " 'angle_skew': array([3.438868]),\n", + " 'spacing_primary': array([11.13960364]),\n", + " 'spacing_secondary': array([4.23688239])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03352562])}\n", + "{'financese.lcoe': array([0.03371343])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|12\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.30827026]),\n", - " 'angle_skew': array([-0.28110214]),\n", - " 'spacing_primary': array([11.21647279]),\n", - " 'spacing_secondary': array([4.60049836])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([12.24139357]),\n", + " 'angle_skew': array([5.36934463]),\n", + " 'spacing_primary': array([10.34111174]),\n", + " 'spacing_secondary': array([4.92565789])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03470472])}\n", + "{'financese.lcoe': array([0.03416171])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|13\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.29155102]),\n", - " 'angle_skew': array([0.64372952]),\n", - " 'spacing_primary': array([10.8322654]),\n", - " 'spacing_secondary': array([6.59969609])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([13.8356353]),\n", + " 'angle_skew': array([3.68880649]),\n", + " 'spacing_primary': array([10.56967736]),\n", + " 'spacing_secondary': array([4.23893248])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03362597])}\n", + "{'financese.lcoe': array([0.0335507])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|14\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.59086432]),\n", - " 'angle_skew': array([2.93175261]),\n", - " 'spacing_primary': array([10.37471801]),\n", - " 'spacing_secondary': array([6.64181672])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.70991104]),\n", + " 'angle_skew': array([7.5788889]),\n", + " 'spacing_primary': array([10.24996505]),\n", + " 'spacing_secondary': array([4.21276325])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03351144])}\n", + "{'financese.lcoe': array([0.03415205])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|15\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([9.75180855]),\n", - " 'angle_skew': array([3.5743247]),\n", - " 'spacing_primary': array([10.40303204]),\n", - " 'spacing_secondary': array([5.14565233])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.06208503]),\n", + " 'angle_skew': array([2.11077728]),\n", + " 'spacing_primary': array([10.6442655]),\n", + " 'spacing_secondary': array([4.24795969])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03362007])}\n", + "{'financese.lcoe': array([0.0335116])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|16\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.74175405]),\n", - " 'angle_skew': array([3.20209382]),\n", - " 'spacing_primary': array([9.87740784]),\n", - " 'spacing_secondary': array([7.45226753])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.21946912]),\n", + " 'angle_skew': array([0.12236624]),\n", + " 'spacing_primary': array([10.79053035]),\n", + " 'spacing_secondary': array([4.25559863])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03398983])}\n", + "{'financese.lcoe': array([0.03342836])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|17\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.69666884]),\n", - " 'angle_skew': array([2.95678515]),\n", - " 'spacing_primary': array([10.5780121]),\n", - " 'spacing_secondary': array([6.73851361])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.53910097]),\n", + " 'angle_skew': array([-1.8468806]),\n", + " 'spacing_primary': array([10.93147621]),\n", + " 'spacing_secondary': array([4.24954482])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03350047])}\n", + "{'financese.lcoe': array([0.03345727])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|18\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.17818917]),\n", - " 'angle_skew': array([3.05428928]),\n", - " 'spacing_primary': array([10.45137129]),\n", - " 'spacing_secondary': array([6.39931257])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.17781019]),\n", + " 'angle_skew': array([0.04441727]),\n", + " 'spacing_primary': array([9.79479339]),\n", + " 'spacing_secondary': array([4.2292092])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.033564])}\n", + "{'financese.lcoe': array([0.03367221])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|19\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.54548368]),\n", - " 'angle_skew': array([2.85439181]),\n", - " 'spacing_primary': array([10.38776205]),\n", - " 'spacing_secondary': array([6.68407495])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([17.16723409]),\n", + " 'angle_skew': array([0.56670928]),\n", + " 'spacing_primary': array([10.69987251]),\n", + " 'spacing_secondary': array([4.27909373])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03351661])}\n", + "{'financese.lcoe': array([0.03388145])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|20\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.68235437]),\n", - " 'angle_skew': array([2.82528036]),\n", - " 'spacing_primary': array([10.38236737]),\n", - " 'spacing_secondary': array([6.49956794])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.22395236]),\n", + " 'angle_skew': array([0.03304793]),\n", + " 'spacing_primary': array([10.82025668]),\n", + " 'spacing_secondary': array([4.24638046])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03352674])}\n", + "{'financese.lcoe': array([0.0334782])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|21\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.6540565]),\n", - " 'angle_skew': array([2.91346029]),\n", - " 'spacing_primary': array([10.3196462]),\n", - " 'spacing_secondary': array([6.69319021])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.22182979]),\n", + " 'angle_skew': array([0.12397559]),\n", + " 'spacing_primary': array([10.7969286]),\n", + " 'spacing_secondary': array([4.00569685])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03351022])}\n", + "{'financese.lcoe': array([0.03371083])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|22\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.67575792]),\n", - " 'angle_skew': array([3.08481535]),\n", - " 'spacing_primary': array([10.2720701]),\n", - " 'spacing_secondary': array([6.78208906])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.23434311]),\n", + " 'angle_skew': array([0.120942]),\n", + " 'spacing_primary': array([10.65853269]),\n", + " 'spacing_secondary': array([4.73762908])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03351441])}\n", + "{'financese.lcoe': array([0.03372802])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|23\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.84425874]),\n", - " 'angle_skew': array([3.07310244]),\n", - " 'spacing_primary': array([10.28009779]),\n", - " 'spacing_secondary': array([6.67529094])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.21035348]),\n", + " 'angle_skew': array([0.22166755]),\n", + " 'spacing_primary': array([10.78317629]),\n", + " 'spacing_secondary': array([4.2541595])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349585])}\n", + "{'financese.lcoe': array([0.03343025])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|24\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([9.18352292]),\n", - " 'angle_skew': array([3.04313706]),\n", - " 'spacing_primary': array([10.29713614]),\n", - " 'spacing_secondary': array([6.46621779])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.40671439]),\n", + " 'angle_skew': array([0.05281825]),\n", + " 'spacing_primary': array([10.79416768]),\n", + " 'spacing_secondary': array([4.24616164])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03351251])}\n", + "{'financese.lcoe': array([0.03344789])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|25\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.84094657]),\n", - " 'angle_skew': array([3.23775271]),\n", - " 'spacing_primary': array([10.23836947]),\n", - " 'spacing_secondary': array([6.78082797])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.21714695]),\n", + " 'angle_skew': array([0.11465166]),\n", + " 'spacing_primary': array([10.69438227]),\n", + " 'spacing_secondary': array([4.22931861])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03350363])}\n", + "{'financese.lcoe': array([0.03343125])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|26\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.92780689]),\n", - " 'angle_skew': array([3.06227062]),\n", - " 'spacing_primary': array([10.28551011]),\n", - " 'spacing_secondary': array([6.62168977])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.02666262]),\n", + " 'angle_skew': array([0.07126481]),\n", + " 'spacing_primary': array([10.80172336]),\n", + " 'spacing_secondary': array([4.24616385])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349405])}\n", + "{'financese.lcoe': array([0.03342604])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|27\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.96908323]),\n", - " 'angle_skew': array([2.99969751]),\n", - " 'spacing_primary': array([10.26251137]),\n", - " 'spacing_secondary': array([6.68375367])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.09792225]),\n", + " 'angle_skew': array([0.0767797]),\n", + " 'spacing_primary': array([10.79977814]),\n", + " 'spacing_secondary': array([4.24615115])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.0334977])}\n", + "{'financese.lcoe': array([0.03342782])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|28\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.92431437]),\n", - " 'angle_skew': array([3.06109607]),\n", - " 'spacing_primary': array([10.26197456]),\n", - " 'spacing_secondary': array([6.61410686])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.02655602]),\n", + " 'angle_skew': array([0.07885828]),\n", + " 'spacing_primary': array([10.8199866]),\n", + " 'spacing_secondary': array([4.14813946])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349462])}\n", + "{'financese.lcoe': array([0.03351115])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|29\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.91563967]),\n", - " 'angle_skew': array([3.05174114]),\n", - " 'spacing_primary': array([10.29746973]),\n", - " 'spacing_secondary': array([6.57588523])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([15.02060397]),\n", + " 'angle_skew': array([0.05568614]),\n", + " 'spacing_primary': array([10.75111355]),\n", + " 'spacing_secondary': array([4.43893119])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.0334975])}\n", + "{'financese.lcoe': array([0.03342975])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|30\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.93680565]),\n", - " 'angle_skew': array([3.06521408]),\n", - " 'spacing_primary': array([10.28505436]),\n", - " 'spacing_secondary': array([6.61850376])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.92797156]),\n", + " 'angle_skew': array([0.08734545]),\n", + " 'spacing_primary': array([10.80294266]),\n", + " 'spacing_secondary': array([4.24614656])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349397])}\n", + "{'financese.lcoe': array([0.03342526])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|31\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.93541161]),\n", - " 'angle_skew': array([3.08299015]),\n", - " 'spacing_primary': array([10.28137613]),\n", - " 'spacing_secondary': array([6.62678257])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.86981881]),\n", + " 'angle_skew': array([0.00632905]),\n", + " 'spacing_primary': array([10.81033196]),\n", + " 'spacing_secondary': array([4.24616379])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349297])}\n", + "{'financese.lcoe': array([0.03342577])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|32\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.9414375]),\n", - " 'angle_skew': array([3.09048798]),\n", - " 'spacing_primary': array([10.27644142]),\n", - " 'spacing_secondary': array([6.64360874])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.92738582]),\n", + " 'angle_skew': array([0.08556891]),\n", + " 'spacing_primary': array([10.77887019]),\n", + " 'spacing_secondary': array([4.23966451])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349228])}\n", + "{'financese.lcoe': array([0.03342597])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|33\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.94171468]),\n", - " 'angle_skew': array([3.10878737]),\n", - " 'spacing_primary': array([10.27276221]),\n", - " 'spacing_secondary': array([6.65078641])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.90283527]),\n", + " 'angle_skew': array([0.13049087]),\n", + " 'spacing_primary': array([10.80036587]),\n", + " 'spacing_secondary': array([4.24614595])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349156])}\n", + "{'financese.lcoe': array([0.03342536])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|34\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.97150949]),\n", - " 'angle_skew': array([3.13361962]),\n", - " 'spacing_primary': array([10.26586472]),\n", - " 'spacing_secondary': array([6.65771845])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.92803267]),\n", + " 'angle_skew': array([0.08753531]),\n", + " 'spacing_primary': array([10.80552779]),\n", + " 'spacing_secondary': array([4.23648855])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03349054])}\n", + "{'financese.lcoe': array([0.03343041])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|35\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.97471229]),\n", - " 'angle_skew': array([3.16240794]),\n", - " 'spacing_primary': array([10.25667862]),\n", - " 'spacing_secondary': array([6.68372979])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.92810045]),\n", + " 'angle_skew': array([0.08702987]),\n", + " 'spacing_primary': array([10.79781286]),\n", + " 'spacing_secondary': array([4.26547449])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.0334902])}\n", + "{'financese.lcoe': array([0.0334167])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|36\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.97294762]),\n", - " 'angle_skew': array([3.19266705]),\n", - " 'spacing_primary': array([10.25888031]),\n", - " 'spacing_secondary': array([6.65772162])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.92845818]),\n", + " 'angle_skew': array([0.08641889]),\n", + " 'spacing_primary': array([10.78749079]),\n", + " 'spacing_secondary': array([4.30411325])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03348846])}\n", + "{'financese.lcoe': array([0.03340622])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|37\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.98282721]),\n", - " 'angle_skew': array([3.22341897]),\n", - " 'spacing_primary': array([10.25938009]),\n", - " 'spacing_secondary': array([6.63413215])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.94217233]),\n", + " 'angle_skew': array([0.0824659]),\n", + " 'spacing_primary': array([10.77778138]),\n", + " 'spacing_secondary': array([4.34019681])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03348738])}\n", + "{'financese.lcoe': array([0.03340422])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|38\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.98743922]),\n", - " 'angle_skew': array([3.26280778]),\n", - " 'spacing_primary': array([10.2542312]),\n", - " 'spacing_secondary': array([6.63499243])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.91356443]),\n", + " 'angle_skew': array([0.10531276]),\n", + " 'spacing_primary': array([10.77270093]),\n", + " 'spacing_secondary': array([4.35548728])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03348601])}\n", + "{'financese.lcoe': array([0.03340665])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|39\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([9.00395892]),\n", - " 'angle_skew': array([3.34033783]),\n", - " 'spacing_primary': array([10.24352712]),\n", - " 'spacing_secondary': array([6.63626258])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.9477178]),\n", + " 'angle_skew': array([0.09035203]),\n", + " 'spacing_primary': array([10.78038152]),\n", + " 'spacing_secondary': array([4.33965274])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03348343])}\n", + "{'financese.lcoe': array([0.03340391])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|40\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.93612225]),\n", - " 'angle_skew': array([3.48355345]),\n", - " 'spacing_primary': array([10.23731751]),\n", - " 'spacing_secondary': array([6.61507499])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.93818479]),\n", + " 'angle_skew': array([0.06351475]),\n", + " 'spacing_primary': array([10.77796562]),\n", + " 'spacing_secondary': array([4.34518874])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03347882])}\n", + "{'financese.lcoe': array([0.03340462])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|41\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.95916329]),\n", - " 'angle_skew': array([3.80019775]),\n", - " 'spacing_primary': array([10.20307325]),\n", - " 'spacing_secondary': array([6.5942704])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95705748]),\n", + " 'angle_skew': array([0.08226704]),\n", + " 'spacing_primary': array([10.76444516]),\n", + " 'spacing_secondary': array([4.33946325])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03346946])}\n", + "{'financese.lcoe': array([0.03340513])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|42\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.99875165]),\n", - " 'angle_skew': array([4.10069548]),\n", - " 'spacing_primary': array([10.27891273]),\n", - " 'spacing_secondary': array([6.03571669])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95200085]),\n", + " 'angle_skew': array([0.08291186]),\n", + " 'spacing_primary': array([10.77704376]),\n", + " 'spacing_secondary': array([4.34182695])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.0336019])}\n", + "{'financese.lcoe': array([0.03340416])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|43\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.89437289]),\n", - " 'angle_skew': array([3.82860692]),\n", - " 'spacing_primary': array([9.99398572]),\n", - " 'spacing_secondary': array([6.82595451])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95152501]),\n", + " 'angle_skew': array([0.08554555]),\n", + " 'spacing_primary': array([10.77577613]),\n", + " 'spacing_secondary': array([4.34585564])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03354543])}\n", + "{'financese.lcoe': array([0.03340455])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|44\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.95835196]),\n", - " 'angle_skew': array([3.8101481]),\n", - " 'spacing_primary': array([10.26271389]),\n", - " 'spacing_secondary': array([6.64664718])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95205494]),\n", + " 'angle_skew': array([0.08375887]),\n", + " 'spacing_primary': array([10.77712029]),\n", + " 'spacing_secondary': array([4.3413037])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03346738])}\n", + "{'financese.lcoe': array([0.03340407])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|45\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.98227427]),\n", - " 'angle_skew': array([3.81532101]),\n", - " 'spacing_primary': array([10.2341381]),\n", - " 'spacing_secondary': array([6.43976427])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95245597]),\n", + " 'angle_skew': array([0.08436608]),\n", + " 'spacing_primary': array([10.77754822]),\n", + " 'spacing_secondary': array([4.33949059])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03348852])}\n", + "{'financese.lcoe': array([0.03340402])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|46\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.9197167]),\n", - " 'angle_skew': array([3.80310252]),\n", - " 'spacing_primary': array([10.20639718]),\n", - " 'spacing_secondary': array([6.58932262])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95242605]),\n", + " 'angle_skew': array([0.08635071]),\n", + " 'spacing_primary': array([10.77735636]),\n", + " 'spacing_secondary': array([4.339644])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03346921])}\n", + "{'financese.lcoe': array([0.03340403])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|47\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.90574977]),\n", - " 'angle_skew': array([3.82174101]),\n", - " 'spacing_primary': array([10.16655647]),\n", - " 'spacing_secondary': array([6.65466976])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.9524819]),\n", + " 'angle_skew': array([0.08443966]),\n", + " 'spacing_primary': array([10.77851129]),\n", + " 'spacing_secondary': array([4.33974827])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03347065])}\n", + "{'financese.lcoe': array([0.03340394])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|48\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.92178396]),\n", - " 'angle_skew': array([3.82244471]),\n", - " 'spacing_primary': array([10.20721649]),\n", - " 'spacing_secondary': array([6.58474715])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.9536984]),\n", + " 'angle_skew': array([0.08417389]),\n", + " 'spacing_primary': array([10.77793669]),\n", + " 'spacing_secondary': array([4.33798443])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03346877])}\n", + "{'financese.lcoe': array([0.03340397])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|49\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.91405197]),\n", - " 'angle_skew': array([3.85212766]),\n", - " 'spacing_primary': array([10.20908038]),\n", - " 'spacing_secondary': array([6.5591412])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95421381]),\n", + " 'angle_skew': array([0.08376363]),\n", + " 'spacing_primary': array([10.77897705]),\n", + " 'spacing_secondary': array([4.33417869])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03346911])}\n", + "{'financese.lcoe': array([0.03340392])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|50\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([8.92096623]),\n", - " 'angle_skew': array([3.82299027]),\n", - " 'spacing_primary': array([10.19726613]),\n", - " 'spacing_secondary': array([6.58490219])}\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", - "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", - "invalid value encountered in divide" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "{'angle_orientation': array([14.95773338]),\n", + " 'angle_skew': array([0.08312907]),\n", + " 'spacing_primary': array([10.7794027]),\n", + " 'spacing_secondary': array([4.33243834])}\n", + "\n", "Objectives\n", - "{'financese.lcoe': array([0.03346879])}\n", + "{'financese.lcoe': array([0.03340391])}\n", "\n", "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", - "Number of function values = 50 Least value of F = 0.03346878666309313 Constraint violation = 0.0\n", + "Number of function values = 50 Least value of F = 0.033403907974277725 Constraint violation = 2e-15\n", "The corresponding X is:\n", - "[10.19726613 6.58490219 8.92096623 3.82299027]\n", + "[10.7794027 4.33243834 14.95773338 0.08312907]\n", "The constraint value is:\n", - "[-7.19726613e+00 -3.58490219e+00 -1.88920966e+02 -4.88229903e+01\n", - " -9.80273387e+00 -1.34150978e+01 -1.71079034e+02 -4.11770097e+01\n", - " -2.46831711e-01 -2.24161401e+00 -2.65275439e+00 -1.90045167e+00\n", - " -4.53271484e-03 -1.14008252e+00 -3.30539637e+00 -4.32637720e+00\n", - " -3.00226636e+00 -3.83049316e-01 -7.61565918e-01 -3.38078296e+00\n", - " -5.99999604e+00 -3.38078296e+00 -7.61565918e-01 -3.83049316e-01\n", - " -3.00226636e+00 -4.32637720e+00 -3.30539637e+00 -1.14008252e+00\n", - " -4.53271484e-03 -1.90045167e+00 -2.65275439e+00 -2.24161401e+00\n", - " -2.46831711e-01 -7.73644597e-01 -2.09928919e+00 -3.42493379e+00\n", - " -4.75057839e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", - " -3.46011786e+00 -4.76276842e+00 -1.16389278e+00 -1.54521208e+00\n", - " -2.50855162e+00 -3.67296403e+00 -4.91136280e+00 -2.02183917e+00\n", - " -2.26349232e+00 -3.01787579e+00 -4.03882742e+00 -5.18577369e+00\n", - " -2.87978557e+00 -3.04353049e+00 -3.64242417e+00 -4.52473279e+00\n", - " -5.56910323e+00 -7.73644597e-01 -2.09928919e+00 -3.42493379e+00\n", - " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", - " -3.46011786e+00 -1.68517339e+00 -1.16389278e+00 -1.54521208e+00\n", - " -2.50855162e+00 -3.67296403e+00 -2.42070355e+00 -2.02183917e+00\n", - " -2.26349232e+00 -3.01787579e+00 -4.03882742e+00 -3.20846965e+00\n", - " -2.87978557e+00 -3.04353049e+00 -3.64242417e+00 -4.52473279e+00\n", - " -7.73644597e-01 -2.09928919e+00 -2.28855092e+00 -1.07436625e+00\n", - " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -2.70073249e+00\n", - " -1.68517339e+00 -1.16389278e+00 -1.54521208e+00 -2.50855162e+00\n", - " -3.26427460e+00 -2.42070355e+00 -2.02183917e+00 -2.26349232e+00\n", - " -3.01787579e+00 -3.92234677e+00 -3.20846965e+00 -2.87978557e+00\n", - " -3.04353049e+00 -3.64242417e+00 -7.73644597e-01 -3.57196157e+00\n", - " -2.28855092e+00 -1.07436625e+00 -3.05946391e-01 -9.78275808e-01\n", - " -3.88311666e+00 -2.70073249e+00 -1.68517339e+00 -1.16389278e+00\n", - " -1.54521208e+00 -4.32709874e+00 -3.26427460e+00 -2.42070355e+00\n", - " -2.02183917e+00 -2.26349232e+00 -4.87138393e+00 -3.92234677e+00\n", - " -3.20846965e+00 -2.87978557e+00 -3.04353049e+00 -4.87571184e+00\n", - " -3.57196157e+00 -2.28855092e+00 -1.07436625e+00 -3.05946391e-01\n", - " -5.12910184e+00 -3.88311666e+00 -2.70073249e+00 -1.68517339e+00\n", - " -1.16389278e+00 -5.49464571e+00 -4.32709874e+00 -3.26427460e+00\n", - " -2.42070355e+00 -2.02183917e+00 -5.95346498e+00 -4.87138393e+00\n", - " -3.92234677e+00 -3.20846965e+00 -2.87978557e+00 -7.73644597e-01\n", - " -2.09928919e+00 -3.42493379e+00 -4.75057839e+00 -3.05946391e-01\n", - " -9.78275808e-01 -2.17968140e+00 -3.46011786e+00 -4.76276842e+00\n", - " -1.16389278e+00 -1.54521208e+00 -2.50855162e+00 -3.67296403e+00\n", - " -4.91136280e+00 -2.02183917e+00 -2.26349232e+00 -3.01787579e+00\n", - " -4.03882742e+00 -5.18577369e+00 -7.73644597e-01 -2.09928919e+00\n", - " -3.42493379e+00 -1.07436625e+00 -3.05946391e-01 -9.78275808e-01\n", - " -2.17968140e+00 -3.46011786e+00 -1.68517339e+00 -1.16389278e+00\n", - " -1.54521208e+00 -2.50855162e+00 -3.67296403e+00 -2.42070355e+00\n", - " -2.02183917e+00 -2.26349232e+00 -3.01787579e+00 -4.03882742e+00\n", - " -7.73644597e-01 -2.09928919e+00 -2.28855092e+00 -1.07436625e+00\n", - " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -2.70073249e+00\n", - " -1.68517339e+00 -1.16389278e+00 -1.54521208e+00 -2.50855162e+00\n", - " -3.26427460e+00 -2.42070355e+00 -2.02183917e+00 -2.26349232e+00\n", - " -3.01787579e+00 -7.73644597e-01 -3.57196157e+00 -2.28855092e+00\n", - " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -3.88311666e+00\n", - " -2.70073249e+00 -1.68517339e+00 -1.16389278e+00 -1.54521208e+00\n", - " -4.32709874e+00 -3.26427460e+00 -2.42070355e+00 -2.02183917e+00\n", - " -2.26349232e+00 -4.87571184e+00 -3.57196157e+00 -2.28855092e+00\n", - " -1.07436625e+00 -3.05946391e-01 -5.12910184e+00 -3.88311666e+00\n", - " -2.70073249e+00 -1.68517339e+00 -1.16389278e+00 -5.49464571e+00\n", - " -4.32709874e+00 -3.26427460e+00 -2.42070355e+00 -2.02183917e+00\n", - " -7.73644597e-01 -2.09928919e+00 -3.42493379e+00 -4.75057839e+00\n", - " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -3.46011786e+00\n", - " -4.76276842e+00 -1.16389278e+00 -1.54521208e+00 -2.50855162e+00\n", - " -3.67296403e+00 -4.91136280e+00 -7.73644597e-01 -2.09928919e+00\n", - " -3.42493379e+00 -1.07436625e+00 -3.05946391e-01 -9.78275808e-01\n", - " -2.17968140e+00 -3.46011786e+00 -1.68517339e+00 -1.16389278e+00\n", - " -1.54521208e+00 -2.50855162e+00 -3.67296403e+00 -7.73644597e-01\n", - " -2.09928919e+00 -2.28855092e+00 -1.07436625e+00 -3.05946391e-01\n", - " -9.78275808e-01 -2.17968140e+00 -2.70073249e+00 -1.68517339e+00\n", - " -1.16389278e+00 -1.54521208e+00 -2.50855162e+00 -7.73644597e-01\n", - " -3.57196157e+00 -2.28855092e+00 -1.07436625e+00 -3.05946391e-01\n", - " -9.78275808e-01 -3.88311666e+00 -2.70073249e+00 -1.68517339e+00\n", - " -1.16389278e+00 -1.54521208e+00 -4.87571184e+00 -3.57196157e+00\n", - " -2.28855092e+00 -1.07436625e+00 -3.05946391e-01 -5.12910184e+00\n", - " -3.88311666e+00 -2.70073249e+00 -1.68517339e+00 -1.16389278e+00\n", - " -7.73644597e-01 -2.09928919e+00 -3.42493379e+00 -4.75057839e+00\n", - " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -3.46011786e+00\n", - " -4.76276842e+00 -7.73644597e-01 -2.09928919e+00 -3.42493379e+00\n", - " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", - " -3.46011786e+00 -7.73644597e-01 -2.09928919e+00 -2.28855092e+00\n", - " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", - " -7.73644597e-01 -3.57196157e+00 -2.28855092e+00 -1.07436625e+00\n", - " -3.05946391e-01 -9.78275808e-01 -4.87571184e+00 -3.57196157e+00\n", - " -2.28855092e+00 -1.07436625e+00 -3.05946391e-01 -7.73644597e-01\n", - " -2.09928919e+00 -3.42493379e+00 -4.75057839e+00 -7.73644597e-01\n", - " -2.09928919e+00 -3.42493379e+00 -7.73644597e-01 -2.09928919e+00\n", - " -7.73644597e-01]\n", + "[-7.77940270e+00 -1.33243834e+00 -1.94957733e+02 -4.50831291e+01\n", + " -9.22059730e+00 -1.56675617e+01 -1.65042267e+02 -4.49168709e+01\n", + " -3.86663113e-01 -2.81279050e+00 -3.82431079e+00 -2.70768115e+00\n", + " 2.00000000e-15 -8.76956055e-01 -3.37531216e+00 -4.91215540e+00\n", + " -3.00000000e+00 -2.92318848e-01 -5.84637695e-01 -3.29231885e+00\n", + " -5.99999604e+00 -3.29231885e+00 -5.84637695e-01 -2.92318848e-01\n", + " -3.00000000e+00 -4.91215540e+00 -3.37531216e+00 -8.76956055e-01\n", + " -2.00000000e-15 -2.70768115e+00 -3.82431079e+00 -2.81279050e+00\n", + " -3.86663113e-01 -8.49322351e-01 -2.25064470e+00 -3.65196705e+00\n", + " -5.05328940e+00 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", + " -3.68871720e+00 -5.08070117e+00 -5.74435155e-01 -1.24465803e+00\n", + " -2.46702512e+00 -3.79868430e+00 -5.16375050e+00 -1.13765273e+00\n", + " -1.64157245e+00 -2.71847435e+00 -3.97653768e+00 -5.30006914e+00\n", + " -1.70087031e+00 -2.09940871e+00 -3.04131606e+00 -4.21468450e+00\n", + " -5.48605024e+00 -8.49322351e-01 -2.25064470e+00 -3.65196705e+00\n", + " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", + " -3.68871720e+00 -1.24720563e+00 -5.74435155e-01 -1.24465803e+00\n", + " -2.46702512e+00 -3.79868430e+00 -1.64470237e+00 -1.13765273e+00\n", + " -1.64157245e+00 -2.71847435e+00 -3.97653768e+00 -2.10286154e+00\n", + " -1.70087031e+00 -2.09940871e+00 -3.04131606e+00 -4.21468450e+00\n", + " -8.49322351e-01 -2.25064470e+00 -2.30747754e+00 -9.59028979e-01\n", + " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -2.47005796e+00\n", + " -1.24720563e+00 -5.74435155e-01 -1.24465803e+00 -2.46702512e+00\n", + " -2.72267325e+00 -1.64470237e+00 -1.13765273e+00 -1.64157245e+00\n", + " -2.71847435e+00 -3.04641126e+00 -2.10286154e+00 -1.70087031e+00\n", + " -2.09940871e+00 -3.04131606e+00 -8.49322351e-01 -3.69033705e+00\n", + " -2.30747754e+00 -9.59028979e-01 -1.12175776e-02 -9.57512559e-01\n", + " -3.80184156e+00 -2.47005796e+00 -1.24720563e+00 -5.74435155e-01\n", + " -1.24465803e+00 -3.98108694e+00 -2.72267325e+00 -1.64470237e+00\n", + " -1.13765273e+00 -1.64157245e+00 -4.22044655e+00 -3.04641126e+00\n", + " -2.10286154e+00 -1.70087031e+00 -2.09940871e+00 -5.08232730e+00\n", + " -3.69033705e+00 -2.30747754e+00 -9.59028979e-01 -1.12175776e-02\n", + " -5.16695507e+00 -3.80184156e+00 -2.47005796e+00 -1.24720563e+00\n", + " -5.74435155e-01 -5.30476345e+00 -3.98108694e+00 -2.72267325e+00\n", + " -1.64470237e+00 -1.13765273e+00 -5.49211592e+00 -4.22044655e+00\n", + " -3.04641126e+00 -2.10286154e+00 -1.70087031e+00 -8.49322351e-01\n", + " -2.25064470e+00 -3.65196705e+00 -5.05328940e+00 -1.12175776e-02\n", + " -9.57512559e-01 -2.30587525e+00 -3.68871720e+00 -5.08070117e+00\n", + " -5.74435155e-01 -1.24465803e+00 -2.46702512e+00 -3.79868430e+00\n", + " -5.16375050e+00 -1.13765273e+00 -1.64157245e+00 -2.71847435e+00\n", + " -3.97653768e+00 -5.30006914e+00 -8.49322351e-01 -2.25064470e+00\n", + " -3.65196705e+00 -9.59028979e-01 -1.12175776e-02 -9.57512559e-01\n", + " -2.30587525e+00 -3.68871720e+00 -1.24720563e+00 -5.74435155e-01\n", + " -1.24465803e+00 -2.46702512e+00 -3.79868430e+00 -1.64470237e+00\n", + " -1.13765273e+00 -1.64157245e+00 -2.71847435e+00 -3.97653768e+00\n", + " -8.49322351e-01 -2.25064470e+00 -2.30747754e+00 -9.59028979e-01\n", + " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -2.47005796e+00\n", + " -1.24720563e+00 -5.74435155e-01 -1.24465803e+00 -2.46702512e+00\n", + " -2.72267325e+00 -1.64470237e+00 -1.13765273e+00 -1.64157245e+00\n", + " -2.71847435e+00 -8.49322351e-01 -3.69033705e+00 -2.30747754e+00\n", + " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -3.80184156e+00\n", + " -2.47005796e+00 -1.24720563e+00 -5.74435155e-01 -1.24465803e+00\n", + " -3.98108694e+00 -2.72267325e+00 -1.64470237e+00 -1.13765273e+00\n", + " -1.64157245e+00 -5.08232730e+00 -3.69033705e+00 -2.30747754e+00\n", + " -9.59028979e-01 -1.12175776e-02 -5.16695507e+00 -3.80184156e+00\n", + " -2.47005796e+00 -1.24720563e+00 -5.74435155e-01 -5.30476345e+00\n", + " -3.98108694e+00 -2.72267325e+00 -1.64470237e+00 -1.13765273e+00\n", + " -8.49322351e-01 -2.25064470e+00 -3.65196705e+00 -5.05328940e+00\n", + " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -3.68871720e+00\n", + " -5.08070117e+00 -5.74435155e-01 -1.24465803e+00 -2.46702512e+00\n", + " -3.79868430e+00 -5.16375050e+00 -8.49322351e-01 -2.25064470e+00\n", + " -3.65196705e+00 -9.59028979e-01 -1.12175776e-02 -9.57512559e-01\n", + " -2.30587525e+00 -3.68871720e+00 -1.24720563e+00 -5.74435155e-01\n", + " -1.24465803e+00 -2.46702512e+00 -3.79868430e+00 -8.49322351e-01\n", + " -2.25064470e+00 -2.30747754e+00 -9.59028979e-01 -1.12175776e-02\n", + " -9.57512559e-01 -2.30587525e+00 -2.47005796e+00 -1.24720563e+00\n", + " -5.74435155e-01 -1.24465803e+00 -2.46702512e+00 -8.49322351e-01\n", + " -3.69033705e+00 -2.30747754e+00 -9.59028979e-01 -1.12175776e-02\n", + " -9.57512559e-01 -3.80184156e+00 -2.47005796e+00 -1.24720563e+00\n", + " -5.74435155e-01 -1.24465803e+00 -5.08232730e+00 -3.69033705e+00\n", + " -2.30747754e+00 -9.59028979e-01 -1.12175776e-02 -5.16695507e+00\n", + " -3.80184156e+00 -2.47005796e+00 -1.24720563e+00 -5.74435155e-01\n", + " -8.49322351e-01 -2.25064470e+00 -3.65196705e+00 -5.05328940e+00\n", + " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -3.68871720e+00\n", + " -5.08070117e+00 -8.49322351e-01 -2.25064470e+00 -3.65196705e+00\n", + " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", + " -3.68871720e+00 -8.49322351e-01 -2.25064470e+00 -2.30747754e+00\n", + " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", + " -8.49322351e-01 -3.69033705e+00 -2.30747754e+00 -9.59028979e-01\n", + " -1.12175776e-02 -9.57512559e-01 -5.08232730e+00 -3.69033705e+00\n", + " -2.30747754e+00 -9.59028979e-01 -1.12175776e-02 -8.49322351e-01\n", + " -2.25064470e+00 -3.65196705e+00 -5.05328940e+00 -8.49322351e-01\n", + " -2.25064470e+00 -3.65196705e+00 -8.49322351e-01 -2.25064470e+00\n", + " -8.49322351e-01]\n", "\n", "Optimization FAILED.\n", "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", @@ -1697,14 +861,14 @@ "\n", "RESULTS (opt):\n", "\n", - "{'AEP_val': 453.31177490509094,\n", - " 'BOS_val': 41.923934482221036,\n", + "{'AEP_val': 452.0229798955795,\n", + " 'BOS_val': 40.95778696920967,\n", " 'CapEx_val': 110.5,\n", - " 'LCOE_val': 33.46878666309313,\n", + " 'LCOE_val': 33.40390797427772,\n", " 'OpEx_val': 3.7400000000000007,\n", - " 'area_tight': 18.15681922585348,\n", - " 'coll_length': 23.423806992035267,\n", - " 'turbine_spacing': 0.8579463914778505}\n", + " 'area_tight': 12.627976787759488,\n", + " 'coll_length': 18.479531905326184,\n", + " 'turbine_spacing': 0.5632175775670184}\n", "\n", "\n", "\n" @@ -1751,7 +915,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVHpJREFUeJzt3Qd0VNXWB/ANpIcQIHTpvXfpUhVBeGCBJ2J7NrpSBEREEaV8FpQqCtJ7L4KAPkrovfcaSGhJIKT35Fv/w5uYTsrMvTNz/7+1sgYymeRkMnPvvufss3eexMTERCEiIiLDyqv3AIiIiEhfDAaIiIgMjsEAERGRwTEYICIiMjgGA0RERAbHYICIiMjgGAwQEREZHIMBIiIig2MwQEREZHAMBoiIiAyOwQAREZHBMRggIiIyOAYDREREBsdggIiIyOAYDBARERkcgwEiIiKDYzBARERkcAwGiIiIDI7BABERkcExGCAiIjI4BgNEREQGx2CAiIjI4Bz0HgARZU1iYqLs3bdfVq/dKDEx0fLSix2ka9euki9fPr2HRkQ2jjMDRDbg7t278sZ/+snOk3el3eufSpvXBsuKLQekeu0GsnbtWr2HR0Q2Lk8iLjeIyGrhLdrr3X7Ss+/YNLMAVy+clO8/f19mz5ohr776qm5jJCLbxmCAyMpt3faXnPaNlWp1Gqd7/49j+sjtyyfEx8eHSwZElCPMGSCbExMTI9euXZOaNWuq/8+aNUsSEhJSfE3v3r2lUKFCsmPHDrl06VKK+xo3bixNmzYVPz8/2bhxY4r7PDw85J133lH/XrBggYSHh6e4/5VXXpFSpUrJgQMH5OTJkynuw3jatWsnDx8+lBUrVqS4z8HBQfr27av+vXLlSgkMDExxf6dOnaRSpUrqe+J7J7d73xHpPfj7DJ+PmvWayoEdm2TSpEnqd06uTZs2Urt2bfUc4LlIrmTJkmo2Ac8dnsPU3n77bSlQoID89ddfcvXq1RT3NWnSRJ599lm5deuWbN68OcV9BQsWlDfffFP9e+7cuRIVFZXi/h49ekjx4sVl7969cubMmRT31alTR1q3bi3+/v6yevXqFPc5OzvLhx9+qP69bNkyCQoKSnF/ly5dpHz58nLs2DE5fPhwivuqVKkiHTt2lNDQUFm0aFGa37V///6SN29eWbdundy7dy/Ffe3bt5caNWrI+fPnZffu3SnuK126tHTv3l1iY2Nl9uzZ6nO1atWSFi1aiJOTU5qfQ2StGAyQzQUCOBHggF22bFnJnz+/VKxYUU2lJ+fo6KhuixUrpg7UyRUuXFjdurq6qhNwcvicSbly5SQ6OjrF/S4uLurWy8srzWOLFi2qbnESSH1f8it2nEA8PT1T3O/u7p50Ik392F17D0p8XJzkc0j/7RoZEaZucbLCyR0BjQlO5oDPpf6+psAhT548ae4zBTCAE3fqYMv0HLq5uaV5rOl3AZycUz//OKlDkSJF0jwWnzN9Ter7TH9TKFOmTNIYTDAW0++V+rH4HUy/U3q/q8kzzzyT9H1MTM8nnsvUj8XrABBI4D4EGwgYMEuDgJQBAdkKLhOQzQUCSKZ76623VDBgBAsXLZJjVx9L+y6vp3v/uMG95PSR3UknpUaNGskLL7ygPpo3b5508iVt3L59W5YsWaJmkBgQkK1gMEA2waiBAMTHx0udhs1k6DezpUjxUinu27T8V1n1+2Tx8ioo3t7esnPnTvn777/VkgCWInCVi2l3U3CAJQPMBJBlMSAgW8NggGwC1p2x1o41eSMFAiZYPx8yfJTUafScNGzeQYIePZCje/+Si6cPS2R4qKxZsybFbgJM658+fVoFBvjA+jyWPEqUKCHPP/+8Cgxwi5NVVty/f19+mz1XQkJDpF2b56Rz585MVsxCQLBv3z6VI8FggKwdgwGy+hmByMhItcaOl6qRr2qnTJkiQ4cOTfE5rJ3j80/bVojncP/+/UnBgSn5EUmPplkDJBsiByM5rPf3HThUYh08pU2nnpKQEC/b1y2Uc8e9ZeI3X8lrr71mgd/U/jx69Eg9twwKyFoxGCCrXxqIiIiQfv36qfVwI5s6daqMHDlSNm3apE4u2A3w3HPP5egKPSAgIGlJAR+4ikVyHXIMTMEBdl181H+wtOreVwoXeZKAZ+Lrc0UmjXhXZk79kfUNngKzNDNnzlSJiFwyIGvFYICskpFzBDKC0sO4wk+9RTC3cAjAVk1TYIAgISQkRF3Jvvz2J/LqO5+k+7g5P34uZw79pbYXcskgc8whIGtn7EstskoMBNLCdD22rGGd39yw9IJ9+AMGDJD169erOgmoddCiVWtp3/WNDB+H+5BLgHwEyhxew3gt4zWN1zZe40TWhMEAWR2cYFB0hoHAPw4dOqQKIGH63tJMywU1atSUhPj4THc5YF4RswmpCwtRxgEBdnlgmYbImnCZgKzq6hcnIlypIvOd++P/MXbsWJk+fbo6iWg1JY/qjMs27ZFeH41M9/5Z/zdc/t64JKkYE/IXTPkGdevWNXyOR2avcxRQQi4BAqrkxZSI9MJ3K1kFTJsuXbpUlb4FBgIp/fe//5UOHTpoujaPHIXTh3fK/Ts+ae67cv6EnD7irXYzYGfChAkT1NgQtDRo0EBtYcTa+Lx588TX11ezMdsC08n/zz//VK95LhmQNeDMAOmOOQKZCw4OVmVvkZFu6m+gFdQvGPzpKGnU4nlp37WXxMXGqtmAU4d3i/+926p9cvLdBJjROXjwYFIyIvoE4BBTrVq1pNoGqBVhKpOcldfG/Pnz1dIR+knge9hLsiKTCsmaMBggXTEQeDpsJUQzHGT8Z1ZX31LQvOfjjz+WgICHkiiJEhcbk+X6BtgCid0JmNlAcHDjxg11Mjed2PGBpkfpTZWPHDVGTl64Ic91fE2cXd1l71/r5Oq5IzL+6y+kZ8+eYg8YEJC1YDBAutqzZ4+q0sZAIGM4EW/ZskWdSPWCtW3sGkCDqNzUN8DvkHwLIzoPYv9927Ztk4IDzCKMGv2VOBapJo1apkyY9L97WyYMf1um/DjRbuobmAICPAfodkikBwYDpCskUSG7Gt0FKX1on4uTr6lFrr1AgHHixImk4AAVEpFch6vkynWay5CvZ6b7uA1LZsp/189VJ1F7WTLAewBLQUieNXqlTdIHEwhJt6UBFKtBxjkDgYz5+fnJpUuXNNlSqDWcyJ999lkZPXq07Nq1S80SbN26VerUqSMtO3TP8HEvvvKuREY/mamwF2jdjADg+vXrrENAumAwQLoEAuj3zqufp8NaO54nJN3ZO3d3d+nUqZP6XR2dM147d3B0VEEkZhIws2RPkDuBIJkBAWmNwQBphsmCOQsGsFUPV45G0ahRIzmw448M79+9dbU8CrwvY8aMkaJFi8q///1vmTNnjgowbR0rFZJeGAyQZlDEhoFA1mHtGMGAPS4RZAYzAz6XT4vPtQtp7osMD5O/Ny2RZ555Ri0tDBw4UNUxQCOrChUqSOXKlaV///5qB8Tjx4/F1gOCP/7IOCgiMicmEJJmUGIY+9CxLY2e7uzZs6qSH5LrLNGTwJqhfsEnQ0dK8/b/kpd6fiBOTs7ivX2t7P5zlVy7eCpNfQOc+NG7wZSMePXqVbWUgJwEPHcIqFBiOatb95DciB0cmG1Am2cEKFonKyLIwdJJ4cKFNf25ZEwMBsiiMM3p7e2ttk2x7Gr2/Pzzz/L555+rxDpXV1cxGlN9g9DwKMmbL58EPwrIcn0DrLubahvgFs2XcGJt06ZNUnBQq1atdPNWfvp5iqxYu0Wq1WsqXkVLyoVTh8TnyhmZMG6MLvUNEEBjFqR9+/asQ0AWw2CANMkReO+999T+dMq6l156SW21wwnNqMxR3wBJhqdOnUoKDvD9cILF9zMFBrjF/6dMnSZ7jl+VtweMSfE9Hgbcl4nD35YfJ32teX0DvH8WLFjAwkRkUQwGyCKYLJj7569QoULy1VdfyWeffab3cOxKZGSkKnRlCg7QWwGwHJDXpaB8M3Nduo87tGuzLJn5tdy+5aP5kgErFZKlMYGQLHI1x0Agd1DfPyIiwnDJg1rAkgue1++++04VPUIuy/Lly9USRIVqdTN8XJM2L4mDc35d6huk3mVgb1sqSX8Oeg+A7A+umpDVjTVOBgI5g6tWJI7Vr19f76HYPWxP7NWrl1o62OJ9JsOvQ0Kig6OTmklA7oHWdTJMAQGWTNgemsyNrygy69T2lStX1L9btWrFQMAMLYt50NdOuXLl5NaNixnef/f2dQm47yfDhg2TihUrSp8+fWTVqlUqOVEreE+hyRNcuHCBdQjIbHikIbPmCGDLF6a3KeewTe7IkSNcItAYkhMD/K7LxdNH0tyH1KrFv0wQD3cXWb9+vXTr1k3lHbz++utqZqFx48Zq5weaL0VFRVl8rGFhYapuBwsTkbkwgZByjcmC5rVhwwZ55ZVXVIc/FNIhbbczDhw8XDp06SVdXv9QXFzdVV2DVfN+klOHd8vKFctT7CZA74jkWxiRf4CcBAQWpi6M6LWQ1Rke5NugkydqDCCHoXXr1hkmKzKpkMyJwQDlCgMB80NVve3bt8u1a9f0HophA4JBgwZJbHxecXRxluCHAVK4kKdMnTo1022FOJSiUJSp8BFO6ti5gEZcWPIxBQelS5dO9/GLFy+WiT9MkWcqVJdChYuJ/z1fuXvrsoz/eoyagUgPAwIyFwYDlCtYEkAmNg5yDATMo1q1aqri3a+//qr3UAzLHPUNkJB44MCBpODg+PHjKmCoXr16Um0DFOMqUKCALF26VCbPmCuf/d98cXJ2Sfoejx8FyKQR78iErz/PsOARAgIUJULA4OLyz2OJsoPBAOV4RgAHOw8PD/ZfNyMc2JHItnr1aunRo4fewyEzQqIhcgpMywo3b94UBwcHadKkifjeC5RJc7aIm7tHmsehR8PPX3wgN29czTAgMb0Hg4OD1TIFZwgou5hASDleGsAHAwHLtCzGtkyyL15eXurq/rffflP5IFgGmj59ujrBl6lQLd1AAMpXrikeXiUyrW+A1wxqD2CGgUmFlBMMBijHOQKdO3dmIGCBYAAtfNmcxv5VqlRJdVtEl0UXt/yZfi0SGbFkkRkkKXbt2pXtjylHGAxQljFZ0LJwZWfElsVGh5yEB3dvZXh/XFysBNzzzVJvj9SVChkQUFYxGKAswzaq+/fvMxCwEGSiBwQEGK5dsdEhOTE44K4c3bs93fs3Lp0l8dGh6uuywhQQYJsj3q9EWcEEQnqquLg4ta6JJQEUVGHGsmVMnjxZxowZo1oW8zk23nbG/oOGSuee78tLr70njk7OEhEeKmvmT5Fdf66Ueb//lu1uiUjwdXZ2Vnk9eA+zhThlhsEAZWlpAFcbTGqzrE6dOqkDN2oMkEELHg0cKHkc3SS/h6c8DgoUxzzxKskwN22T8XpCvgHrEFBmGAxQhpgjoB1cxaFl8bhx42TEiBF6D4dsuL5BaixMRFnBYIDSxUBAW7t371aFhtARj50KydwYENDTMIGQ0rV//34GAhpCEZoiRYpI3bp19R4K2aHkuwwOHz6s93DICnFmgNKFhCNUTCtevLjeQzEEtKVFU6IVK1boPRSyY9itguJHbI1NqfEVQSmWBnAywtUDyqQyENAGdg8cO3aM9QXI4tBuGYHArVu3WIeAUmAwQClyBFAmFbMCpB00mUHBIdYXIK1gm7CPjw8DAkrCYICYLKgzVB2sUqWKalBEpAVWKqTUGAyQ2t/MQEDf5EHOCpCeAcHGjRv1Hg7pjAmEpA4GWBpgIKA9TNUicXDt2rW5KixDlJtth6h4WaxYMb2HQjrizIBBYVoQa9UIArD3mIGAfksESOhCjQEiPeC9j0AgNjZWvR65ZGBMDAYMnCNw8OBBtX2Q9IODb+PGjVX1QSI9BQYGypEjR5hDYFAMBgyeLMjtg/rBDoIdO3ZwSyFZBZQ/ZlKhcTEYMBAsCXDXgPU4ffq0uhpj8iBZ6y4D9EogY3DQewCkHTQ8MXUfZCBgHUsEbm5u0rx5c72HQpQmIEBiYW6bJJHt4G4CA8B0n5+fn1SsWFHvoVAyHTt2VAfbrVu36j0UogxduXJFypcvz+ZGdo7LBAbJEVi1apVERUXpPRz6H/wt0KqWSwRkzSIiItS2V+YQ2D8GAwZJFkTbUuwlJutw4MABFRAweZCsGZax3nzzTSYVGgCDATvFEsPWX3UQe7tr166t91CIMsXSxcbAYMBORUdHqw8GAtabPNihQwe2kiWbCgiwu4CNzOwTEwjtDKJ2VBJzd3cX/GnRnYysCwo9oZXs3Llz5b333tN7OERZZjqmhIaGirOzM5MK7QgvS+xwaWDFihUMBKwYykDj78PkQbI1OKbgtYvjDJcM7AuDATvMEUBSGgMB614iqFatmpQpU0bvoRBlG44tnTt3Zg6BnWEwYAeYLGhb2LKYbB2TCu0PgwE7aYN77949BgI24MaNG+qDwQDZS0Bw//59VdSMbBsTCG0YMntN5UJRHAR7gsm6zZkzR/r16yePHj0ST09PvYdDlGuol4EaJjiV4Jjk4MAq97aIMwM2CtNyixcvVlXsgIGA7SwRNGnShIEA2Q1TMTMkxi5ZsoRLBjaKwYCN5wiUK1dO7+FQFrFlMdmzypUrM4fAhjEYsDFMFrRdJ0+eVMsDzBcge8SkQtvGYMDG7Nmzh4GADW8pRDGoZs2a6T0UIosHBPv379d7OJQNTCC0MaguGBgYKCVLltR7KJRNWB5AxbYtW7boPRQii3rw4IF4eXkxmdCGcGbABmC6DS2I/f39xdHRkYGADYqMjGTLYjKM4sWLq0AAMwSoiMolA+vHYMBGcgSuXbumGg+RbcKUKf5+TB4kI0FTI9TVYA6B9WMwYEPJgixfa9tbCnG1VKtWLb2HQqQZJhXaDgYDVmzNmjVMFrRxJ06clM8+HyMrVq2VmjVrqu2FREYNCNatW6f3cCgDTCC0Yrdv31a3DARsD0q0Dv1srJSp3kTqN20nIY8fyqblv8rl0wfkh/+bIK+++qreQyTS/HiGPIJSpUrpPRRKB4MBK4NptEOHDkmrVq0kb15O3NgilGTt/d4A6dnnK8mXKpv68J5t8svEYbJg3hwGBGTYPAIk07Zs2VLtriHrwLONFeYI7Nu3T20fJNu08Y8t0vT5nmkCAWjaupNUqdVAhgwZooIGIqN5+PChHDx4kDkEVobBgJUmCxYrVkzvIVEO7di1VypUrZPh/RWr1hFfX9+kvhJERoJEWiYVWh8GA1ZSSIglhu1HeESE6uCWkfi4OHW7c+dOHgjJkFLvMsDSAemLwYAVQFINCgkxELAPjerVkrPHMr7qv3bplLr99ttvpXDhwtKlSxf5+eef5dy5c5kGEUT2GBDg1tSKnfTDBEId4arw3r177DxoZ3CV06hZWxn53QJxc/dIcd/mlXNk+ezvpIhXIVm7dq2aHUDPAiwZoCgRgkJUKTR9MPOajALFiUqXLs2kQp0wGNA5RwAlhgcPHizOzs56D4nMaPny5TJ67AR5tlVHadKmswQ+uCO7t6yScycPSERYiKohkXw3AcoVI3EUxYnwcerUk9kDFClC1UJ8tG7dWvLnz5+ln4/uiPPnL5CQ0BBp1bKltG/fnldfZLWioqJkypQpUqJECenduzcDAh0wGNAB2xAbAwqsfPzxx3Lv/n1J/F+xIVSRxEHvadsKESRi1sAUHCDhEH0pmjdvnhQcNGrUKE0jGMxK9Bs0VEJiHKTVC69IdFSU/LVhkdy8dEK+nzSe2xnJqusQLFmyRM2GMSDQHoMBjTEQMBZsH8QSAJaDsATw3HPPZfsKHW/RK1euqKAASwq7du2SkJAQ8fT0VFf8puCgUqVK8t5HA6VV977iVbREiu9x9vg+mfbNJzJ71nQGBGS1GBDoh8GAxoKDg2Xp0qXStWtXBgKUI7j6P3LkSNKsAYpUIejAAfTFnv3kX736pPu4KV8PlBvnD4uPjw+XDMiqA4KtW7eqYMDDI2XODVkOgwEdoD49qwuSuWCWwNvbW7774WcZ8PXv4urmnu7XHT+wQyZ8+qaaWWjbtq3m4yTKKpyW8uTJo/cwDIVnJI3gam7u3LmqFTEDATKnAgUKyL/+9S+pWatmpq+tfA5PZgNQ/Y0Nk8iaIRDA0tivv/7KGgQa4VlJQ0gCi4iI0HsYZKfatWklO7eszPD+vX+tV7ejR49OytqeP3++el0SWeMOAzT8Im0wGCCyE//u2VMO/HedhIU8TnPftYsn5dzx/Wof919//SUffPCBuvLCLXJXqlevrnY+bNq0SS07EJGxpO2kQkQ2CUmBX44aJp9/3ENaPt9d2nbqKTEx0bJ1zTw5une7BNz3U4WOTLsPJk2apJrGmLYwbt68WWbMmKG+T7NmzVTRI3xdkyZN1LbGrMCU7sqVK9UVXf369VVuApMViawfEwg1goPk+PFP9nnXrVtX7+GQndc3GDRokISGR0pCfIJEhIdkub7B9evXk3YpIEh4/Pixyuhu166dCgwQIFSrVi3d5K7Pvxgrh05ekIYtnheHfI5yeM9W8b1xQb6f+I289tprFvyNyR6dOXNGvZbHjBmTpp4GmR+DAY0gYevs2bNqSrZQoUJ6D4fsnDnqG+B7HD9+PCk4OHDggGqqhcDCNGvQoUMH1WHzs8/HSL7C1eTZ5zqm+B5Xzp+QKWMHyMxpk1nfgLIFgeidO3ekRo0aTLrWAIMBIsqS8PBw2bNnT1JwgMZKgJkur9LV5eMvp6X7uAXTx8lx701y69YtLhkQWSmGWxrODBw9elSt0RLZInd3d+ncubP89NNPapYLVTQXL14sbu7u0r7rGxk+rkvPD+RxSJiaqSDKqoCAAG6D1RCDAY3gBb1lyxY17UVkD0xttzu+0FHc8hfI8OucXVwln4OjWrIgyiq8XrZv385gQCMMBogoV5o2bSJ7tq/N8P69f2+QkKBAFTwQkXViMEBEufLiiy/K5dMH5VHggzT3RUaEi/fW1SrpEEmMRGSduF+DiHIFSYHjvhwlnw19Q57v9qa80P0tyZs3n+z5a61sW7dQrl08peobWDJ5EDsfduzYoaopVqxYUVq3bs1kRaJsYDCgEezLRovZ/Pnz6z0UIrP797//rfaCv/POO7JhyUzJkyevPAy4J888U0oFApbcVjh9yk+yedmv0qCilxTK7yJ/Lb4vH98Jk3H/N4X1DWy850ZGNS3I/Li1kIjMBpULEfCizHFO6xtkx7Qpk8XvwGr5vk+7FJ8/e9Nfen67QSZOmcP6BkRZwGBAI3iaY2Ji1NUTpy/JHuH1jau57777TgYPHmzxn4elgS4tasi2Celf/U/fcEz+b/15uX3bl+85G63aGh0dLW5ubpwd0AATCDWCAxdqwZ8/f17voRBZBIoQ4eD97LPPavLz0HCpadViGd7ft0sDcUmMZH0DG3XhwgX54Ycf1LGTLI/BABGZBYpq4Qq8QYMGmvw8VDQsWtAtw/udHPOJq5ODXL16VZPxENkyBgNEZBZHjhyROnXqiKurqyY/r2rVqnLk0t0M7z97M0DuPAyVPn36qNmK0aNHy65du9TsBRGlxGCAiMw2M6DVEgG0adNGTt8Klmt3HqWbo/PVgj3ikr+Q/P7771KlShV12759e9UorFOnTjJ58mTVGY9pU0QMBojITE2MkA/TpEkTzX4mliQGDv9SXv56nSzYfkbi45+Urb3k+1BeHbde/jx6Q2bOnKl2Nixbtkzu378vJ0+elG+++UYFAGiNW69evaSyygsWLMh2uXCsZ+/evVuWL1+ubrm+TbaKuwk0gqcZB0xnZ2dxdHTUezhEZoUkPRT6OXXqlDrBagEnXrRRxs90dnIUT6c4cXFyEF//EHHzLCJTp07NdFthVFSU7N+/P6kLIwIFvE/RMhffF22a27ZtKx4eHuk+fsmSJTJlwhdSs7SHFMzvIr4BoXL5Xrh8+/1U1jcw098XOwqcnJy4m0ADDAaIKNcw5f7ll19KSEiI2j6rBezO+eKLL1TlQQQiCEjQ3Can9Q0CAwNl586dScEBEhTxu6B2gik4wMwHPodAYMmUr2Td16+Km8s/wf2l2w+l57fr5esff2VAQDaFwYCGUe7q1avVgaV8+fJ6D4fIrHr16iV+fn6yb98+TX7eoUOHpFWrVjJq1CgZP3682b8/DovXr19PCgwQJAQHB6s6CpgtuHHuiBya0lvcXZ3SPHb70RvS55e9csOH9Q1y48aNG2rmpnfv3nweNcCcAY3g4HLp0iV15URkj8mDWuUL4KT8xhtvqJ83duxYi/wMTEtXrlxZ+vfvL+vWrVOzBgcPHpThw4eLj4+P1C1fON1AADo2riDF3BJZ3yCXwsLCVEDG61VtsDcBEeUKTpS4itNiJwFODH379pWgoCC1TVCr/BvTcgE+ECTsW/5DpoGEp7uzWrIgshUMBogoV44dO6ZutZgZmD9/vqxcuVJWrVql23IbchJu+Wc8wxcVEyd3HoapryOyFVwmIKJcFxsqXLiwah1sSVhm+/jjj+XDDz+Unj17il6QnHj1QaQcv5L+lf8Pqw5LcKyT+joiW8FgQCN58+aVjh078mqB7DJfoHHjxhbd/oVtgEhSLFu2rEyZMkX0hGS2iT9Ok7e/2yyrvS9KQsKTNe3I6Fj5etFembHxuMyYMYNJb7lUqlQp6dKlizp2kuVxmUAjeEG3aNFC72EQmX0NHzMDKPlrSdg1cPHiRfWz3N3dRW/YNojgZ/CggTJx+UHxdHeRe4/CJCzBRWbNXcy2yWZQpEgR9UHa4NZCjSQkJKhpTkS7BQsW1Hs4RGZx+/ZtKVeunGzcuFG6detmkZ+xefNm+de//iXTpk1TywTWtmU4t/UNKH1IEsXrC/0uODtgeZwZ0DAYQNITrhgYDJC9wJU6WGonwd27d+U///mPCgYGDRok1gYnftQdIPPz9fWV9evXS61atRgMaIDPMBHlKl+gdOnSFsmFwVU3egaghPe8efNYkpbIgjgzQERWWWzo+++/V81/UG6Ya8dElsWZASLK8dIXagxYYokA5YbR62D06NHSrl07s39/IkqJwYCGSpQoIS4uLnoPg8gsLl++LKGhoWafGdCi3DBZPzc3NylTpozewzAM7iYgohxZuHChSu57/PixeHp6muV74nCEQGDbtm2qNTGbehFpgzkDRJTjfIFq1aqZLRCwlnLDZB2SX6cyedTyuEygkbi4ONVq9ezZs3oPhchs2wrNuURgLeWGyTrgWDlu3Di1q4Qsj8GAxgEBV2XIHkRHR8vp06fNljxoTeWGiYyIywRElG1nzpyRmJgYs80MWFu5YSKjYTBARDnKF3BwcJB69eqZpdzw1KlTVblhc3w/Iso+LhMQUY6CAZy4c7tV1trLDRMZBbcWagRPc0BAgBQoUIC1BsjmoV5869atZdasWTn+HkgMe+GFF1S9AuQfsMogpc5LCQ8Pl0KFCnE3gQY4M6ARvJiLFSvGQIBsHgoNYX0/t8mDpnLDS5YsYSBAaaAnReHChRkIaITBgEZwFbRp0ybx8/PTeyhEuXL8+HE105Wb5EGWG6anQfvidevWcWuhRhgMaAQHzxMnTsijR4/0HgpRrvMFkPFfo0aNHD0eFQtZbpiy8jrBrhWuZGuDuwmIKFuw/a9Ro0aSL1++bD8WB/Z+/fpJUFCQ7Nq1SxwdHS0yRiLKHs4MEFG2ZwZymi9gKjc8Z84clhsmsiIMBogoy/z9/eXWrVs5yhdguWEi68VgQCPIiG3ZsqUULVpU76EQ5WpWALI7M8Byw5RdxYsXl7Zt20revDxNaYE5AxrB+ir2VBPZejCAbYDZneL/7LPP1MzA4cOHWW6YshwM4IO0wZBLI0icwvRqWFiY3kMhylXyIGYFsrP3+48//lClhn/88UeWG6Zs1bO4du2aJCQk6D0UQ2AwoBHslUXy1I0bN/QeClGOA9rsJg+i3PB7772nyg0PHDjQouMj+3Lz5k1VkIrBgDYYDBBRlvj4+EhgYGCWkwcRAL/11luqkty8efNYSY7IijFngIgskjxoKje8Y8cOlhsmsnKcGSCiLOcLlCtXTvXYeJqDBw+y3DCRDWEwoCEPDw/VA57IFmU1XyB5ueGvv/5ak7GR/XFyclKNikgbbGFMRFla//f09FS9BEaMGJHh1+FwgkBg27ZtcurUKVYZJLIRvEwloqdCy2L0ln/azICp3PCqVasYCBDZEC4TaCQuLk5+/vlndVAlssUlAuwGQIOijLDcMJnT+fPnVRIqjp1keQwGNBQcHCyxsbF6D4MoR8mDaFmMvJf0sNwwWWJpKiIiQu9hGAaXCYgo18mDLDdMZNsYDBAlc/HSZVm0fJXkTYiTDu3aSJs2bVRfCSPDVf/p06fl/fffz7Tc8PTp01lumMhGcZmASEQePHggzbq9Ja0/nSWLA8rI3Jse0u3jb6VE2Uqybt06MTIEAli3TW9mgOWGiewDtxZqBPW10agILYzz58+v93AoGZzoGnV5Sx7XfUPy5Es5WRZyYos89l4ga5YvkVdffVWMaMaMGfLpp59KSEiIKi2cfE0XnTgvX76sAgZWGSRzwu6VoKAgeeaZZ1jKWgOcGdAIenJXqFCBgYAVWrh8jQSUbZsmEIACDbuIU/FKMmTIEHXyM2ryIKb/kwcC8N1336lyw2gmw0CAzA25J6VLl2YgoBEGAxrBiQQ12u/du6f3UCiVtX/vFSevMhne71Ssgvj6+srevXvFqMmDqZsTodzwV199JV988QXLDZNFYAkKxauMGoRrjcGARrAag5NJQECA3kOhVKIiozL/gv+tpOGkaLRVNWyHxS6B5PkCycsNoyIhkSWgQ+ahQ4cM957TC4MBMrymtSpITMCtDO+P8fdRtyNHjlTTlu+++64sXrzYELM8x48fV7emYAAH5n79+qmAYNmyZey1QWQnGAyQ4X39+QgJ37dQEuPTFoQKObZJYh5cU0HAn3/+Kb1791bJcu+8846UKlVK6tSpI8OGDZOtW7eqhCd7zBdAoaFq1aqlKDc8Z84clhsmsiMM68nwkBg3ZVR/6f/lF+Jes624VGwoccEBEnZqq0T5nBCJi5apU6dK586d1YdpKyJyQP773//K6tWrValpR0dHadGihcqwxwdK92a1RkFoaKi60kbGfuPGjaV169ZWUd8ASyOm3wOltFlumMg+cWuhRpAEs3nzZmnYsKGUKZNxshrpZ/z48fLll19KHidXSYyLEUmIV38rlNfNbFsh3kLYXvf333+r4GDXrl3q5F6wYEFp3759UnBQqVKldF8Xr703QPZcCRCnSs0kISpUws7vEvewO/LbtMm6b2fE74/ZkHHjxkmzZs0kOjpajh07xiqDZHF37txRnS87depkFYGxvWMwQPQ/CARmzpwpa9asUVf+JUuWlOeeey7bByL0n8D0OoIDfKBEL0762FqKoOD555+XDh06qF7tL/T8j1wo2kYcCxRL8T3Czu2UoJ1zZPWSBboFBPfv31fPAWY+kPz622+/qd+FVQaJ7A+DAY3gaUZ2LNZfXVxc9B4OpaN58+bqShjtd80JU//Yj28KDjCLgL3TNWvVlnulnhOPBi+l+zj/td+KV9Qd8fHx0eTKCK/R5Nu4EACg2NCYMWPUrMnw4cPVLgLu+yYtREZGqkTVEiVK8DWnASYQagQHWVx1XrlyRe+hUAZb6HA1jyt3cytQoIB069ZN1e7HNr3bt2/L3LlzJTKPi+Svm/HPc630rPj5+WlW3wCvUSRGYssgPhAIAAIBwDIX93yTVq5evapmo/ia0wYTCIlE1Do/SkZjCt/SMPuAev7r/94np/Nm/BZE7oKpr3vbtm1FCwhWTp48qcnPIiLrwZkBIhGV+FexYkW1rq+VF1s3kYirhzK8P+r6UXU7aNAgqVmzpgwePFhdnSM5kYjInBgMEImotXxLLBFkpt9HH0rMmT+f7FxIJfr+VYnyO6+atCxfvlxatmwpGzduVN0BkXiIxMZvvvlGlQVGoyUiotxgMKAhJIExEcb6YA0fuRxaLBGkfj3MGDtUHqz4Qu0eQFAQHxEsQXsWS+Cm7yU+JECmTZsmvXr1UkV+bt68qdZR8Tl0v/zpp59UXQMvLy95+eWXk3JSspMTjEBiw4YNam3WVG2QyFqau6VujkWWw90EZHioqvfBBx+o3R646tbaunXrZMDAQRIYFiOJCXGSEBGcpfoGOJHjBG7apYBZAmxrLFu2bIotjAgc0jP4szGycMteyVPiSXVBh4c3JX/UA/G5dDbdr2/QoIGMHj1aBR4sQ0xkXxgMkOGhqA6uuFFtTy/ImMauAfQ7yGl9g7CwMPH29lb5DwgOkHhoOombCh9hucHV1VX6DB4pG3ydxK1q8xTfI+r6YQnYNlMSwh6l+f74PhATEyM//PCDKgbDmS4i+8BgQCO4isN2MlSkq1Klit7Dof/BDgLsY8bMwKRJk8TeWsCaAgPcoogQalygnsLxICcp9OLH6T4ufOdvUjrWN82Jvnr16vL555+rhMY9e/aomQcEBfXr19foNyIjQT0OvG779u3LmSgNMGdAQ7jqQyENsh5nz55VbaW1Th7UAhopoW4AOiwiMMDvOnHiRLnzwF/c6j3psZAex5odJDQiWmbNmqVqL5g+Fi1aJLVr11YFlJDM6Ovrq8prY5sk6iEQmRNKX7Plu3YYDJCh4coDV8tIxLNnuMrHiXzo0KHS8cWXJJ+rR4Zfm9fVQ274+MiNGzfUFVnyD3wffKCIEoKLGTNmqO2OVatWVeWcue2RyDYxGCAxejCA9XkjlYhu06KJhF/an+H94Zf2SWJMpMpdyAy6NA4YMECuXbsmQ4YMkR9//FEqV66sdiZwuyORbWEwQIaehkTCnT0uEWTmlVdekcRbRyUhJu2SFT4XcWmv2s2AICkrPD091fID1nhffPFF6devn9StW1e2bNmSrW2ORKQfBgMa7pnt0aOH2vZF1gFb8ZDDoXV9Ab1hl8Iv40eJ/8ovJfzKQXXCxgf+jc/F3L+mtjVmdzcDXtvIK8B2RyRldu3aVW1tPHHiRLq7J1ACetmyZSoHgfXnKbVy5cqpxlg4dpLlcTcBGdYXX3whs2fPVu2KjXjAQX2D/gM/lkfRT3YNxIU8kDKlSj61vkFW4LCCmYERI0aofgdvv/22TJgwQc04zJz2s6yd/pXULBgtLg4iFwIT5Fqkp/zftDm6tWsmMjoGAxpuYUNGdqVKlTIsAkPaatq0qepFsGLFCjEqc9Q3yAxyB37//XcZO3asauXctlVzqRm+X358wTnF1sXt1+Kk7+ZI+WneGgYEpPj7+6ulJ9TGMGKwrjU+wxoGA9u2bVMHXdJfUFCQHDt2zHBLBKnhxI+OiJiOxa05AwHADgTkECDJcNiwYRJ9bU+aQABerOwgb9V1lE8++YRLBqSgLsaOHTvUsZMsj8EAGbplsdGSB/Xi4eEhzz77rLxU5cn2xPSMaOEsCcF31UwFEWmLwQAZdkshtsEhSYm0gboF5QtmfMjxdMkjbo5PGkcRkbYYDJAh6dGy2OhQ9Mj7Vsb1B47djRP/8ETp06ePdO7cWXVlRGEjpjURWR6DAY1gahRV2jBdSvry8fFRa9hGzxfQGrYZHvJ3kUeRaU/uOOF/6x0jrgWLybhx41TeAHZ7oF4BEhvfeustWbhwody5c0eXsZP2UL+iVq1abIalEe4mIMNBwyhcfaJlcaFChfQejqGsXLlSJg97UyZ1cJb2FfKpA/3t4HgZ8Xe0bLgUJ8tXrU3aTRAVFSX79+9PatF88uRJFTTUrFlTBXKY2WnTpk22AmxL754gslUMBjSCpxkFbpycnNiBS2e9evWSmzdvyuHDh/UeiiGtXbtWhn3cT4rII3HKJ3IjKEGcCpWWqVOnZrqtEMEbsstNnRhv3bql3kvowmhq0dy4ceMM319Lly6VHz4fIFU9IqSAcx65FZwgN6M85fvprG9gjdAqG8fMAgUKcHZAAwwGNIL91uPHj1cHHUx9kj6wg6B48eJqZgBFcEgfub1Cx2ELSz2mWYOdO3eqOgaYWm7Xrl1ScIAkUZxIlixZIovH/kdW/9tNBQImO2/ESd8tUfLdnNUMCKzMmTNnVGGsMWPG8AJKA3yGyXAHGFxhMnnQOuob5BRO8FWqVFEfaJaEYBt1I0zBweDBg9XnsFukffv2cvKvFbL/XTdxc0x5hdm+ooOMbOEknwwaIN27d+eSARkWEwjJUHCicHV1VVPLZD9w5disWTPVRnnPnj3y6NEj1Vr55ZdfVrMGdb3i0gQCJu81cJSCcQGsb0CGxpkBMhSsN7du3VqcnZ31HgpZEJIKu3Tpoj5QdvrotHcz/FqHvHmkoIuwOigZGmcGyDCQnY6rRi4RGAtyEu6EZpwaFRGbKA/CEtXXERkVEwg1gqc5OjpaHB0duS6pE0wXY6/7qVOnpF69enoPhzRMVqxf3kv+7BEnZTzTvve+2hUlc68VUZUP+d60rmRfHDfRpIi7CSyPMwMawYvZxcWFBxudlwiKFSsmderU0XsopCG85776aY50XxEph/z+qYAYE58o/7cvSmYfj5Xp06fzvWllEATgb8JAQBvMGdDw6mT58uWqHSfa5pI+yYOYGWA7VOPp2bOnOql0/+hdqewRprYX+gYnSpBDMfll0UxuK7RC169fV8t6b7/9NrcWaoBHRY2Y9kWHhobqPRRDQnb58ePHWYLYwHr06CGVa9aXfOVbyjvfLJYZq3bIbV8/BgJWKjw8XBWWIm0w3CLD5AsgIGMwYFwoSoSqkzNmzJA33nhD7+EQWRXODJBh8gXQKKps2bJ6D4V04u3trZbrGBASpcVggAwTDHBLobHhNVC+fHmpVKmS3kMhsjoMBjSCpLWXXnpJSpUqpfdQDAdNiZCMxCtCY0MCKV4DzE63DaVLl5Zu3box4VcjfJY1ghd0kyZNpEiRInoPxZBXhHj+c1MLn2zbnTt35OLFiwwIbUjhwoWlYcOGDAY0wmdZwwIaaJITFBSk91AMeUWIQKxgwYJ6D4V0gtbHgK2lZDs7gE6cOKGOnWR5DAY0ghc02nH6+vrqPRTDPe84EfCK0NgQEDZo0IAzczbEz89PNm3axGBAIwwGyK6h9DCuMJg8aFzYUsoEUqLMMRggu78idHNzU+1tyZjOnz8v9+/f5+wQUSYYDJBdwxVhmzZtxMnJSe+hkI6vAbSsbtWqld5DIbJaDAY09Mwzz4irq6vewzCMyMhI2bt3L6eHDQ7BAAIBvvdsi7u7u6oLwa2g2mALY7JbpnVi7OJgp0JjiomJUVvUxowZI6NGjdJ7OERWizMDZNfBQPHixaV27dp6D4V0gl4EaHjDfAHbg10EcXFxKgGULI/BgEbwoh43bpy6SiVtsOIc4TWAmQFsKyTbcu7cORk/frzqJ0GWx2BAQ4xwtRMYGCgnT57kFaHBYXaoffv2ki9fPr2HQmTVGAyQXWLLYgoODpYjR44wgZQoCxgMkN1eEVavXl01OyFj2r17N1sWE2URgwGyS6w4R3gNVKhQQSpWrKj3UIisHrcWagRPM8ri5s+fXxVAIctBu+LKlSvLxo0bVQtUMibMDKHg1G+//ab3UCiH20KjoqLEw8ODScAa4MyARvBi9vLyYiCg0RUhEsZwIiBjQkOwy5cvc4nAhqFqaIECBRgIaITBgEawdrl+/Xq5ffu23kMxRDDQtGlT8fT01HsopBN0qsRJBDsJyDbdunVLVq1axa2FGmEwoOEywenTp+Xx48d6D8Wu4cDBlsWE+gINGzZUs3Fku7tBLly4wC3ZGmEwQHYFtQWCgoKYPGhgppbFDAiJso7BANndFSGSNLFMQMZ09uxZ8ff3Z0BIlA0MBsguWxY7OjrqPRTS8TXg4uIiLVu21HsoRDaDwYBGkMyEk1SxYsX0HordioiIkH379vGK0OAQDDz33HMqICDbVaJECbXUkzcvT1NacNDkp5Da6tauXTu9h2HXEAhgbzLXio0rOjpavL29ZezYsXoPhXIJF068eNIOQy4N23GiGE5oaKjeQ7HrK8KSJUtKzZo19R4K6eTQoUNqhogBoX3sJrh06ZI6dpLlMRjQCF7Qixcvlps3b+o9FLvFlsWE1wC2E9avX1/voZAZ6gysWLGCwYBGGAyQXQgICJBTp07xitDgMDvUoUMHrjMTZRPfMWQ3LYuBwYBxoaDX0aNHmUBKlAMMBshupoeRK1CqVCm9h0I62bVrl5pSZkBIlH0MBjRUqFAh1XyDzNuQ5sfJP8uaNWtUlzrWMTf2EkGlSpWkfPnyeg+FzABN3YoWLar3MAyDLYzJZnMEXvlomFyKcBOnMnUl9qGfhJ/bIR4R92TWjKny6quv6j1E0ljVqlVVvsCsWbP0HgqRzWEwQDYHtQQa/+sdCa7bS/LkS1lpMMh7oYQcXS9rV61kQGCwzHPMCGCG6LXXXtN7OEQ2h8sEGomLi5MffvhBdeGi3Pl98Qp5WP6FNIEAFGz9tjgVrSBDhgzhkoGBsGWx/Tl37pxMmjRJHTvJ8hgMaCg8PJwvbDPYsPOQOBYqke59efLkFcdiFVQuwd69ezUfG+mXQNq4cWOVl0P2AcmgqChJ2mAwQDYn8ikHCAQEgOplZIyTBmYGuIuAKOcYDJDNqVW2qMSHB6V7H1JgYgJ81L/79+8vdevWlU8//VS2bdumytSS/Tlz5oxKKGV9AaKcYzBANuf7r0dLqPc8deJPLfT4ZokN8FH1BlD+uVGjRrJy5Urp3LmzmkJGs6iJEyeq4jTMKbCfLYWurq7SvHlzvYdCZLO4m0AjeJr9/PykcOHC4u7urvdwbN6Mmb/IiB9/F4+GXcWlTC2JDfZXuwiibhyTxKgwlVVu2k2A5x5LBjhpYG0ZxWnCwsJUcICtaJhexlVlxYoVs/zzo6KiZO3atRISEiI1atRQLXPRmZK016lTJ/U33r59u95DITOKjIxUVSXRypj9RiyPwQDZrHXr1kn/gR9LYEiEJMZGSmJstJQpU0amTJmS6bbC2NhYOXz4sAoM8HHkyBE1S4BgAEEBggNkpSNwSw1f9/qHg2THWV/J90wtSQh/LJE3jotHtL/8Oj3zn0vmh6AMf6dvvvlGhg8frvdwiGwWgwGN4CSCK9M6deqwZK6Zn1fsGrh3755qX5yTK3S0St29e3dScHDlyhV1JYLsdFNw0KJFC1UR7fme78rFIm3F0TNln/XHB1dLyKFVsmb5EgYEGsIsDwK3kydPslOhnblz545qPoaZH866WR6DAY1gS+H48ePViQJJbWS9bt++nbSkgNvAwEBxc3OTBg0byWXPxuJeu0O6j3uwcowUjX+o2lTz4KWN0aNHy++//y73799np0I7TAzF7N+YMWPEwcFB7+HYPb57iFIpW7asvP/++7J8+XJ58OCBnDhxQsaOHSs3A0LFrWbbDB/nXLo26xtojC2LicyD7yCiTOAk06BBAxk5cqTUa9BQ8uTN+Io/r7Obur1x44aGIzSuoKAgOXbsGOsLEJkBgwGiLGpWt5pE37ua4f3Rdy6q248++khat26tktoOHjzIqpMWsnPnTrWLgPUFiHKPwYBGTAlp6WWok234fPhQiTi8UhITE9LcF33/mgoGkMQ4depU8fLyksmTJ6vEwyJFisgrr7wiv/zyi1y9ejXd+giUsyWCKlWqqGUdsj9436B2BLcVaoMJhETZ8OvsOTJ00iwp0LynuJSpI4lx0RJy7A8JP/e3xD26q2oPmHYTYEYAxY1MyYimWQKcvHA1iw+sd+Ogl53dE7giRsIctlEaub5B5cqV5cUXX5SZM2fqPRQim8dgQCN4mpGM5unpqaqlke3CCb//oMESFJUgifGxEh8amKX6BqGhoeLt7Z0UHJg6WCInwRQctGrVSlxcXNJ9/PDRY+X3DTtECpaWxIR4ibl/VTxiHxmyvgF2bKAuBLLNMetC9tnY7dGjR1K6dGnODmiAwYBGuLXQvpijvgH2USMwMAUHCBYRCOB7meob1KtXTyUx9hk8Utbfzifu1Vql+B4hx/+Q4H1LZfXShYYKCLCdsG/fvvLw4UMpWLCg3sMhC+DWQm0xGNAIgwHKDN6G6N9uKny0Z88e1VipaNGiKhnxvz7RUvD5fuk+NmDDJCkcfkt8fHwMs2Tw+uuvy61bt+TQoUN6D4UshMGAtphASGQFMA2K6pTDhg2TrVu3qulRVNfDzoSDx06JW8OuGT7Wvc7zqu+FUeobsGUxkfkx3CKyQih93LZtW/XhGxgiu1wzngp38CgikjefKnhkBChRi+UBbikkMh/ODGjIycmJldIo29o0aySR149meH/E1UMiCfFqDb1bt24yffp0uXjxot1uYUSOBcpDN2vWTO+hkAVhyYsdXrXDnAEiG0hW9KreVDxf/lLy5Es5mZcQEykPln0uhSRUBg0apLYd7t+/X2JiYlQWtqk9M26LFUvZXMlWdezYUZ0osJxCRObBYIDIBsybN18GfjtNCrZ5V5xLVFFX/VG3z0rw3sWq2FHy+gbYkoX8AVMy4tmzZ9Xnkbhq2sKIHQu4utZy94S5WhYXKlRIJkyYoPIriMg8GAxouJtg9uzZqshMtWrV9B4O2aA1a9ZI/0+GSnC8E7YfSGzQHSldopiqeJjZtkIUKELCnSk4uHv3rlqyQk0D08wBah1kdHKfPvMX+WryrxLrUVL1ZogNvC0F4oPl1xmZ/1xLMCUOnj59mrty7NylS5dk+/btMnDgQO4m0ACfYQ35+/tLdHS03sMgG9WjRw9VYCe7V+glSpSQN998U30g9kc+gam2wcSJE1UbYJTJRqBqWlKoUKGCeuwPk6fIt8t3S6GeEyRPnn/yXULP/CU93/lAVotoGhBg3FjuwM4Lsm9Y6kIzKtIGgwEiG4ITP3YY5GYLY82aNdXHJ598og64hw8fTpo16Nevn9q6V6lSJRUcLN91Ugq98lWaCnAedTtKzL0rMnjwYOnevbtmSwYYI4IVVqQjMi+mthMZGJYLMLtg6rCILXvr169XNf83btwojhWbZHjiLdC0h9wNfKxZfQOM7cSJE6wvQGQBnBnQCA6oOPCiOAzXOslaobTvyy+/rD6eeeYZmXY+40OEQ4GiIo4uaslCy5bFDAaMAa8rHDM5C6QNBgMawTTqu+++yxbGZDOwLh/15wpxKVMr3fuj/S5KQmSoyl3QKl8AybdoCkX2D8theA0apcS23rhMoCFcaaFj4ePHj2XDhg0SGxur95CIMvTSSy+J3D0nCbFpk15xhR5yZJ2ULlFULTNoFQyw6qB9wzER22SxJIQqnKVKldJ7SIbBYEAHISEhqn3tsmXLGBCQ1cIV2fRxw8V/zTiJCfyn1HF8RLA83DxZIn1Oqm2NlrxyQ32D3bt3q/bQN27ckHbt2lnsZ5G+cCzEMfHy5cuqVgZpi3UGdIKOa0uXLlWzBb179xZHR0e9h0SUrtWrV0v/wcMlNF9+yZPXQeIe3ZESni4ybdo0i24rXL58uUwY2V8qu4eJu1MeuRGUIH6xhWTqL7MN1a7ZSIEA2nq/9dZbUrZsWb2HZDgMBqwgIMALH3vAmShD1krrCoRLliyRhWP/IytecxUvtycTmDhULT4TK1/sjJGp81czILAjCATQgpuBgH4YDFhBQIASq6xKSPRP4NGiciHZ1VvEzTFtgPyNd5T8dqWI3L59m8lldgJLQKgyyEBAP8wZ0Fm5cuVUIICY7MiRI8whIMPz9vaWuoWi0g0E4NPmzuIScU+z+gZkGTjWHThwQBW5qlixIgMBnTEYsBKPHj1S2dJMKiSjw2xZWc+Ml8yQP1DINY9m9Q3IcjkCSA7FzgHSH4MBK+Hl5aXyBpBAw4CAjKx8+fJy83HGq5ch0YnyMCJRs/oGZLlkQRzzihYtqveQiMGA9S0ZMCAgo2vdurWcDXJRJ/30TNobLTHuT5IYybYDARzzyDowGLDSgMDT01Py5uWfh4wHSYHDJv0mXZdFyK3H8Umfj09IlGmHomXB6ViZPn06kwdtEP5mRYoUYSBghbibwMqhFz2WEFiHgIxm5cqVMnLAf6R6oVhxd8wjPo8TJCBvUZk6/RduK7TBGYEHDx5I6dKl9R4KZYDBgJW/gVDYBZE0CxORETVo0EC9/t9//31N6huQ5ZYG/P39VctrNB8i68NgwMqxUiEZVWBgoEouW7BggWryRbaHlQVtBxelrRyTCsmoduzYoW7Zstg2MRCwLQwGbCggCAoKkuDgYL2HQ6QJ1N2oUaOGmhUj2xMWFqaasjEQsA1cJrCxMq1YLzXNDnDJgOwVDksVKlSQbt26qbwZsh04PqGqIFoQ45a7omwD/0o2xJQ4tW7dOi4ZkF27fv26ypd54YUX9B4K5WBpAJ0ugYGA7eBfygY1a9aMOQRk90sECH7btGmj91AoBzkCLAhlexgM2CAmFZK9+/vvv1XQW6BAAb2HQlnAyoK2j8GAHQQE58+f13s4RGbNjdm5cyd3EdiQy5cvMxCwcUwgtHGPHz9WpYvz5Mmjkq5wS2TLjh49Kk2aNFEtilu1aqX3cCgTyRMEsXOAMzm2izMDNq5gwYIqADhz5owsXryYSwZkF0sE+fPnl6ZNm+o9FMoEjjVLliyR48ePq/8zELBtDAbsBGYH/Pz8mENAdpE82LZtW26dtYEcARxz2ILYPjAYsBNMKiR7EBERIfv37+eWQivGyoL2icGAnQYE27dv13s4RNmGPIGYmBgmD1r5zA0DAfvDBEI7hKm7QoUKibu7u95DIcqWESNGJE0/MxnWOkVGRsqjR49YJtrOcGbADqFnOAKB0NBQ2bRpE5cMyKaSBzErwEDAuuAYsmHDBrV7ydXVlYGAHWIwYMfwxj137hxzCMgmoN/96dOnuURgpTkCFy5cUNsHyT4xGLBjZcqUYVIh2Qy2LLb+yoLMEbBfDAYMlFS4YsUKVZiIyFoT02rVqiUlS5bUeyj0v86RK1euZGVBg2ACoUGgAxxyCGrXrq33UIjSwGEIJ5tXX31VpkyZovdwKFmZYRcXFwYCBsCZAYPAmxmBAA66J06c4JIBWZWrV6+Kr68v6wtYARwbjhw5oo4V1apVYyBgEAwGDJhUuG3bNuYQkNUtETg4OEjr1q31HoqhmXIE8PfA9kEyDgYDBoP6A0wqJGvcUti8eXPx8PDQeyiGlbqyoJeXl95DIg0xGDAgli4maxIXFye7du3iLgIdscQwMRgweEDg5ubGAi+kK3S9Cw4OZjCgI7QhRrMzBgLGxd0EpAQEBKh2yOwUR1obP368fP/992qNGnkDpO2MwMOHD6VEiRJ6D4V0xpkBUtO06EvOJQPSA5LV2rVrx0BAp6WBpUuX8n1PDAZI1EEY+7uZQ0BaCwsLkwMHDnBLoY45Aj169OCMIDEYoCeYVEh6tSzGa435AvqVGGYdAQIGA5QmIMAaIvcYk1ZLBOiAh+I2pA0kawYFBTEQoBSYQEjp5hBg6SA+Pl4SEhI4hUgWU7duXWnUqJHMnz9f76HYPdNsH97PeG/ny5dP7yGRFeHMAKVhSuRC/3IuGZCl3L9/X86ePcslAg2XBtatW6f+z0CAUmMwQBlq3LgxcwjIYtiyWPscAVR5JEoPlwnoqd0OsfUI67q9e/fO9ZJBYGCgmnHAUkT16tXlueee41WKQb333nuq4NCZM2f0HordYmVByirODFCWdxmcPn06x98HCYlDerSSX18vK+X3fCKRG4bI1/95XsqXfSZp6pKMA9cgSB7krIBlnT9/noEAZQlnBijLJ3M0OULpYrxkslPCOCoqSka+2lB+bOQnTvn+eRy+z/ubomThqVhZs3atqnVAxnDp0iWpUaOG/Pnnn9K5c2e9h2N3TO9R3GL3AKqLEmWGMwOUJYULF1YHl4sXL6pqhdnJIVg9b4aMrO6bIhAAfL9fu7hIjaJ5ZciQISrDmYwBswJYcmLLYvPDe3Px4sVq+QXvMQYClBUMBihb0NjI19c3W0mFV/ZvkNIF0n+pOTvkkXrF86rviQI0ZJyWxS1atBB3d3e9h2KXOQJ+fn6q8RBRVjEYIItXKoyPicr0fuf/zRj4+PiYbZxkvdiy2DJYWZByg8EA5SogwJrvU3lVkvCY9FNTsKZ5IeDJ8sBHH30k7du3l0mTJsmxY8e4bGCnjh49KqGhoQwGzGz79u0MBCjHmEBIOYapfUxFFihQINOvu3fvnnz/WiX5uWPabYlTD0XLqB3RUrBICRk5cqTae757924JDw9XeQodOnRQJw00sqlQoYIFfxvSyjfffCM//fST2mbKToXmbfr0+PFjKV26tN5DIRvEYIByLSIiQk37duzYMcM6BD9/N14OLBono1s5Sf0S+eRmUIJM2hcjGy7HycNIkTVr1iTtJoiJiZHDhw+rdWV8HDlyRJVFrlSpkgoK8IGWt9jdkJ0pVMxi4GCJqybWN9APkga9vLxk/fr1eg/F5uF1vXXrVvV+8PDw0Hs4ZMMYDFCuIVlp0aJFTy1MtHr1ahk5uJ8kRARJWHSiPIoSKVOmjEyZMiXTbYU4gWO2wBQcXL16VfLmzasqJJqCA1RWc3JySvNYBBGj+vaSwBObpV7RBHkQnih7b8fLrTgvmTJ9Frcz6nD1iiBu6tSpMmDAAL2HYzc5Am+//bZ6LxHlFIMB0rRSIfIAsGsASwclS5bM0RU6fha2piEwwC26LGKXQ5s2bZKCg1q1aqltVYP+3V6GlTgiFQv/8zPwkv9kW5T8djxWVqxifQMtbdmyRbp27SqXL1+WqlWr6j0cm8XKgmRuDAbI7AEB1ixxpZKdwkQ5hSv/U6dOJQUHCDSio6OlRIkS8myjevKm6155vVbadWm87FvOixC/PKXk5s2bXDLQyNChQ2Xt2rXqtaLF68Me4bWLWh/I2WEgQObCYIDMCgd59EqvX7++Lj8/MjJS9u3bp4KDvetmy77e8ZI3g5POkG2RMvVwrMp3aNu2reZjNaLatWtL06ZNZe7cuXoPxaadO3dOJe4yECBz4dZCMisk55kCAVRA07rboaurq1om+O6776RZo/oZBgJQ0OXJfZhqJcvD0hBq5XNLYc7gvXTixAk1M4CgioEAmRODAbII1EPfvHmzru2PC5evK7ceZ1yr4OyDBHXbt29flTcwa9YsuXbtmjrYkuVaFmO7KOUsR2Dbtm0qoZbI3BgMkEWg/kB2KxWa27CvJskY7ycn/NRO3IuTQ3fipVixYjJ8+HAJCAiQTz75RKpUqSIVK1aUPn36yKpVq1RyIpkHcjrq1aunnnPKeWXB7GypJcoq5gyQVewysJTpP/8g3nNGy8QOzlLVK5/ExCfK7GMxMv1orFx5mKCS2Uy7CVAVD1sYTcmIaMqEJLeGDRsm7VJo2bKlODs7Z/nnm2P3hD3AYQaJpW+88Yb8+OOPeg/HZrDEMGmFwQBpEhDs379fevTokW4tAEvDFf7oof3ELS5YImIT5XpQYpbqG6B+QvItjP7+/ionASd0U3BQp04dVfMgPZPGjpIDq2dIRY8YiYkXOXk/Xu4lFpGfDVjf4MKFC2q7J6a5X3zxRb2HY1N9HFCcqUmTJgwEyKIYDJCmHj16pCqlaT1DkNsrdLxNzp49m1T4aM+ePWrnAqa8kRBnKplsKgX75ZAPpbbfUnm9tlOK7zF6Z7RMOxwji1cYq77BtGnTZMSIEervz06FWZsRQG5A0aJF9R4KGQSDAdL0hDxz5kyVT6DHkoE5RUVFycGDB5OCg+PHj6uTffXq1VW5Xdezi2RKx/RnQTovDZfz0caqb9CtWze1DINtnJS1pQEETshjMcprhPTFBELSDA5q3bt31zWp0FxcXFxUPfiJEyeqLnxIQMRyBAKBvzeukJHNM27A82p1R1UwBjMVRoC/M3IxMHNCWc8ReO211xgIkGYYDJBu7Y9tPSBIDo13evbsKb/99pu81LG9FHfPuL5BFa8n9929e1eMAI2m2LL46VhimPTEYIB0CwhwNY0Pe1OjYQvVDCkjf19/ct+QIUPkgw8+kOXLl9vl82CCZZSCBQtKo0aN9B6KVcOyALayMhAgPTBngHS9EkLeAPoLIJ/AlnMIUmeA96jnKet75EtTfz8sJlFazw8X37jCKiBCIR6UlgVUbsRUOq6gkeCInQv2oFWrVlK8eHG1jZPSfx9gRwqWBPDacXDIeImJyFI4M0C6MZ389a5UaG44mHfsN0n+vSZSfIP/mSE4eidOOi+NkJP3E9RyArY2YocClgsWL14sdevWVQ1osPUOhWUQFKCsMpITETBlB4IrrNNj1gG3+L8eQkJC5NChQ1wieMrSwIYNG9T/GQiQXjgzQGL0wkSWsmLFCvl6eH8pkjdEYhNELgYkiGex0jJ16tQMtxXi7Yg9+ab6BjiRh4eHq5wElPE1zRyUL18+w587+7dfZf53I6RS/ijJl0fknH+C+OcpIlNnaF/f4I8//lA7Ca5evSqVK1fW9GdbOxYUImvCYICsgr0GBLmtbxATE6OurE3BAZLxMEuAE6up8BF2NWBNHqb99L1cXTlGfuroIo6IBNDmOTFRvvWOlp8Oxcj8ZdrWNxg8eLBs3LhRbaNky+J/MBAga8NggKwuIGjfvr00a9ZM7+FYJRSiwV59U1VEXHFjvfnZZ59VMwdn1/8sG3s6pHvifX1NhBwILiE+Pj6abVmrWbOmKuE8Z84cTX6erTh27Jj89ddfDATIajAYIKsSGBiopsRxMsNLk1eTTw+gTIWPtmzZInM6xcsbyaoeJnfIL07aL4yQP//eJW3btrX42HDVi4qMWC55/fXXLf7zbIHpNY3boKAgKVy4sN5DIlKYQEhWpUiRIupgiVbC9pRUaCm4qvzwww9l5cqVMvTjAVK3WMZX/GjU5OEsaslCy5bFmOmhJ0sDSBA1NcBiIEDWhMEAWSXkDOCqlwFB1tWu3yjT+gZH7sRJcJTI6NGjZdiwYfLnn3+q5ERLwWxFgwYNWF8/WY4AKk+yNwNZIwYDZJXstVKhJaEr5Pqr+SQ+Ie3KH6alZxyJFXfPwmqJYM2aNdKlSxe1hRH/nzBhgkpONNcWRPw85DRwSyErC5JtYDBANhEQYIsaZQ5JgT0+nSw9V0dKYMQ/dQlCohPlg01R8t+bcSqRb/78+WrW5dKlS/LTTz+pxlGoZ9C0aVO1TIOa+L/++qtcv349x2M5f/683L9/n/0IRNQMDAMBsnZMICSrd/v2bcmfPz/XWLMIOzImjhooZZzDJG+ePHIpMF6i3UrK9OnTM9xWiMp3mBkwJSNiOyNmCSpUqJBU2wC7FTL7G6CT4+p50+Xqvg0ScO+2HLx0TxZtPSZ169cXIwsODlbFl8qUKaP3UIgyxGCAbAZONijCg5OSvdQhsNb6Bjh5eXt7JwUHmEVA0hv6C5jqG7Ro0UKcnZ2Tvv7zXi3l8+o+UrrAkwnHuIRE+fFQvMQ36SdfjJ8sRlsawNZB1IBwc3PTezhET8VggGwGploXLlxod4WJbAES30yFj3CLxkronYCWzQgMLu5aLdPqXRA3x7RbQQdsiZRWQxeov5nRcgTeeecdtb2SyNoxGCCbrVSIBDiscQP2bKdOfitQoIA4OTlJRESE+kgOn8f9eAwem5qp1gGK/GAKPTksWbi4uKiZirCwsBT3IUDBGjzeVuhAlxoS9nCFjitpVBdMDleQ+IiOjlYtf5PDY/BYUy2G1FCBEHXtMR6MKzmctJHBjpMUpqyTw++I39XUNS91DwTTc4hdB5GRkepz+BqUTN6/f7/s2bNHzdb0rZ8o0zqn31jJPzxBWi/LJ94nLifNTpieQ3zP1DsaTM8hfg7GlBqWKlBoCb9L6sRS/J74fdN7DvH8mCo1ZvYc4nF4fHrPIf5m+Nslh7GYlk/wN0evDVYWJFvDrhhkk0mFCAh+//13GTVqlPo8/p/6AI8r0apVq6pqbzt37kxxX+3atVX2PQ78M2bMSPNzvvzyS3XiWr9+vQpAkuvevbvaMockudSJjVhjf/fdd1UAkd73/fTTT8XDw0O2bt2q9psnhytsVOu7ceOGqhuQXLFixWTAgAHq37Nnz04TSPTr109KlCihTsz4fZPDdH7Hjh3VksG8efNS3IeT8vDhw9W/Fy1apIKf5N5++22pVKmSyifAskFy9erVky+++EKNJ37T4DS/a9LY3fOKQ2yofPbZZ0k9FZCkWKdOHTlz5ox6LpKrUqWK+hvjhJzeczhy5EgVNKHI0pUrV1Lc16lTJ1W9EpUZsWMiuVKlSkmfPn3Uv3/55Zc0gc+gQYNUcIn6CKdOnUpxH5ZZsDxlmp1KDoHL0KFD1b8XLFigxs1AgGwNZwbIJuFqHleUpilYnOhSXyVifzuu6HAFmfqKGCcTHPhx0kbXwNSQ7IWr5gcPHqS5SsRVIE6iuApPfeWKq12cuHGi8fPzS/N9MaOBIAOBS+rZClyZ4kocn08d2OBqGWv/pin71G9bBAK4gsd4Us9WIPjArAJ+D/w+yWEsGBPgeUg9C4LfBb9Tes8hrpQxqzB37ly58Ht/mfxi+jMDjyITpc6sMBk1YaoKpACPw+MRjKWemcHfDH+7pz2HWKowzVaY4PfE74vXRuqZGTw/eJ4yeg7x/OJ5xuNSz1bg74K/D2Zd/P39U9yH2QQEGoBgAa8t0ywOka1gMEBEuYLZiE97d5CDH7iL0/+aIyU3/K9ImXwwVvVU0KIMMhFlH4MBIsoV5F2UKVNaGnkEypJXXMXT5UlAgEPL7OOx8rV3tDgWKq06F2rVIImIsoc5A0SUKzjBz5gxU+UBNPgtTOqXyCvujnnk8sMEOeufINHxeWTNwikMBIisGGcGiMgs1q1bJ4MHD06xzo/ciylTpmRY7IiIrAODASKymmJHRKQPBgNEREQGx0ZFREREBsdggIiIyOAYDBARERkcgwEiIiKDYzBARERkcAwGiIiIDI7BABERkcExGCAiIjI4BgNEREQGx2CAiIjI4BgMEBERGRyDASIiIoNjMEBERGRwDAaIiIgMjsEAERGRwTEYICIiMjgGA0RERAbHYICIiMjgGAwQEREZHIMBIiIig2MwQEREJMb2/2fBnR6irIbkAAAAAElFTkSuQmCC", "text/plain": [ "
" ] From 612a228d619024749c3fdca7be5bebc6d783d982 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Thu, 20 Nov 2025 10:50:57 -0700 Subject: [PATCH 05/17] fix bounds manager --- ard/viz/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ard/viz/utils.py b/ard/viz/utils.py index 599a537b..5f0d7e4a 100644 --- a/ard/viz/utils.py +++ b/ard/viz/utils.py @@ -6,5 +6,5 @@ def get_plot_range(values, pct_buffer=5.0): max_value = np.max(values) dvalues = max_value - min_value min_value = min_value - pct_buffer / 100.0 * dvalues - max_value = max_value - pct_buffer / 100.0 * dvalues + max_value = max_value + pct_buffer / 100.0 * dvalues return min_value, max_value From 18f7befb1632471907580289de20b6060e70fdd2 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Mon, 1 Dec 2025 13:10:03 -0700 Subject: [PATCH 06/17] add exclusions to layout and plotting --- ard/layout/exclusions.py | 128 +++++++++++++++++++++++++++++++++++++++ ard/viz/layout.py | 22 +++++++ 2 files changed, 150 insertions(+) create mode 100644 ard/layout/exclusions.py diff --git a/ard/layout/exclusions.py b/ard/layout/exclusions.py new file mode 100644 index 00000000..f43170a3 --- /dev/null +++ b/ard/layout/exclusions.py @@ -0,0 +1,128 @@ +import numpy as np +import jax.numpy as jnp +import jax + +jax.config.update("jax_enable_x64", True) +import ard.utils.geometry +import openmdao.api as om + + +class FarmExclusionDistancePolygon(om.ExplicitComponent): + """ + A class to return distances between turbines and a polygonal exclusion, or + sets of polygonal exclusion regions. + + Options + ------- + modeling_options : dict + a modeling options dictionary + + Inputs + ------ + x_turbines : np.ndarray + a 1D numpy array indicating the x-dimension locations of the turbines, + with length `N_turbines` (mirrored w.r.t. `FarmAeroTemplate`) + y_turbines : np.ndarray + a 1D numpy array indicating the y-dimension locations of the turbines, + with length `N_turbines` (mirrored w.r.t. `FarmAeroTemplate`) + """ + + def initialize(self): + """Initialization of the OpenMDAO component.""" + self.options.declare("modeling_options") + + def setup(self): + """Setup of the OpenMDAO component.""" + + # load modeling options + self.modeling_options = self.options["modeling_options"] + self.windIO = self.modeling_options["windIO_plant"] + self.N_turbines = int(self.modeling_options["layout"]["N_turbines"]) + + # load boundary vertices from windIO file + if "exclusions" not in self.windIO["site"]: + raise KeyError( + "You have requested an exclusion but no exclusions were found in the windIO file." + ) + if "circle" in self.windIO["site"]["exclusions"]: + raise NotImplementedError( + "The circular exclusions from windIO have not been implemented here, yet." + ) + if "polygons" not in self.windIO["site"]["exclusions"]: + raise KeyError( + "Currently only polygon exclusions from windIO have been implemented and none were found." + ) + self.exclusion_vertices = [ + np.array( + [ + polygon["x"], + polygon["y"], + ] + ).T + for polygon in self.windIO["site"]["exclusions"]["polygons"] + ] + self.exclusion_regions = self.modeling_options.get("boundary", {}).get( + "turbine_region_assignments", # get the region assignments from modeling_options, if there + np.zeros(self.N_turbines, dtype=int), # default to zero for all turbines + ) + + # prep the jacobian + self.distance_multi_point_to_multi_polygon_ray_casting_jac = jax.jacfwd( + ard.utils.geometry.distance_multi_point_to_multi_polygon_ray_casting, [0, 1] + ) + + # set up inputs and outputs for mooring system + self.add_input( + "x_turbines", jnp.zeros((self.N_turbines,)), units="m" + ) # x location of the mooring platform in m w.r.t. reference coordinates + self.add_input( + "y_turbines", jnp.zeros((self.N_turbines,)), units="m" + ) # y location of the mooring platform in m w.r.t. reference coordinates + + self.add_output( + "exclusion_distances", + jnp.zeros(self.N_turbines), + units="m", + ) + + def setup_partials(self): + """Derivative setup for the OpenMDAO component.""" + # the default (but not preferred!) derivatives are FDM + self.declare_partials( + "*", + "*", + method="exact", + rows=np.arange(self.N_turbines), + cols=np.arange(self.N_turbines), + ) + + def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None): + """Computation for the OpenMDAO component.""" + + # unpack the working variables + x_turbines = inputs["x_turbines"] + y_turbines = inputs["y_turbines"] + + exclusion_distances = ( + ard.utils.geometry.distance_multi_point_to_multi_polygon_ray_casting( + x_turbines, + y_turbines, + boundary_vertices=self.exclusion_vertices, + regions=self.exclusion_regions, + ) + ) + + outputs["exclusion_distances"] = -exclusion_distances + + def compute_partials(self, inputs, partials, discrete_inputs=None): + + # unpack the working variables + x_turbines = inputs["x_turbines"] + y_turbines = inputs["y_turbines"] + + jacobian = self.distance_multi_point_to_multi_polygon_ray_casting_jac( + x_turbines, y_turbines, self.exclusion_vertices, self.exclusion_regions + ) + + partials["exclusion_distances", "x_turbines"] = -jacobian[0].diagonal() + partials["exclusion_distances", "y_turbines"] = -jacobian[1].diagonal() diff --git a/ard/viz/layout.py b/ard/viz/layout.py index 2afc07a1..4d5889df 100644 --- a/ard/viz/layout.py +++ b/ard/viz/layout.py @@ -104,6 +104,28 @@ def plot_layout( # linecolor="k", ) + # loop over the exclusion types + for excl_type_key, excl_type_value in windIO_dict["site"]["exclusions"].items(): + # handle un-implemented exclusion types + if excl_type_key not in ["polygons"]: + raise NotImplementedError( + f"`{excl_type_key}` exclusions found but not yet handled in Ard plotting capabilities." + ) + + if excl_type_key == "polygons": + for polygon_exclusion in excl_type_value: + ax.fill( + polygon_exclusion["x"], + polygon_exclusion["y"], + linestyle="--", + alpha=0.25, + fill=True, + c="r", + # linecolor="k", + ) + else: + raise ValueError("this line should be inaccessible.") + # plot turbines ax.plot(x_turbines, y_turbines, "ok") From d612c7003e5e227f4382b1b9d6143ecba9a388c2 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Mon, 1 Dec 2025 13:12:52 -0700 Subject: [PATCH 07/17] add example, still experimental --- examples/x07_exclusion/inputs/ard_system.yaml | 159 ++++++ examples/x07_exclusion/inputs/windio.yaml | 530 ++++++++++++++++++ examples/x07_exclusion/inputs/wrg.yaml | 63 +++ .../x07_exclusion/optimization_demo.ipynb | 322 +++++++++++ 4 files changed, 1074 insertions(+) create mode 100644 examples/x07_exclusion/inputs/ard_system.yaml create mode 100644 examples/x07_exclusion/inputs/windio.yaml create mode 100644 examples/x07_exclusion/inputs/wrg.yaml create mode 100644 examples/x07_exclusion/optimization_demo.ipynb diff --git a/examples/x07_exclusion/inputs/ard_system.yaml b/examples/x07_exclusion/inputs/ard_system.yaml new file mode 100644 index 00000000..46bf7b36 --- /dev/null +++ b/examples/x07_exclusion/inputs/ard_system.yaml @@ -0,0 +1,159 @@ +modeling_options: &modeling_options + windIO_plant: !include windio.yaml + layout: + type: gridfarm + N_turbines: 7 + N_substations: 1 + aero: + return_turbine_output: True + floris: + peak_shaving_fraction: 0.2 + peak_shaving_TI_threshold: 0.0 + collection: + max_turbines_per_string: 8 + solver_name: highs + solver_options: + time_limit: 60 + mip_gap: 0.02 + model_options: + topology: radial # radial, branched + feeder_route: segmented + feeder_limit: unlimited + offshore: false + floating: false + costs: + rated_power: 3400000.0 # W + num_blades: 3 + rated_thrust_N: 645645.83964671 + gust_velocity_m_per_s: 52.5 + blade_surface_area: 69.7974979 + tower_mass: 620.4407337521 + nacelle_mass: 101.98582836439 + hub_mass: 8.38407517646 + blade_mass: 14.56341339641 + foundation_height: 0.0 + commissioning_cost_kW: 44.0 + decommissioning_cost_kW: 58.0 + trench_len_to_substation_km: 50.0 + distance_to_interconnect_mi: 4.97096954 + interconnect_voltage_kV: 130.0 + tcc_per_kW: 1300.00 # (USD/kW) + opex_per_kW: 44.00 # (USD/kWh) + +system: + type: group + systems: + aepFLORIS: + type: component + module: ard.farm_aero.floris + object: FLORISAEP + promotes: ["x_turbines", "y_turbines", "AEP_farm"] + kwargs: + modeling_options: *modeling_options + data_path: + case_title: "default" + boundary: + type: component + module: ard.layout.boundary + object: FarmBoundaryDistancePolygon + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + exclusions: + type: component + module: ard.layout.exclusions + object: FarmExclusionDistancePolygon + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + collection: + type: component + module: ard.collection.optiwindnet_wrap + object: OptiwindnetCollection + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + spacing_constraint: + type: component + module: ard.layout.spacing + object: TurbineSpacing + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + tcc: + type: component + module: ard.cost.wisdem_wrap + object: TurbineCapitalCosts + promotes: [ + "turbine_number", + "machine_rating", + "tcc_per_kW", + "offset_tcc_per_kW", + ] + landbosse: + type: component + module: ard.cost.wisdem_wrap + object: LandBOSSEWithSpacingApproximations + promotes: [ + "total_length_cables", + ] + kwargs: + modeling_options: *modeling_options + opex: + type: component + module: ard.cost.wisdem_wrap + object: OperatingExpenses + promotes: [ + "turbine_number", + "machine_rating", + "opex_per_kW" + ] + financese: + type: component + module: ard.cost.wisdem_wrap + object: FinanceSEGroup + promotes: [ + "turbine_number", + "machine_rating", + "tcc_per_kW", + "offset_tcc_per_kW", + "opex_per_kW", + ] + kwargs: + modeling_options: *modeling_options + connections: + - ["AEP_farm", "financese.plant_aep_in"] + - ["landbosse.total_capex_kW", "financese.bos_per_kW"] + +analysis_options: + driver: + name: ScipyOptimizeDriver + options: + optimizer: COBYLA + opt_settings: + rhobeg: 2.0 + maxiter: 50 + # debug_print: + # - desvars + # - objs + design_variables: + x_turbines: + units: m + lower: -100.0 + upper: 2100.0 + y_turbines: + lower: -500.0 + upper: 2300.0 + constraints: + boundary_distances: + units: km + upper: 0.0 + scaler: 2.0 + spacing_constraint.turbine_spacing: + units: km + lower: 0.552 + objectives: + financese.lcoe: + scaler: 1.0 + recorder: + filepath: cases.sql diff --git a/examples/x07_exclusion/inputs/windio.yaml b/examples/x07_exclusion/inputs/windio.yaml new file mode 100644 index 00000000..5f60d89f --- /dev/null +++ b/examples/x07_exclusion/inputs/windio.yaml @@ -0,0 +1,530 @@ +name: SSRS Co-Design Case Demo +site: + name: Patterson Pass + boundaries: + polygons: + - x: [606.1611139248125, -7.565841734409332, 1436.1546635665, 2086.7966175233014] + y: [2240.4306740884513, -17.519102511407254, -416.39044961224135, 1871.7237653906122] + exclusions: + polygons: + - x: [1470.8220552763923, 1468.529999999795, 1458.5400000000373, 1448.5500000002794, + 1447.4301446560378, 1438.5600000000559, 1428.5699999998324, 1418.5800000000745, + 1417.736959309169, 1408.5900000003166, 1398.6000000000931, 1397.9319108796744, + 1388.6099999998696, 1384.9273327240683, 1378.6200000001118, 1373.223367936265, + 1368.630000000354, 1362.6275088513448, 1358.6400000001304, 1352.9829142993594, + 1348.6499999999069, 1343.7286673377082, 1338.660000000149, 1334.6405146333693, + 1328.6700000003912, 1325.6788804298187, 1318.6800000001676, 1317.091098623197, + 1309.181725510436, 1308.6899999999441, 1301.6467667617408, 1298.7000000001863, + 1294.737445352655, 1288.7100000004284, 1288.3754936919897, 1282.8968174907045, + 1278.720000000205, 1278.0971372566262, 1273.7618157018578, 1270.5684949107392, + 1268.7299999999814, 1267.952327549212, 1265.5840553574321, 1263.5435022543215, + 1262.0342388460485, 1260.6851610146618, 1259.7022423143696, 1259.0911626750508, + 1258.7399999997579, 1258.5133346403973, 1257.605840293904, 1256.9318887985833, + 1256.2614044804257, 1255.5546642195318, 1254.9161096589269, 1254.2558168228925, + 1253.4435342097295, 1252.9368652517949, 1252.2704636944245, 1251.8724759583772, + 1251.6565764653935, 1251.6363521412632, 1251.7226059274365, 1252.0902573960848, + 1252.5164319347525, 1253.369037892079, 1254.4363449107284, 1255.3936177445112, + 1256.3905075837788, 1257.9152282095968, 1258.7399999997579, 1259.1733711253298, + 1260.150163295662, 1261.4753328758065, 1262.6931276063403, 1263.3656076779978, + 1263.8048531005504, 1263.992456414337, 1263.320775603215, 1261.947790882952, + 1259.8595992863156, 1258.7399999997579, 1257.3383155229985, 1254.670729346122, + 1251.0654839250897, 1248.75, 1247.2231989458148, 1242.425969484821, 1238.7600000002421, + 1236.7062292638263, 1229.9541945917802, 1228.7700000000186, 1221.2565051666231, + 1218.7799999997949, 1210.8492702067433, 1208.7900000000373, 1198.8000000002794, + 1197.703750108395, 1188.8100000000559, 1182.9440606369997, 1178.8199999998324, + 1168.8300000000745, 1166.8792463420662, 1158.8400000003166, 1151.2257118740497, + 1148.8500000000931, 1138.8599999998696, 1135.4112117997793, 1128.8700000001118, + 1120.4149501938534, 1118.880000000354, 1108.8900000001304, 1105.9022117193188, + 1098.8999999999069, 1091.8938864168333, 1088.910000000149, 1078.9200000003912, + 1077.3017163076477, 1068.9300000001676, 1063.2043590842927, 1058.9399999999441, + 1049.251087098697, 1048.9500000001863, 1038.9600000004284, 1033.148325891937, + 1028.970000000205, 1018.9799999999814, 1013.437053005548, 1008.9899999997579, + 999.0, 989.0100000002421, 986.0290746721453, 979.0200000000186, 969.0299999997951, + 959.0400000000373, 951.7003435259157, 949.0500000002794, 939.0600000000559, + 929.0699999998324, 921.2924101312128, 919.0800000000745, 909.0900000003166, + 899.6907547328567, 899.1000000000931, 889.1099999998696, 885.06773611775, + 879.1200000001118, 874.1429774358072, 869.1300000003539, 865.476209869523, + 859.1400000001304, 858.5032503875071, 853.0106662351483, 849.1499999999069, + 848.404404332605, 844.6783450809799, 841.6192802226198, 839.160000000149, + 839.0256352829439, 836.9228907458883, 835.232695157986, 833.9750005665999, + 832.9749509881062, 832.2030243290234, 831.6936240417823, 831.3125815764627, + 831.0350393877468, 830.7741059496961, 830.4250202600837, 829.773711145815, + 829.1700000003912, 829.1283159581922, 828.2967991510019, 826.9726792093005, + 825.0519791114124, 822.805043295196, 819.6951524472047, 819.1800000001676, + 816.1678933090338, 811.9960966683668, 809.1899999999441, 807.1297368144656, + 801.7731797459385, 799.2000000001863, 796.0470524215046, 789.9112599373392, + 789.2100000004284, 783.7694388525185, 779.2200000002049, 777.2896909891949, + 770.8985577646026, 769.2299999999814, 764.7530406060689, 759.2399999997579, + 758.4201833869396, 752.244158639693, 749.25, 745.8900195620533, 739.5478100396631, + 739.2600000002421, 733.6125200380957, 729.2700000000186, 727.5526665644942, + 721.821650807645, 719.279999999795, 716.3107473441022, 710.9903300219788, + 709.2900000000373, 705.8207603961527, 700.7763199095155, 699.3000000002793, + 696.2223681709089, 692.0835919330699, 689.3100000000559, 688.4287755626084, + 685.2763813217963, 682.5812653320543, 680.4245541700943, 679.3199999998324, + 679.09587302962, 678.4819978249377, 678.9283408707186, 679.3199999998324, + 680.4898421845553, 683.3080919722335, 687.3469836612296, 689.3100000000559, + 692.772534293824, 699.3000000002794, 699.7181330657595, 708.4600202426773, + 709.2900000000373, 718.7044299321811, 719.2799999997951, 729.2700000000187, + 730.7635113270464, 739.2600000002421, 744.9253981341514, 749.25, 759.2399999997579, + 760.4269579029482, 769.2299999999814, 777.0427259649246, 779.2200000002049, + 789.2100000004284, 792.7388438432855, 799.2000000001863, 806.5513399675644, + 809.1899999999441, 817.9335283622468, 819.1800000001676, 826.969993671703, + 829.1700000003912, 833.2444745670515, 837.3778734218307, 839.1600000001491, + 840.5444251412558, 842.7515930597439, 844.0163965085875, 844.5801302388807, + 845.2549731133378, 845.64177391164, 845.5545373537661, 845.4967489344408, + 845.630496372278, 846.2177063067397, 847.1647250657554, 848.3627549866687, + 849.1499999999069, 850.5877967722051, 853.2268934226346, 856.5731524054968, + 859.1400000001305, 860.2175208154373, 864.3547187244128, 868.6461076650132, + 869.1300000003539, 873.1609722624818, 877.6159966656701, 879.1200000001118, + 883.0770864988024, 888.6710065495179, 889.1099999998696, 895.4120562387247, + 899.1000000000931, 902.3212617205677, 909.0900000003166, 909.9716116190805, + 918.1367657829379, 919.0800000000745, 926.332802046649, 929.0699999998324, + 934.5901790921537, 939.0600000000559, 943.1666924467655, 949.0500000002794, + 952.0287565532564, 959.0400000000373, 961.0837692831159, 969.0299999997951, + 970.7146132801016, 979.0200000000186, 980.4657860115399, 989.0100000002421, + 990.437502288512, 999.0, 1000.4586149792207, 1008.9899999997579, 1010.1974405039017, + 1018.9799999999814, 1019.51818687297, 1028.970000000205, 1029.072684476565, + 1038.9600000004284, 1039.1028786297377, 1048.9500000001863, 1049.5466894409492, + 1058.9399999999441, 1063.870384336532, 1068.9300000001676, 1078.9200000003912, + 1083.6170944119363, 1088.910000000149, 1098.8999999999069, 1108.8900000001304, + 1111.9958128995454, 1118.880000000354, 1128.8700000001118, 1138.8599999998696, + 1148.8500000000931, 1152.9464841522636, 1158.8400000003166, 1168.8300000000745, + 1170.8880592663427, 1178.8199999998324, 1179.4442988754136, 1187.4499005156606, + 1188.8100000000559, 1196.1491780408319, 1198.8000000002794, 1208.7899911167249, + 1208.7900000000373, 1218.779999999795, 1228.7700000000186, 1232.559755746465, + 1238.7600000002421, 1248.7499999999998, 1257.8029239044201, 1258.7399999997579, + 1268.7299999999814, 1278.720000000205, 1282.8000452220836, 1288.7100000004284, + 1298.232613903916, 1298.7000000001863, 1308.6899999999443, 1310.2254317672953, + 1318.6800000001676, 1321.1106552600088, 1328.6700000003912, 1331.7229871951474, + 1338.660000000149, 1341.667357871244, 1348.6499999999069, 1351.0888355902534, + 1358.6400000001302, 1359.8478649229785, 1367.7762624331097, 1368.630000000354, + 1375.5357057858516, 1378.6200000001118, 1383.0685269757878, 1388.6099999998696, + 1390.347765236937, 1397.321079924681, 1398.6000000000931, 1403.7444472534144, + 1408.5900000003169, 1409.5288219850459, 1414.7313159653531, 1418.5800000000747, + 1419.1845348262457, 1423.4705749108953, 1426.9304399289301, 1428.5699999998324, + 1429.6994520865092, 1432.3319009146683, 1434.8793870785466, 1436.845950514542, + 1438.5600000000559, 1438.96436058281, 1440.1767400666965, 1441.4366771956495, + 1442.856614365617, 1444.3263327423938, 1446.4950669300808, 1447.912017119626, + 1448.5500000002794, 1449.3994188785912, 1450.462665567149, 1452.3557676413816, + 1454.0744366889123, 1456.384981221936, 1458.1642464187523, 1458.5400000000373, + 1460.0023475873109, 1255.657428653226, 1248.75, 1244.1528934915173, 1238.7600000002421, + 1231.5640150577563, 1228.7700000000186, 1218.779999999795, 1218.515114203237, + 1208.7900000000373, 1205.5266364975723, 1198.8000000002794, 1191.914663923395, + 1188.8100000000559, 1178.8199999998324, 1178.1292816584405, 1168.8300000000745, + 1165.1544220646879, 1158.8400000003166, 1152.8145023585294, 1148.8500000000931, + 1140.799219008033, 1138.8599999998696, 1129.240473162255, 1128.8700000001118, + 1118.880000000354, 1118.2973753844537, 1108.8900000001304, 1107.5143495405869, + 1098.8999999999069, 1096.8510861418633, 1088.910000000149, 1085.7665516938468, + 1078.9200000003912, 1073.624935944363, 1068.9300000001676, 1060.7874290645557, + 1058.9399999999441, 1048.9500000001863, 1047.7927970028409, 1038.9600000004284, + 1034.4350681261756, 1028.970000000205, 1021.7083620569473, 1018.9799999999814, + 1009.3750816779944, 1008.9899999997579, 999.0, 997.3208271216307, 989.0100000002421, + 985.318328372785, 979.0200000000186, 973.6573872673488, 969.0299999997951, + 962.2249710201195, 959.0400000000373, 950.6662324517386, 949.0500000002794, + 939.0600000000558, 938.7362754654825, 929.0699999998324, 926.5732305306525, + 919.0800000000745, 914.0578532746011, 909.0900000003166, 901.2332296729096, + 899.1000000000931, 889.1099999998696, 887.6360701277315, 879.1200000001118, + 873.7759127673, 869.1300000003539, 859.7780178472347, 859.1400000001304, 849.149999999907, + 845.7515293266647, 839.160000000149, 831.5703572251696, 829.1700000003912, + 819.1800000001676, 816.9247988029055, 809.1899999999441, 801.6650071005831, + 799.2000000001863, 789.2100000004284, 786.4293112165907, 779.2200000002049, + 771.4649932716079, 769.2299999999814, 759.2399999997579, 756.5574816004641, + 749.25, 742.4028770129067, 739.2600000002421, 729.2700000000186, 729.1045231589768, + 719.279999999795, 716.580541236454, 709.2900000000373, 704.9494405314964, + 699.3000000002794, 694.068063955214, 689.3100000000559, 684.1054952284096, + 679.3199999998324, 674.9000407541383, 669.3300000000745, 666.4405763014393, + 659.3400000003166, 658.5206337577757, 650.6290345079024, 649.3500000000931, + 642.9968510157821, 639.3599999998696, 635.6800020869703, 629.3700000001118, + 628.4200250765793, 621.084346987598, 619.3800000003539, 613.4869726038164, + 609.3900000001304, 605.767393473623, 599.3999999999069, 597.4277946470603, + 589.410000000149, 587.9118030257465, 579.4200000003912, 576.9392913293694, + 569.4300000001676, 562.2084341344686, 559.4399999999441, 549.4500000001863, + 539.4600000004284, 538.4666259318494, 529.4700000002049, 519.4799999999814, + 509.48999999975786, 499.5, 492.875766182191, 489.51000000024214, 479.5200000000186, + 469.5299999997951, 459.54000000003725, 449.5500000002794, 439.5600000000559, + 429.5699999998324, 420.4708573595945, 419.5800000000745, 409.59000000031665, + 399.60000000009313, 292.18495994398455, 293.08105829033684, 296.6416125166231, + 299.70000000018626, 300.79757938075795, 305.08260656470367, 309.6899999999441, + 310.54985892386827, 316.6473484839463, 319.6800000001677, 324.1111110183115, + 329.67000000039116, 332.864681337067, 339.660000000149, 343.13833629638077, + 349.64999999990687, 354.6051967528877, 359.6400000001303, 367.4698764166836, + 369.6300000003539, 379.62000000011176, 381.65722704535443, 389.6099999998696, + 395.5342614704191, 399.60000000009313, 409.59000000031665, 410.2879024225586, + 419.5800000000745, 424.33386507130626, 429.5699999998323, 438.18093876322683, + 439.5600000000559, 449.5500000002794, 450.7165047365906, 459.54000000003725, + 461.7799132063274, 469.5299999997951, 472.1212114228442, 479.5200000000186, + 481.49744654654273, 489.51000000024214, 490.3623176184711, 498.5349235379181, + 499.5, 506.4478217170989, 509.48999999975786, 513.7674895296875, 519.4799999999814, + 520.4332183603842, 526.4628072795387, 529.4700000002049, 532.1836316516302, + 537.6346450851414, 539.4600000004284, 542.625131648113, 547.1194437903717, + 549.4500000001863, 551.1447988214424, 554.5853882151838, 557.7868241595933, + 559.4399999999441, 560.7233524951465, 563.0284155704435, 565.0723264269275, + 566.7501142488119, 568.3922919272442, 569.4300000001676, 569.7449601723996, + 570.8899566148073, 572.1647741093998, 573.075305823336, 574.0136415814633, + 574.9884214716775, 576.0200794493816, 576.8711017301523, 577.8082946722554, + 578.94056231068, 579.4200000003912, 580.3276911921239, 581.9169073770747, + 583.5699375973253, 585.4403611537143, 587.7089311702215, 589.410000000149, + 590.2481632616831, 593.0640302495001, 595.9113916828982, 599.0774724745522, + 599.3999999999069, 602.1773782912474, 605.5809993468124, 609.0480517434289, + 609.3900000001304, 612.5421950787289, 616.2424130510666, 619.3800000003539, + 620.0085163734537, 624.1540318717622, 628.8072443971777, 629.3700000001118, + 633.2876639643971, 637.6319530960723, 639.3599999998696, 642.0823606193229, + 646.5419794068672, 649.3500000000931, 651.0362018023466, 655.6028868227368, + 659.3400000003166, 660.3543500070075, 664.9156358383134, 669.3300000000745, + 669.5790972330535, 674.0949571319595, 678.8285446423971, 679.3199999998322, + 683.5500575557936, 688.3508972519749, 689.3100000000559, 693.3783278423639, + 698.5327471393197, 699.3000000002794, 703.7119306455164, 708.6290881240027, + 709.2900000000373, 713.9304734585725, 719.2799999997951, 719.3516364823038, + 724.8919771253759, 729.2700000000186, 730.6382828342759, 737.0367368712336, + 739.2600000002421, 743.9563315418643, 749.25, 751.1785750828602, 758.3102336956205, + 759.2399999997579, 765.3745366558297, 769.2299999999814, 772.1240615306905, + 779.2200000002049, 779.5183646342878, 786.6316781703368, 789.2100000004283, + 794.178030421444, 799.2000000001863, 801.8346931760017, 807.9785056991292, + 809.1899999999441, 809.442931191604, 809.1899999999441, 807.5556089534841, + 799.2000000001863, 793.0338446084988, 789.2100000004284, 779.2200000002049, + 775.575734964938, 769.2299999999814, 759.2399999997577, 755.4325343327761, + 749.25, 739.2600000002421, 738.6771776426567, 729.2700000000186, 725.8847681195926, + 719.2799999997951, 714.2418339945616, 709.2900000000373, 703.8695911991813, + 699.3000000002794, 696.4066788762628, 690.5787569987302, 689.3100000000559, + 685.9842199019679, 682.953965437152, 680.9972137677589, 679.861905185991, + 679.3199999998324, 678.7085135220432, 678.1590211157538, 677.8397839199631, + 678.7584203924046, 679.3199999998324, 680.0887245525989, 681.4251205195363, + 683.5562047057502, 687.7866338975952, 689.3100000000559, 693.4619964594355, + 699.3000000002794, 699.9797402285429, 707.2135456460142, 709.2900000000373, + 716.2343607622195, 719.2799999997951, 725.9345729620262, 729.2700000000185, + 737.0647650038078, 739.2600000002421, 748.3818466379832, 749.2500000000001, + 759.2399999997579, 761.9805278148847, 769.2299999999815, 779.2200000002049, + 782.3857538514219, 789.2100000004284, 799.2000000001863, 809.1899999999441, + 819.1800000001676, 829.1700000003912, 839.160000000149, 849.1499999999069, + 852.1747723158915, 859.1400000001304, 867.3324880106219, 869.1300000003539, + 879.1200000001118, 889.1099999998696, 899.1000000000931, 909.0900000003166, + 919.0800000000745, 920.1462470249139, 929.0699999998324, 936.9555086187785, + 939.0600000000559, 949.0500000002794, 950.2792883984554, 959.0400000000373, + 959.8097508530004, 965.8630189288347, 968.582684083953, 968.8886069814738, + 967.1957972795154, 963.6530448353491, 959.0400000000373, 958.976021774334, + 954.4563885530457, 949.7007954584682, 949.0500000002794, 944.2227587243779, + 939.6798069353483, 939.0600000000559, 935.5201693738, 931.4107857824904, 929.0699999998324, + 927.452006748961, 923.2153025035481, 919.0800000000745, 918.744106988074, + 914.8930551737094, 911.0707858672108, 909.0900000003166, 907.5466459275208, + 902.9481807690565, 899.1000000000931, 898.6857630906895, 894.4968984221733, + 890.0429139955945, 889.1099999998696, 884.5233323262022, 879.5111551241121, + 879.1200000001118, 872.5938009293242, 871.3252089258248, 879.1200000001118, + 881.8059200559348, 889.1099999998696, 899.1000000000931, 909.0900000003166, + 919.0800000000745, 921.8519723063005, 929.0699999998324, 933.72826539122, + 939.0600000000559, 949.0500000002795, 959.0400000000374, 969.0299999997951, + 979.0200000000186, 989.0100000002421, 991.2277572481103, 999.0, 1008.9899999997579, + 1015.6705108305292, 1018.9799999999815, 1028.970000000205, 1034.7622652088987, + 1038.9600000004284, 1048.9500000001863, 1049.2397827722882, 1058.9399999999441, + 1060.852847718221, 1068.9300000001676, 1069.3745219279142, 1075.6912016140245, + 1078.9200000003912, 1080.9555275543519, 1085.4482130368697, 1088.910000000149, + 1089.3100836580786, 1092.5743536174089, 1095.3366854729084, 1097.480914501498, + 1098.8999999999069, 1099.155797751815, 1100.5217162204237, 1101.3927502670585, + 1102.139707232305, 1102.1772773176226, 1101.8023201022227, 1101.1468478754455, + 1099.8711107650884, 1098.8999999999069, 1098.1951318667698, 1096.161177157444, + 1094.4837676556483, 1093.9084760988515, 1094.1720888343866, 1097.719829776974, + 1098.8999999999069, 1103.6895320033098, 1108.8900000001304, 1113.58263455365, + 1118.880000000354, 1127.9570038469549, 1128.870000000112, 1138.8599999998696, + 1144.7790842553345, 1148.8500000000931, 1158.8400000003166, 1164.2304586475768, + 1168.8300000000745, 1178.8199999998324, 1185.0974307537415, 1188.8100000000559, + 1198.8000000002794, 1207.6077285019257, 1208.7900000000373, 1218.779999999795, + 1228.7700000000186, 1232.4051346155118, 1238.7600000002421, 1248.75, 1258.7399999997579, + 1259.2195758477662, 1268.7299999999814, 1278.720000000205, 1286.1346981006532, + 1288.7100000004284, 1298.7000000001863, 1308.6899999999441, 1311.7090409193368, + 1318.6800000001679, 1328.6700000003912, 1337.1209034251824, 1338.660000000149, + 1348.6499999999069, 1358.6400000001304, 1362.9492128038466, 1368.630000000354, + 1378.6200000001118, 1386.9008564548208, 1388.6099999998696, 1398.6000000000931, + 1407.4345509163388, 1408.5900000003166, 1418.5800000000745, 1423.1250760804267, + 1428.5699999998324, 1435.939653861761, 1438.5600000000559, 1448.136713306041, + 1448.5500000002794] + y: [-267.43794472345354, -266.67095219941933, -263.3519943958371, -260.1176327159642, + -259.7399999999998, -257.04247013920923, -253.89648423447304, -250.1249304465961, + -249.75, -245.74292867929594, -240.2543524109821, -239.76000000000022, -232.90069122216008, + -229.76999999999862, -224.60258852048196, -219.78000000000065, -215.65167972504614, + -209.78999999999905, -205.93411992378464, -199.8000000000011, -195.36602343299103, + -189.8099999999995, -184.36484575096176, -179.8199999999997, -173.32962257369005, + -169.82999999999993, -161.75631638915178, -159.83999999999833, -149.85000000000036, + -149.2436480904744, -139.85999999999876, -135.80363455050184, -129.8700000000008, + -120.42923245071083, -119.8799999999992, -109.88999999999942, -101.28216187020647, + -99.89999999999964, -89.90999999999985, -79.92000000000007, -72.87575233209817, + -69.92999999999847, -59.94000000000051, -49.94999999999891, -39.960000000000946, + -29.969999999999345, -19.979999999999563, -9.989999999999782, -3.767989826088935, + 0.0, 9.989999999999782, 19.980000000001382, 29.969999999999345, 39.960000000000946, + 49.95000000000073, 59.94000000000051, 69.93000000000029, 79.92000000000007, + 89.90999999999985, 99.89999999999964, 109.89000000000124, 119.87999999999921, + 129.8700000000008, 139.86000000000058, 149.85000000000036, 159.84000000000012, + 169.82999999999993, 179.82000000000153, 189.8099999999995, 199.8000000000011, + 206.45236060221492, 209.79000000000087, 219.78000000000063, 229.77000000000044, + 239.7600000000002, 249.75, 259.7399999999998, 269.7300000000014, 279.71999999999935, + 289.71000000000095, 299.7000000000007, 304.1057926103244, 309.6900000000005, + 319.6800000000003, 329.6700000000001, 335.68694573744204, 339.65999999999985, + 349.64999999999964, 356.21562712122704, 359.64000000000124, 369.6299999999992, + 371.0963306223184, 379.6200000000008, 382.2175836826243, 389.6100000000006, + 391.3003695961686, 398.8392641975053, 399.60000000000036, 405.7751392773962, + 409.59000000000015, 412.09939892075494, 418.3574095291986, 419.5799999999999, + 424.91071107529535, 429.5700000000016, 431.0113014947437, 437.3768414455919, + 439.5599999999995, 443.8078426269982, 449.5500000000011, 450.6490480295367, + 457.4554509118964, 459.5400000000009, 464.61489710723146, 469.53000000000065, + 471.61886147558454, 478.38781724665904, 479.52000000000044, 485.5177591713746, + 489.5100000000002, 492.5595903172301, 499.50000000000006, 499.7021793565388, + 506.14779447202415, 509.4899999999998, 511.86200552070324, 516.9809871220835, + 519.4800000000014, 521.3532805789362, 525.0379575740583, 528.5111099735375, + 529.4699999999993, 531.6210068353778, 534.5273343825203, 537.3389447545337, + 539.460000000001, 540.2297739928533, 543.2288117286705, 546.5760645206362, + 549.4500000000007, 550.2667644159777, 554.6038204073161, 559.4400000000005, + 559.7558712060081, 566.246345488038, 569.4300000000003, 574.4710690119894, + 579.4200000000001, 584.8075760665496, 589.4099999999999, 598.3613489414292, + 599.3999999999996, 609.3900000000012, 617.6410696855016, 619.3799999999992, + 629.3700000000008, 639.3600000000006, 648.8224390281875, 649.3500000000004, + 659.3400000000001, 669.3299999999999, 679.3200000000015, 689.3099999999995, + 699.3000000000011, 709.2900000000009, 719.2800000000007, 729.2700000000006, + 739.2600000000002, 749.25, 759.2399999999998, 768.5594341532345, 769.2300000000014, + 779.2199999999993, 789.210000000001, 799.2000000000007, 809.1900000000005, + 819.1800000000003, 820.6283287271044, 829.1700000000001, 839.1599999999999, + 844.9640204477527, 849.1499999999996, 859.1400000000012, 863.588153362166, + 869.1299999999992, 879.1200000000008, 880.2281715726061, 889.1100000000006, + 896.019917584853, 899.1000000000004, 909.0900000000001, 911.7040251797449, + 919.0799999999999, 927.7218976399485, 929.0700000000015, 939.0599999999995, + 943.6632372604785, 949.0500000000011, 959.040000000001, 959.5017490108323, + 969.0300000000007, 976.1268280093843, 979.0200000000004, 989.0100000000002, + 993.5282880901764, 999.0, 1008.9899999999997, 1012.2437375664239, 1018.9800000000014, + 1028.9699999999993, 1032.1395229363402, 1038.960000000001, 1048.9500000000007, + 1056.4968702934952, 1058.9400000000005, 1068.9300000000003, 1078.92, 1088.9099999999999, + 1097.2271652406007, 1098.8999999999996, 1108.8900000000012, 1118.8799999999992, + 1121.4141856498068, 1128.8700000000008, 1138.8600000000006, 1148.8500000000004, + 1152.54566992084, 1158.8400000000001, 1168.2667930272244, 1168.83, 1178.8200000000015, + 1179.664252623713, 1188.8099999999995, 1189.309914792175, 1197.627935595493, + 1198.800000000001, 1204.9010724599186, 1208.7900000000009, 1211.6045994886163, + 1218.0395536037336, 1218.7800000000007, 1224.1466013944032, 1228.7700000000004, + 1230.1898073810887, 1236.5631036507352, 1238.7600000000002, 1243.2871335807947, + 1248.75, 1250.9755238770051, 1258.7399999999998, 1260.0631881380452, 1268.7300000000014, + 1272.237143474863, 1278.7199999999993, 1288.710000000001, 1294.3346870837477, + 1298.7000000000007, 1308.6900000000005, 1318.6800000000003, 1328.67, 1338.6599999999999, + 1348.6499999999996, 1358.6400000000012, 1368.6299999999992, 1378.6200000000008, + 1388.6100000000006, 1398.6000000000004, 1408.5900000000001, 1412.4087164211855, + 1418.58, 1428.5700000000015, 1438.5599999999995, 1445.7989223053985, 1448.550000000001, + 1458.5400000000009, 1468.5300000000007, 1469.7366401395354, 1478.5200000000004, + 1488.5100000000002, 1491.5665438015092, 1498.5000000000002, 1508.4899999999998, + 1509.231521510775, 1518.4800000000014, 1524.1090106970858, 1528.4699999999993, + 1537.280089253008, 1538.4600000000007, 1548.4500000000007, 1549.5965544563483, + 1558.4400000000005, 1561.7796657129388, 1568.4300000000003, 1573.6800249080425, + 1578.42, 1585.1555514668316, 1588.4099999999996, 1596.1989402204795, 1598.3999999999996, + 1606.6705636151144, 1608.3900000000012, 1616.8899312103722, 1618.3799999999992, + 1626.915992669452, 1628.370000000001, 1636.9315244093043, 1638.3600000000004, + 1647.0959692552217, 1648.3500000000004, 1657.7587621499017, 1658.3400000000001, + 1668.2194684543229, 1668.33, 1678.1739566141182, 1678.3200000000015, 1687.7935853332322, + 1688.3099999999995, 1695.1685689594312, 1698.300000000001, 1701.1819316371884, + 1706.2032278614479, 1708.2900000000009, 1710.5738644188268, 1714.5494853856019, + 1717.5487912803235, 1718.2800000000007, 1719.8983300205584, 1721.5265601141716, + 1721.021381403866, 1719.5453865843983, 1718.2800000000007, 1715.9945770960821, + 1710.1401985647242, 1708.2900000000009, 1699.0423579815517, 1698.300000000001, + 1688.3099999999997, 1686.6463357829896, 1678.3200000000015, 1675.6611164106084, + 1668.33, 1668.3299935334796, 1663.1693845346313, 1659.0291079396768, 1658.3400000000001, + 1657.3776619921173, 1657.3312145818543, 1658.3400000000001, 1658.444584537792, + 1661.3442263085253, 1666.0137240740478, 1668.3300000000002, 1671.8142308938234, + 1678.3200000000015, 1678.6323833311562, 1686.9722001476014, 1688.3099999999995, + 1695.9288737081895, 1698.3000000000009, 1705.3615653792456, 1708.2900000000009, + 1715.1701023256555, 1718.2800000000007, 1725.6576858680878, 1728.2700000000004, + 1736.831730896719, 1738.26, 1748.25, 1749.3386890626925, 1758.2399999999998, + 1762.3339793307468, 1768.2300000000014, 1775.8496177132752, 1778.2199999999993, + 1788.210000000001, 1790.2234480896998, 1798.2000000000007, 1806.5546728586569, + 1808.1900000000005, 1818.1800000000003, 1826.838110299943, 1828.1700000000003, + 1838.1599999999999, 1848.1499999999996, 1854.1799074180915, 1858.140000000001, + 1868.1299999999992, 1878.1200000000008, 1888.1100000000006, 1896.2428275175969, + 1898.1000000000004, 1908.0900000000001, 1918.08, 1928.0700000000015, 1938.0599999999995, + 1948.050000000001, 1958.0400000000009, 1962.2941449438524, 1968.0300000000007, + 1978.0200000000004, 1988.01, 1998.0, 2007.9899999999998, 2017.9800000000014, + 2019.7997899274471, 2026.5076524126907, 2077.92, 2071.9507780100685, 2067.9300000000003, + 2063.488790458532, 2057.9400000000005, 2055.7311929885577, 2048.16605272452, + 2047.9500000000007, 2040.4226409897421, 2037.960000000001, 2032.9801955397452, + 2027.9699999999993, 2025.6732543588973, 2018.4983119065075, 2017.9800000000014, + 2010.8929271101292, 2007.9899999999998, 2002.8600275384072, 1998.0, 1994.7305177463822, + 1988.0100000000002, 1986.3698922518363, 1978.0200000000004, 1977.70843929148, + 1968.5714909525527, 1968.0300000000007, 1959.3635591533389, 1958.040000000001, + 1950.0055988691734, 1948.050000000001, 1940.8997869298983, 1938.0599999999995, + 1932.5008251454155, 1928.0700000000015, 1924.403671858687, 1918.08, 1916.7132137201586, + 1908.9839782534427, 1908.0900000000001, 1901.535628868237, 1898.1000000000004, + 1893.8891389280664, 1888.1100000000006, 1885.928774643207, 1878.1200000000008, + 1877.8093378597048, 1869.531467380153, 1868.129999999999, 1861.220119200935, + 1858.1400000000012, 1852.6987649784312, 1848.1499999999996, 1844.1616579753745, + 1838.1599999999999, 1835.4110048533287, 1828.17, 1826.7976377666412, 1818.4501098182438, + 1818.1800000000003, 1810.208504644739, 1808.1900000000003, 1802.1788090468126, + 1798.2000000000007, 1794.169913003847, 1788.210000000001, 1786.5988207211317, + 1779.284785229906, 1778.2199999999996, 1772.0254810883366, 1768.2300000000014, + 1764.9107196923214, 1758.2399999999998, 1757.789667779941, 1750.676932776111, + 1748.25, 1743.5855017221788, 1738.2600000000002, 1736.5906750880265, 1729.7900742419808, + 1728.2700000000004, 1723.2001920142511, 1718.2800000000007, 1716.704710129087, + 1710.1330731610726, 1708.2900000000009, 1703.5794163492951, 1698.300000000001, + 1696.8405672188132, 1690.1930381362824, 1688.3099999999995, 1683.2316495443242, + 1678.3200000000015, 1676.0586098030656, 1668.4622401597126, 1668.33, 1660.5924906346131, + 1658.3400000000001, 1652.1350901584096, 1648.3500000000006, 1643.2703078720658, + 1638.3600000000006, 1633.773609013976, 1628.3700000000008, 1623.2926524413776, + 1618.3799999999992, 1611.8619183228195, 1608.3900000000012, 1599.4032186813408, + 1598.3999999999996, 1588.4099999999999, 1586.7323609267255, 1578.42, 1573.4328523408042, + 1568.4300000000003, 1559.6828291248019, 1558.4400000000003, 1548.4500000000007, + 1546.0784222894285, 1538.460000000001, 1532.9278754797376, 1528.4699999999996, + 1520.603051699981, 1518.4800000000014, 1509.8999084203185, 1508.4899999999998, + 1500.4259357086619, 1498.5, 1492.831515137949, 1488.5100000000002, 1486.9631302285864, + 1482.4960682192534, 1478.8341748939972, 1478.5200000000004, 1475.9194725138439, + 1473.5591008728825, 1471.5456842708586, 1469.7647546911794, 1468.5300000000007, + 1467.9521087150522, 1466.7899668064986, 1465.5719005741569, 1464.4611850973808, + 1463.2701841980902, 1461.9745795393765, 1460.2891874228728, 1458.5400000000009, + 1458.3695316803532, 1456.3396940795596, 1453.7216307603467, 1071.4049599436164, + 1068.9300000000003, 1058.9400000000005, 1051.749751106112, 1048.9500000000007, + 1038.960000000001, 1030.5321229019305, 1028.9699999999993, 1018.9800000000014, + 1014.7567285732343, 1008.9899999999998, 1002.6547061031051, 999.0, 992.2642026827584, + 989.0100000000002, 983.2791561242854, 979.0200000000004, 974.9701846837597, + 969.0300000000007, 967.5847785771742, 960.5344892498974, 959.0400000000009, + 953.2366508668686, 949.0500000000011, 946.3432847788661, 939.5758467702935, + 939.0599999999995, 932.4764041297136, 929.0700000000015, 925.3685864132376, + 919.0799999999999, 918.0542267595223, 910.1140154248167, 909.0900000000001, + 901.2003015608566, 899.1000000000004, 891.7264285957424, 889.1100000000006, + 881.3614005745129, 879.1200000000008, 870.1072423812228, 869.1299999999992, + 859.1400000000012, 857.9576632506827, 849.1499999999996, 845.1498127227615, + 839.1599999999999, 830.6752173504668, 829.1700000000001, 819.1800000000003, + 814.1325763996049, 809.1900000000005, 799.2000000000007, 795.6101842170175, + 789.210000000001, 779.2199999999995, 773.5384067715268, 769.2300000000014, + 759.2399999999998, 749.25, 743.753700247591, 739.2600000000002, 729.2700000000004, + 719.2800000000007, 709.290000000001, 699.3000000000011, 691.7477138960236, + 689.3099999999995, 679.3200000000015, 669.3299999999999, 659.3400000000001, + 649.3500000000004, 639.3600000000006, 629.3700000000008, 619.3799999999992, + 609.3900000000012, 599.3999999999996, 596.0415247237103, 589.4099999999999, + 579.4200000000001, 569.4300000000003, 559.4400000000005, 549.4500000000007, + 542.8534952872316, 539.460000000001, 529.4699999999993, 519.4800000000014, + 509.4899999999998, 508.4934627991995, 499.5, 489.51000000000016, 479.52000000000044, + 478.56060557609374, 469.53000000000065, 459.5400000000009, 451.1917036401119, + 449.5500000000011, 439.5599999999995, 429.5700000000015, 428.31270025379786, + 419.5799999999999, 409.5900000000001, 405.7312111567007, 399.60000000000036, + 389.6100000000006, 383.36690056299784, 379.6200000000008, 369.6299999999992, + 361.7432285020666, 359.64000000000124, 349.64999999999964, 340.1843005831017, + 339.65999999999985, 329.6700000000001, 319.68000000000023, 318.6041510917666, + 309.6900000000005, 299.7000000000007, 297.7110515467184, 289.71000000000095, + 279.71999999999935, 278.1762531856333, 269.7300000000014, 259.7399999999998, + 258.3900743726905, 249.75, 239.8786173750889, 239.76000000000022, 229.77000000000046, + 221.97176846736306, 219.78000000000065, 209.79000000000087, 206.34461392762495, + 199.8000000000011, 192.16893788299447, 189.8099999999995, 179.82000000000153, + 178.38382833019216, 169.82999999999993, 163.49996329079127, 159.84000000000015, + 150.19401042723499, 149.85000000000036, 139.86000000000058, 136.24661099497897, + 129.8700000000008, 122.66207319661714, 119.8799999999992, 109.89000000000124, + 101.07124649863407, 99.89999999999964, 98.37127050861942, 89.90999999999985, + 84.66283129913418, 79.92000000000007, 77.85333978368982, 72.5350044915935, + 69.93000000000029, 66.92355479353938, 62.06535699566111, 59.94000000000051, + 56.60442663936466, 50.38418616510138, 49.95000000000073, 42.43604244790729, + 39.960000000000946, 34.49882973893387, 29.969999999999345, 25.713894398164644, + 19.980000000001382, 14.01247907131485, 9.989999999999782, 0.0, -2.4144021801316162, + -9.989999999999782, -19.979999999999563, -29.969999999999345, -39.960000000000946, + -44.57094843114739, -49.94999999999891, -59.94000000000051, -69.92999999999847, + -79.92000000000007, -84.16567811608793, -89.90999999999985, -99.89999999999964, + -109.88999999999942, -119.8799999999992, -122.73282864693184, -129.8700000000008, + -138.79230434227432, -139.85999999999876, -149.85000000000036, -152.35871098209495, + -159.83999999999833, -162.98462761780573, -169.82999999999993, -172.71732099316512, + -179.8199999999997, -181.76749900972698, -189.8099999999995, -190.48600061433356, + -198.05978238830508, -199.8000000000011, -203.91665472154463, -208.62127018912673, + -209.78999999999905, -212.11826241074218, -214.60690879457758, -216.22495938663695, + -217.85798091542623, -218.52047122384045, -218.8779322730634, -219.67404026940505, + -219.78000000000065, -220.0354567164596, -219.78000000000065, -219.7211865695039, + -219.60535086765435, -218.74467990321727, -217.42187899575922, -214.378864277237, + -210.3441939046255, -209.78999999999905, -204.66581873458577, -199.8000000000011, + -198.30373398817048, -190.72187784363766, -189.8099999999995, -180.65843157255367, + -179.8199999999997, -169.82999999999993, -159.83999999999833, -149.85000000000036, + -139.85999999999876, -129.8700000000008, -120.02282300458846, -119.8799999999992, + -109.88999999999942, -99.89999999999964, -98.77633627006722, -89.90999999999985, + -79.92000000000007, -78.44651978232653, -69.92999999999847, -59.94000000000051, + -53.820442960637045, -49.94999999999891, -39.960000000000946, -30.72889395216483, + -29.969999999999345, -19.979999999999563, -9.989999999999782, -4.071714732020104, + 0.0, 9.989999999999782, 19.045995449734907, 19.980000000001382, 29.969999999999345, + 39.960000000000946, 42.038115774080154, 49.95000000000073, 59.940000000000516, + 60.93457929466615, 69.93000000000029, 79.92000000000007, 87.5322634292241, + 89.90999999999985, 93.1332844427881, 96.8051996050702, 98.86673700491774, + 99.74913101775421, 99.89999999999964, 100.19089706086352, 99.89999999999964, + 99.57520198172608, 98.57848369359841, 97.12706797107586, 95.49256653810617, + 93.48897231907223, 90.71540741038949, 89.90999999999985, 87.06285480644642, + 83.00650387197621, 79.92000000000007, 78.34254173897091, 73.36409621758173, + 69.93000000000029, 67.35387590186451, 60.185792325881174, 59.94000000000051, + 51.84924390053204, 49.95000000000073, 40.58053397240497, 39.960000000000946, + 29.969999999999345, 24.044771754585668, 19.980000000001382, 9.989999999999782, + 1.0782548523235889, 0.0, -9.989999999999782, -19.979999999999563, -29.969999999999345, + -38.509342175698514, -39.960000000000946, -49.94999999999891, -59.94000000000051, + -69.92999999999847, -79.92000000000007, -89.90999999999985, -99.89999999999964, + -109.88999999999942, -116.29319136730636, -119.8799999999992, -129.8700000000008, + -139.85999999999876, -149.85000000000036, -159.83999999999833, -169.82999999999993, + -171.62762807641636, -179.8199999999997, -184.964699506491, -189.8099999999995, + -193.53832259434756, -199.8000000000011, -200.30729448182547, -206.31094700906576, + -209.78999999999908, -211.88223764868542, -216.91907650870766, -219.78000000000065, + -221.96988184432124, -226.81595808009888, -229.76999999999862, -231.3730920717553, + -235.71949283125485, -239.76000000000022, -240.28461347112108, -244.22309414837636, + -248.36328267877983, -249.75, -252.10892449101416, -255.8497394217043, -259.56413670179165, + -259.7399999999998, -263.15738523711946, -266.8954379991952, -269.72999999999956, + -270.697212503634, -274.42737890394955, -278.42788183094996, -279.71999999999935, + -282.4775381099004, -286.22564889874116, -289.71000000000095, -290.29316656069955, + -293.84034141931494, -297.91035528831827, -299.6999999999989, -301.8315864915359, + -305.8663330788358, -309.6900000000005, -310.4528699520252, -315.02622515869905, + -319.6799999999985, -320.2919243191631, -326.2559115735262, -329.6700000000001, + -333.5340477588673, -339.65999999999985, -341.67222648625875, -349.64999999999964, + -349.9959503233879] + energy_resource: + name: Predominant wind only + wind_resource: !include 'wrg.yaml' +wind_farm: + name: Patterson Pass + turbine: !include ../../data/windIO-plant_turbine_IEA-3.4MW-130m-RWT.yaml # DEBUG!!!!! + # turbine: !include 'NREL-2.8-127.yaml' # this is a windIO turbine-turbine not a plant-turbine + layouts: + coordinates: + x: [ + 606.1611139248125, + -7.565841734409332, + 1436.1546635665, + 2086.7966175233014, + 299.2976360952, + 714.294410916, + 1761.4756405449 + ] + y: [ + 2240.4306740884513, + -17.519102511407254, + -416.39044961224135, + 1871.7237653906122, + 1111.4557857885, + -216.9547760618, + 727.6666578892 + ] + electrical_substations: + - electrical_substation: + coordinates: + x: [100.0] + y: [100.0] + +# name: Ard Example 01 onshore wind plant +# site: +# name: Ard Example 01 offshore wind site +# boundaries: +# polygons: +# - x: [ 1500.0, 3000.0, 3000.0, 1500.0, -1500.0, -3000.0, -3000.0, -1500.0] +# y: [ 3000.0, 1500.0, -1500.0, -3000.0, -3000.0, -1500.0, 1500.0, 3000.0] +# energy_resource: +# name: Ard Example 01 offshore energy resource +# wind_resource: !include ../../data/windIO-plant_wind-resource_wrg-example.yaml +# wind_farm: +# name: Ard Example 01 offshore wind farm +# layouts: +# coordinates: +# x: [ +# -2500.0, -1250.0, 0.0, 1250.0, 2500.0, +# -2500.0, -1250.0, 0.0, 1250.0, 2500.0, +# -2500.0, -1250.0, 0.0, 1250.0, 2500.0, +# -2500.0, -1250.0, 0.0, 1250.0, 2500.0, +# -2500.0, -1250.0, 0.0, 1250.0, 2500.0 +# ] +# y: [ +# -2500.0, -2500.0, -2500.0, -2500.0, -2500.0, +# -1250.0, -1250.0, -1250.0, -1250.0, -1250.0, +# 0.0, 0.0, 0.0, 0.0, 0.0, +# 1250.0, 1250.0, 1250.0, 1250.0, 1250.0, +# 2500.0, 2500.0, 2500.0, 2500.0, 2500.0 +# ] +# turbine: !include ../../data/windIO-plant_turbine_IEA-3.4MW-130m-RWT.yaml +# electrical_substations: +# - electrical_substation: +# coordinates: +# x: [100.0] +# y: [100.0] \ No newline at end of file diff --git a/examples/x07_exclusion/inputs/wrg.yaml b/examples/x07_exclusion/inputs/wrg.yaml new file mode 100644 index 00000000..91998db4 --- /dev/null +++ b/examples/x07_exclusion/inputs/wrg.yaml @@ -0,0 +1,63 @@ +reference_height: 80.0 +wind_direction: [0.0, 22.5, 45.0, 67.5, 90.0, 112.5, 135.0, 157.5, 180.0, 202.5, 225.0, + 247.5, 270.0, 292.5, 315.0, 337.5] +wind_speed: [3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, + 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 24.5] +probability: + data: + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + dims: + - wind_direction + - wind_speed +turbulence_intensity: + data: + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + dims: + - wind_direction + - wind_speed diff --git a/examples/x07_exclusion/optimization_demo.ipynb b/examples/x07_exclusion/optimization_demo.ipynb new file mode 100644 index 00000000..478f164f --- /dev/null +++ b/examples/x07_exclusion/optimization_demo.ipynb @@ -0,0 +1,322 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0a8540f7", + "metadata": {}, + "source": [ + "# x07: Onshore LCOE w/ exclusions\n", + "\n", + "In this example, we will demonstrate `Ard`'s ability to run a LCOE analysis and optimization with exclusions.\n", + "\n", + "We can start by loading what we need to run the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d75b4457", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path # optional, for nice path specifications\n", + "\n", + "import pprint as pp # optional, for nice printing\n", + "import numpy as np # numerics library\n", + "import matplotlib.pyplot as plt # plotting capabilities\n", + "\n", + "import ard # technically we only really need this\n", + "from ard.utils.io import load_yaml # we grab a yaml loader here\n", + "from ard.api import set_up_ard_model # the secret sauce\n", + "from ard.viz.layout import plot_layout # a plotting tool!\n", + "\n", + "import openmdao.api as om # for N2 diagrams from the OpenMDAO backend\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "id": "cf2ceef4", + "metadata": {}, + "source": [ + "This will do for now.\n", + "We can probably make it a bit cleaner for a later release.\n", + "\n", + "Now, we can set up a case.\n", + "We do it a little verbosely so that our documentation system can grab it, you can generally just use relative paths.\n", + "We grab the file at `inputs/ard_system.yaml`, which describes the `Ard` system for this problem.\n", + "It references, in turn, the `inputs/windio.yaml` file, which is where we define the plant we want to optimize, and an initial setup for it." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "29850609", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding top_level\n", + "Adding aepFLORIS\n", + "Adding boundary\n", + "Adding exclusions\n", + "Adding collection\n", + "Adding spacing_constraint\n", + "Adding tcc\n", + "Adding landbosse\n", + "Adding opex\n", + "Adding financese\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/group.py:368: PromotionWarning: : Setting input defaults for input 'x_turbines' which override previously set defaults for ['auto', 'prom', 'units'].\n", + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/group.py:368: PromotionWarning: : Setting input defaults for input 'y_turbines' which override previously set defaults for ['auto', 'prom', 'units'].\n" + ] + } + ], + "source": [ + "# load input\n", + "path_inputs = Path.cwd().absolute() / \"inputs\"\n", + "input_dict = load_yaml(path_inputs / \"ard_system.yaml\")\n", + "\n", + "# create and setup system\n", + "prob = set_up_ard_model(input_dict=input_dict, root_data_path=path_inputs)\n", + "\n", + "prob.model.set_input_defaults(\n", + " \"x_turbines\",\n", + " input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\"coordinates\"][\"x\"],\n", + " units=\"m\",\n", + ")\n", + "prob.model.set_input_defaults(\n", + " \"y_turbines\",\n", + " input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\"coordinates\"][\"y\"],\n", + " units=\"m\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b0732705", + "metadata": {}, + "source": [ + "Here, you should see each of the groups or components described as they are added to the `Ard` model and, occasionally, some options being turned on on them, like semi-total finite differencing on groups.\n", + "\n", + "Next is some code you can flip on to use the [N2 diagram vizualization tools from the backend toolset, OpenMDAO, that we use](https://openmdao.org/newdocs/versions/latest/features/model_visualization/n2_basics/n2_basics.html).\n", + "This can be a really handy debugging tool, if somewhat tricky to use; turned on it will show a comprehensive view of the system in terms of its components, variables, and connections, although we leave it off for now." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "aa48878e", + "metadata": {}, + "outputs": [], + "source": [ + "if False:\n", + " # visualize model\n", + " om.n2(prob)" + ] + }, + { + "cell_type": "markdown", + "id": "723f8210", + "metadata": {}, + "source": [ + "Now, we do a one-shot analysis.\n", + "The one-shot analysis will run a wind farm as specified in `inputs/windio.yaml` and with the models specified in `inputs/ard_system.yaml`, then dump the outputs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b74f9d45", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "RESULTS:\n", + "\n", + "{'AEP_val': 222.1222378371182,\n", + " 'BOS_val': 18.246398964448733,\n", + " 'CapEx_val': 30.939999999999998,\n", + " 'LCOE_val': 21.32240323369462,\n", + " 'OpEx_val': 1.0472000000000001,\n", + " 'coll_length': 6.179125053544407,\n", + " 'turbine_spacing': 0.7489037403037934}\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "# run the model\n", + "prob.run_model()\n", + "\n", + "# collapse the test result data\n", + "test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"landbosse.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"coll_length\": float(prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + "}\n", + "\n", + "print(\"\\n\\nRESULTS:\\n\")\n", + "pp.pprint(test_data)\n", + "print(\"\\n\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "b3085438", + "metadata": {}, + "source": [ + "Now, we can optimize the same problem!\n", + "The optimization details are set under the `analysis_options` header in `inputs/ard_system.yaml`.\n", + "Here, we use a four-dimensional rectilinear layout parameterization ($\\theta$) as design variables, constrain the farm such that the turbines are in the boundaries and satisfactorily spaced, and then we optimize for LCOE.\n", + "$$\n", + "\\begin{aligned}\n", + "\\textrm{minimize}_\\theta \\quad & \\mathrm{LCOE}(\\theta, \\ldots) \\\\\n", + "\\textrm{subject to} \\quad & f_{\\mathrm{spacing}}(\\theta, \\ldots) < 0 \\\\\n", + " & f_{\\mathrm{boundary}}(\\theta, \\ldots) < 0\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b0009663", + "metadata": {}, + "outputs": [], + "source": [ + "optimize = True # set to False to skip optimization\n", + "if optimize:\n", + " # run the optimization\n", + " prob.run_driver()\n", + " prob.cleanup()\n", + "\n", + " # collapse the test result data\n", + " test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"landbosse.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"coll_length\": float(\n", + " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", + " ),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + " }\n", + "\n", + " # clean up the recorder\n", + " prob.cleanup()\n", + "\n", + " # print the results\n", + " print(\"\\n\\nRESULTS (opt):\\n\")\n", + " pp.pprint(test_data)\n", + " print(\"\\n\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f93a46df", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = plot_layout(\n", + " prob,\n", + " input_dict=input_dict,\n", + " show_image=True,\n", + " include_cable_routing=True,\n", + ")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d5fb8cca", + "metadata": {}, + "source": [ + "The result: a farm that fits in a stop-sign domain and minimzes the LCOE." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "05647c0f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.53717807 0.68701966 0.06754067 0.64462873 0.00398565 0.04290426\n", + " 0.64086142]\n" + ] + } + ], + "source": [ + "print(prob.get_val(\"exclusions.exclusion_distances\", units=\"km\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d762a8b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ard-dev-env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From b1d94440365688dcd8698ac8e73763495dc27bd7 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Mon, 1 Dec 2025 13:14:37 -0700 Subject: [PATCH 08/17] adjust modeling options for exclusions --- ard/layout/exclusions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ard/layout/exclusions.py b/ard/layout/exclusions.py index f43170a3..508d5818 100644 --- a/ard/layout/exclusions.py +++ b/ard/layout/exclusions.py @@ -61,7 +61,7 @@ def setup(self): ).T for polygon in self.windIO["site"]["exclusions"]["polygons"] ] - self.exclusion_regions = self.modeling_options.get("boundary", {}).get( + self.exclusion_regions = self.modeling_options.get("exclusions", {}).get( "turbine_region_assignments", # get the region assignments from modeling_options, if there np.zeros(self.N_turbines, dtype=int), # default to zero for all turbines ) From ffb06cf6e942d41f88c5d64c948087fde1f6bbac Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Mon, 1 Dec 2025 13:33:11 -0700 Subject: [PATCH 09/17] example working --- examples/x07_exclusion/inputs/ard_system.yaml | 19 ++++-- .../x07_exclusion/optimization_demo.ipynb | 63 ++++++++++++++++--- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/examples/x07_exclusion/inputs/ard_system.yaml b/examples/x07_exclusion/inputs/ard_system.yaml index 46bf7b36..33b7cd8a 100644 --- a/examples/x07_exclusion/inputs/ard_system.yaml +++ b/examples/x07_exclusion/inputs/ard_system.yaml @@ -132,23 +132,30 @@ analysis_options: optimizer: COBYLA opt_settings: rhobeg: 2.0 - maxiter: 50 + maxiter: 200 # debug_print: # - desvars # - objs design_variables: x_turbines: - units: m - lower: -100.0 - upper: 2100.0 + units: km + lower: -0.100 + upper: 2.100 + scaler: 0.5 y_turbines: - lower: -500.0 - upper: 2300.0 + units: km + lower: -0.500 + upper: 2.300 + scaler: 0.5 constraints: boundary_distances: units: km upper: 0.0 scaler: 2.0 + exclusion_distances: + units: km + upper: 0.0 + scaler: 2.0 spacing_constraint.turbine_spacing: units: km lower: 0.552 diff --git a/examples/x07_exclusion/optimization_demo.ipynb b/examples/x07_exclusion/optimization_demo.ipynb index 478f164f..cb3cc4d7 100644 --- a/examples/x07_exclusion/optimization_demo.ipynb +++ b/examples/x07_exclusion/optimization_demo.ipynb @@ -134,7 +134,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "b74f9d45", "metadata": {}, "outputs": [ @@ -200,10 +200,57 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "b0009663", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Return from COBYLA because the trust region radius reaches its lower bound.\n", + "Number of function values = 185 Least value of F = 0.021278038739408648 Constraint violation = 0.0\n", + "The corresponding X is:\n", + "[ 0.56521639 0.0933971 0.69295357 0.8318626 0.14882238 0.37465348\n", + " 0.69378846 1.00109928 -0.00539435 -0.15461578 0.92985467 0.54544889\n", + " -0.11213261 0.2771074 ]\n", + "The constraint value is:\n", + "[-6.15216385e-01 -1.43397097e-01 -7.42953573e-01 -8.81862604e-01\n", + " -1.98822376e-01 -4.24653483e-01 -7.43788465e-01 -1.25109928e+00\n", + " -2.44605653e-01 -9.53842150e-02 -1.17985467e+00 -7.95448893e-01\n", + " -1.37867389e-01 -5.27107397e-01 -4.84783615e-01 -9.56602903e-01\n", + " -3.57046427e-01 -2.18137396e-01 -9.01177624e-01 -6.75346517e-01\n", + " -3.56211535e-01 -1.48900723e-01 -1.15539435e+00 -1.30461578e+00\n", + " -2.20145330e-01 -6.04551107e-01 -1.26213261e+00 -8.72892603e-01\n", + " -2.08974729e-01 -1.16492247e-01 -1.55282065e-01 -2.27778531e-01\n", + " -7.59425800e-03 -4.55498492e-03 -6.24399445e-01 -3.50709894e-02\n", + " -9.86939341e-01 -7.72040444e-07 -4.56029975e-01 -3.25799695e-05\n", + " -5.50651535e-02 -4.81974862e-01 -1.67118947e+00 -1.77350562e+00\n", + " -4.52506921e-11 -6.82505964e-01 -1.70684878e+00 -9.18639348e-01\n", + " -6.83694147e-01 -1.83129354e+00 -5.55249269e-01 -4.96584157e-02\n", + " -7.75067488e-01 -1.63466128e+00 -1.22132379e+00 -9.02453341e-02\n", + " -3.11447978e-01 -1.01556085e+00 -1.72376596e+00 -7.82381461e-01\n", + " -8.38558339e-01 -6.62899495e-01 -4.54687479e-01]\n", + "\n", + "Optimization Complete\n", + "-----------------------------------\n", + "\n", + "\n", + "RESULTS (opt):\n", + "\n", + "{'AEP_val': 222.12219789320892,\n", + " 'BOS_val': 18.114996538171415,\n", + " 'CapEx_val': 30.939999999999998,\n", + " 'LCOE_val': 21.278038778614828,\n", + " 'OpEx_val': 1.0472000000000001,\n", + " 'coll_length': 5.045014077320288,\n", + " 'turbine_spacing': 0.5520001932749088}\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "optimize = True # set to False to skip optimization\n", "if optimize:\n", @@ -237,13 +284,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "id": "f93a46df", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -272,7 +319,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 7, "id": "05647c0f", "metadata": {}, "outputs": [ @@ -280,8 +327,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[0.53717807 0.68701966 0.06754067 0.64462873 0.00398565 0.04290426\n", - " 0.64086142]\n" + "[-1.75361979e-02 -4.93468387e-01 -9.15527344e-08 -2.28014110e-01\n", + " -1.66755598e-05 -2.75319218e-02 -2.40987392e-01]\n" ] } ], From 7ae3eeec1d09cd6c0f0a3070043581249788f77f Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Mon, 1 Dec 2025 13:53:25 -0700 Subject: [PATCH 10/17] fix plotter if exclusions aren't being run --- ard/viz/layout.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ard/viz/layout.py b/ard/viz/layout.py index 4d5889df..8b5d2d38 100644 --- a/ard/viz/layout.py +++ b/ard/viz/layout.py @@ -105,7 +105,7 @@ def plot_layout( ) # loop over the exclusion types - for excl_type_key, excl_type_value in windIO_dict["site"]["exclusions"].items(): + for excl_type_key, excl_type_value in windIO_dict["site"].get("exclusions", {}).items(): # handle un-implemented exclusion types if excl_type_key not in ["polygons"]: raise NotImplementedError( From 93deb4c2679805c214484ea0e09a41d8596d599b Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Mon, 1 Dec 2025 16:47:56 -0700 Subject: [PATCH 11/17] added heterogeneous maps... probably should break out into a new PR. --- ard/farm_aero/floris.py | 13 ++- ard/farm_aero/templates.py | 35 ++++++ ard/viz/layout.py | 4 +- examples/x07_exclusion/inputs/ard_system.yaml | 13 ++- examples/x07_exclusion/inputs/wrg.yaml | 103 +++++++++--------- .../x07_exclusion/optimization_demo.ipynb | 87 +++++---------- pyproject.toml | 2 +- 7 files changed, 139 insertions(+), 118 deletions(-) diff --git a/ard/farm_aero/floris.py b/ard/farm_aero/floris.py index bb10bd56..9ccc08e3 100644 --- a/ard/farm_aero/floris.py +++ b/ard/farm_aero/floris.py @@ -355,11 +355,14 @@ def setup_partials(self): def compute(self, inputs, outputs): # generate the list of conditions for evaluation - self.time_series = floris.TimeSeries( - wind_directions=np.degrees(np.array(self.wind_query.wind_directions)), - wind_speeds=np.array(self.wind_query.wind_speeds), - turbulence_intensities=np.array(self.wind_query.turbulence_intensities), - ) + if type(self.wind_query) == floris.TimeSeries: + self.time_series = self.wind_query + else: + self.time_series = floris.TimeSeries( + wind_directions=np.degrees(np.array(self.wind_query.wind_directions)), + wind_speeds=np.array(self.wind_query.wind_speeds), + turbulence_intensities=np.array(self.wind_query.turbulence_intensities), + ) # set up and run the floris model self.fmodel.set( diff --git a/ard/farm_aero/templates.py b/ard/farm_aero/templates.py index 4deeaa26..40cfdd04 100644 --- a/ard/farm_aero/templates.py +++ b/ard/farm_aero/templates.py @@ -10,6 +10,7 @@ def create_windresource_from_windIO( windIOdict: dict, resource_type: str = None, # ["probability", "timeseries", "weibull_sector"] + heterogeneous_map: floris.HeterogeneousMap | None = None, ): """ takes a windIO plant specification and creates an appropriate wind resource @@ -120,6 +121,7 @@ def create_windresource_from_windIO( wind_speeds=wind_speeds, freq_table=probabilities, ti_table=turbulence_intensities, + heterogeneous_map=heterogeneous_map, ) # stash some metadata for the wind resource wind_resource_representation.reference_height = ( @@ -163,6 +165,7 @@ def create_windresource_from_windIO( wind_directions=wind_directions, wind_speeds=wind_speeds, turbulence_intensities=turbulence_intensities, + heterogeneous_map=heterogeneous_map, ) # stash some metadata for the wind resource wind_resource_representation.reference_height = ( @@ -300,9 +303,25 @@ def setup(self): super().setup() # unpack wind query object + heterogeneous_map_spec = self.modeling_options.get("heterogeneous_map") + if heterogeneous_map_spec: + print("ACTIVATING HETEROGENEOUS MAP SPEC") self.wind_query = create_windresource_from_windIO( self.windIO, "timeseries", + heterogeneous_map=( + floris.HeterogeneousMap( + x=heterogeneous_map_spec["x"], + y=heterogeneous_map_spec["y"], + z=heterogeneous_map_spec.get("z"), + speed_multipliers=heterogeneous_map_spec["speed_multipliers"], + wind_directions=heterogeneous_map_spec["wind_directions"], + wind_speeds=heterogeneous_map_spec["wind_speeds"], + interp_method=heterogeneous_map_spec.get("interp_method"), + ) + if heterogeneous_map_spec + else None + ), ) self.directions_wind = self.wind_query.wind_directions.tolist() self.speeds_wind = self.wind_query.wind_speeds.tolist() @@ -428,9 +447,25 @@ def setup(self): super().setup() data_path = str(self.options["data_path"]) + heterogeneous_map_spec = self.modeling_options.get("heterogeneous_map") + if heterogeneous_map_spec: + print("ACTIVATING HETEROGENEOUS MAP SPEC") self.wind_query = create_windresource_from_windIO( self.windIO, "probability", + heterogeneous_map=( + floris.HeterogeneousMap( + x=heterogeneous_map_spec["x"], + y=heterogeneous_map_spec["y"], + z=heterogeneous_map_spec.get("z"), + speed_multipliers=heterogeneous_map_spec["speed_multipliers"], + wind_directions=heterogeneous_map_spec["wind_directions"], + wind_speeds=heterogeneous_map_spec["wind_speeds"], + interp_method=heterogeneous_map_spec.get("interp_method"), + ) + if heterogeneous_map_spec + else None + ), ) if data_path is None: diff --git a/ard/viz/layout.py b/ard/viz/layout.py index 8b5d2d38..f26530df 100644 --- a/ard/viz/layout.py +++ b/ard/viz/layout.py @@ -105,7 +105,9 @@ def plot_layout( ) # loop over the exclusion types - for excl_type_key, excl_type_value in windIO_dict["site"].get("exclusions", {}).items(): + for excl_type_key, excl_type_value in ( + windIO_dict["site"].get("exclusions", {}).items() + ): # handle un-implemented exclusion types if excl_type_key not in ["polygons"]: raise NotImplementedError( diff --git a/examples/x07_exclusion/inputs/ard_system.yaml b/examples/x07_exclusion/inputs/ard_system.yaml index 33b7cd8a..7af36d8c 100644 --- a/examples/x07_exclusion/inputs/ard_system.yaml +++ b/examples/x07_exclusion/inputs/ard_system.yaml @@ -1,5 +1,16 @@ modeling_options: &modeling_options windIO_plant: !include windio.yaml + heterogeneous_map: + x: [-100.0, -100.0, 1500.0, 1500.0, 1030.39] + y: [-100.0, 1500.0, 1500.0, -100.0, 919.56] + speed_multipliers: [ + [1.0, 1.0, 1.0, 1.0, 1.125], + [1.0, 1.0, 1.0, 1.0, 1.125], + [1.0, 1.0, 1.0, 1.0, 1.125], + ] + wind_directions: [0.0, 157.5, 270.0] + wind_speeds: [6.0, 7.5, 12.0] + interp_method: linear layout: type: gridfarm N_turbines: 7 @@ -132,7 +143,7 @@ analysis_options: optimizer: COBYLA opt_settings: rhobeg: 2.0 - maxiter: 200 + maxiter: 50 # debug_print: # - desvars # - objs diff --git a/examples/x07_exclusion/inputs/wrg.yaml b/examples/x07_exclusion/inputs/wrg.yaml index 91998db4..4f22c63c 100644 --- a/examples/x07_exclusion/inputs/wrg.yaml +++ b/examples/x07_exclusion/inputs/wrg.yaml @@ -1,63 +1,62 @@ reference_height: 80.0 -wind_direction: [0.0, 22.5, 45.0, 67.5, 90.0, 112.5, 135.0, 157.5, 180.0, 202.5, 225.0, - 247.5, 270.0, 292.5, 315.0, 337.5] -wind_speed: [3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 24.5] +wind_direction: [ + 0.0, 22.5, 45.0, 67.5, + 90.0, 112.5, 135.0, 157.5, + 180.0, 202.5, 225.0, 247.5, + 270.0, 292.5, 315.0, 337.5 +] +wind_speed: [ + 3.5, 4.5, 5.5, 6.5, 7.5, + 8.5, 9.5, 10.5, 11.5, 12.5, + 13.5, 14.5, 15.5, 16.5, 17.5, + 18.5, 19.5, 20.5, 21.5, 22.5, + 23.5, 24.5 +] probability: data: - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 0.0 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 22.5 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 45.0 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 67.5 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 90.0 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 112.5 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 135.0 + - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 157.5 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 180.0 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 202.5 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 225.0 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 247.5 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 270.0 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 292.5 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 315.0 + - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 337.5 + # | | | | | | | | | | | | | | | | | | | | | | + # 3.5 | 5.5 | 7.5 | 9.5 |11.5 |13.5 |15.5 |17.5 |19.5 |21.5 |23.5 | + # | 4.5 | 6.5 | 8.5 |10.5 |12.5 |14.5 |16.5 |18.5 |20.5 |22.5 |24.5 dims: - wind_direction - wind_speed turbulence_intensity: data: - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] - - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 0.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 22.5 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 45.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 67.5 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 90.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 112.5 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 135.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 157.5 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 180.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 202.5 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 225.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 247.5 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 270.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 292.5 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 315.0 + - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # 337.5 + # | | | | | | | | | | | | | | | | | | | | | | + # 3.5 | 5.5 | 7.5 | 9.5 | 11.5 | 13.5 | 15.5 | 17.5 | 19.5 | 21.5 | 23.5 | + # | 4.5 | 6.5 | 8.5 | 10.5 | 12.5 | 14.5 | 16.5 | 18.5 | 20.5 | 22.5 | 24.5 dims: - wind_direction - wind_speed diff --git a/examples/x07_exclusion/optimization_demo.ipynb b/examples/x07_exclusion/optimization_demo.ipynb index cb3cc4d7..317fc4a6 100644 --- a/examples/x07_exclusion/optimization_demo.ipynb +++ b/examples/x07_exclusion/optimization_demo.ipynb @@ -146,10 +146,10 @@ "\n", "RESULTS:\n", "\n", - "{'AEP_val': 222.1222378371182,\n", + "{'AEP_val': 111.37566714426002,\n", " 'BOS_val': 18.246398964448733,\n", " 'CapEx_val': 30.939999999999998,\n", - " 'LCOE_val': 21.32240323369462,\n", + " 'LCOE_val': 42.524368596590215,\n", " 'OpEx_val': 1.0472000000000001,\n", " 'coll_length': 6.179125053544407,\n", " 'turbine_spacing': 0.7489037403037934}\n", @@ -203,56 +203,9 @@ "execution_count": 5, "id": "b0009663", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Return from COBYLA because the trust region radius reaches its lower bound.\n", - "Number of function values = 185 Least value of F = 0.021278038739408648 Constraint violation = 0.0\n", - "The corresponding X is:\n", - "[ 0.56521639 0.0933971 0.69295357 0.8318626 0.14882238 0.37465348\n", - " 0.69378846 1.00109928 -0.00539435 -0.15461578 0.92985467 0.54544889\n", - " -0.11213261 0.2771074 ]\n", - "The constraint value is:\n", - "[-6.15216385e-01 -1.43397097e-01 -7.42953573e-01 -8.81862604e-01\n", - " -1.98822376e-01 -4.24653483e-01 -7.43788465e-01 -1.25109928e+00\n", - " -2.44605653e-01 -9.53842150e-02 -1.17985467e+00 -7.95448893e-01\n", - " -1.37867389e-01 -5.27107397e-01 -4.84783615e-01 -9.56602903e-01\n", - " -3.57046427e-01 -2.18137396e-01 -9.01177624e-01 -6.75346517e-01\n", - " -3.56211535e-01 -1.48900723e-01 -1.15539435e+00 -1.30461578e+00\n", - " -2.20145330e-01 -6.04551107e-01 -1.26213261e+00 -8.72892603e-01\n", - " -2.08974729e-01 -1.16492247e-01 -1.55282065e-01 -2.27778531e-01\n", - " -7.59425800e-03 -4.55498492e-03 -6.24399445e-01 -3.50709894e-02\n", - " -9.86939341e-01 -7.72040444e-07 -4.56029975e-01 -3.25799695e-05\n", - " -5.50651535e-02 -4.81974862e-01 -1.67118947e+00 -1.77350562e+00\n", - " -4.52506921e-11 -6.82505964e-01 -1.70684878e+00 -9.18639348e-01\n", - " -6.83694147e-01 -1.83129354e+00 -5.55249269e-01 -4.96584157e-02\n", - " -7.75067488e-01 -1.63466128e+00 -1.22132379e+00 -9.02453341e-02\n", - " -3.11447978e-01 -1.01556085e+00 -1.72376596e+00 -7.82381461e-01\n", - " -8.38558339e-01 -6.62899495e-01 -4.54687479e-01]\n", - "\n", - "Optimization Complete\n", - "-----------------------------------\n", - "\n", - "\n", - "RESULTS (opt):\n", - "\n", - "{'AEP_val': 222.12219789320892,\n", - " 'BOS_val': 18.114996538171415,\n", - " 'CapEx_val': 30.939999999999998,\n", - " 'LCOE_val': 21.278038778614828,\n", - " 'OpEx_val': 1.0472000000000001,\n", - " 'coll_length': 5.045014077320288,\n", - " 'turbine_spacing': 0.5520001932749088}\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ - "optimize = True # set to False to skip optimization\n", + "optimize = False # set to False to skip optimization\n", "if optimize:\n", " # run the optimization\n", " prob.run_driver()\n", @@ -290,7 +243,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVURJREFUeJzt3Qd4VmWaPvAbCAmd0AkQeu8d6UoRUUHp9lHX0Smrzu7o7F93dNo67jg7ozsz6ujM6jqKSBERpYoUQ++9hU4SCAECJJCQQv7X/R4+NkASUs73nXO+c/+uKxdKIDkcQs7zPe9TyuXl5eVBREREfKu80xcgIiIizlIwICIi4nMKBkRERHxOwYCIiIjPKRgQERHxOQUDIiIiPqdgQERExOcUDIiIiPicggERERGfUzAgIiLicwoGREREfE7BgIiIiM8pGBAREfE5BQMiIiI+p2BARETE5xQMiIiI+JyCAREREZ9TMCAiIuJzCgZERER8TsGAiIiIzykYEBER8TkFAyIiIj4X4fQFiLhdXl4elixZirnzFiInJwv33DUSo0ePRoUKFZy+NBERWygzIFKEQ4cO48HHf4T1B9Nxx5SfYsDYH+F/Zy5B+05dMXv2bN07EQkL5fL4skdEbpKdnY1Hv/88Jj/zKsqVK3fd+7atX4G3fvljfPD39zB+/HjdPRHxNAUDIoWYOm0GzlVogkZNWxX4/tdeeBSnju3F4cOHdWQgIp6mYwKRQqxev7nQQICat+6A48ePIy4uTvdQRDxNwYBIIS6lp5viwcJkXc40P544ccL8qBM3EfEqBQMihejToxO2rF1a6P05sGer+TEmJgbp6en4r//6L8yYMQPr16/HqVOnFByIiGeoZkCkEDk5OejedzB+9vqHqF6z1nXv++xvb2DO1HfQoH49UzOQkZFhgoAjR44gMTERubm5qFWrFp577jlTfJiamoro6OibChFFRNxAcwZECvvHERGBV/7tJ3jxh/eha+8h6NpnCE4nJ2LDykXYu209srMu46233jLFg9WqVcOwYcOudSGwluDChQvm4c+g4u2330ZkZCSaNWuG5s2bm7f69esrOBARV1BmQOQW/u3f/g1vvPHGdT8XGxtrAoHitBVeuXIFR48eNVkDviUkJJif48etVKkS4uPjUb16dTRo0EDBgYg4QpkBkVvgq3u+iv/0009NLQBrBAYPHlzsdsLy5cujRYsW5i2QOUhOTjaBAM2bNw/nzp1D5cqVr2UOunTpgqpVq+rvRkRCQpkBkVvo0aMHOnXqhE8++SQo94rHCMwW5M8c/OhHP0Lt2rWxefNmZGVlmQBBmQMRCRZlBkSKwIfz1q1bMXny5OD9I4yIuFZHEAgOAlkHBgbbt283P8dMAjMHQ4YMQePGjfX3JiK2UTAgUoSZM2eaHydMmBCy+8TgIGDs2LG4++67TYdCIHMQmGewdu1a08kQOFpo2LChOZIQESkpHROIFGHEiBHYs2ePeRi7zY4dO7BlyxYcO3bsWuZg5MiR6NWrl/l/BgYKDkSkOJQZECkEK/43btyI4cOHu/IesciQb3zwJyUlmaxBvXr1zPu2bduGxYsXo2nTpteOIFj4qOBARAqiYECkECzeO3/+PO655x5X3yMeK/Chz7cAHh0MGjTIBAjLly83HQzdunXDuHHjcPnyZZw+fVrBgYhco2BApBCrVq0yg4KCWTwYLHXr1jXtj3zjNERmDgK1CKwz+OyzzxAVFXUtc8C2x0aNGjl92SLiENUMiBSCGYHMzEx8++23YXWPAsEBswYchsSaA3YnfO973zPvW7NmzbVjheLOUhARb1MwIFIA7hrgLoEf/vCHZtJgOGMAcOnSJTMFkccH77//vpltwKxIIHMwcOBATUcUCWM6JhApwJdffmkeiGzrC3d89c9AIHC8wDHJXMscGKG8b98+U3/AlsbZs2ebaYwMEHisoMyBSHhQZkCkAA8//LAJCFhA6PcHHoMAjmRmcMS5CzxWYBFixYoVzY6GSZMmmVHKgV8nIt6jYECkAHzl26RJE6xcuVL3p4CWy0DmgLUHHMjEIODDDz80gVOglZF1CH4PpES8QscEIjfgA46vfh9//HHdmwJwVgEf9DeORG7fvr3pVGAXxtKlS03m4J/+6Z/MZMS0tDSTPcg/XVFE3EP/MkVuwGwAU96PPfaY7k0J9O/f37wxc3Dy5ElTb1CnTh3zvrlz55pAoWmjRmjWqtW1zIGCAxF30DGByA2eeuoprF69Grt379a9sQmDg4SNG5G+YgWOZGTgTGQk7uvZE6179cKprCxkREWhcevWCg5EHKLMgEg+fFX7xRdfYNSoUbovdsnLQ8NLl8wbunbFlUaNkJqaiurp6cDq1UjcsQP7ExORxY6G/v0R26YNOrRtiwYagiQSMgoGRPLZsGEDzp49izvuuEP3xQ5ZWcDOndZbpUpAbCy4V7FO3brsYzS/pBtnGSQl4TS3MiYl4eCePWjQvDkadO2KkwAOnjmDxp06oXGrVqYOQUTsp2BAJJ9Zs2aZCviJEyfqvtjh4kWuVwRYO1CtWoG/pHzFiqjVrJl5a3O1lfFKairAbEF8PM7t2oWEcuWQ1LQpojt1Qo927dC9Z08ruBARW6hmQCQfrv/lND6uLZZSyssDTpywfjx0CMjJAcowfyAvOxvnEhNxIi0NSampaBQZiY6tW+NM+fJYtncvGrRti8adOyNWmQORUlMwIHIVB+nUqFHDzOjnSF4phexsgIWXzAZUqQLUrm3/bWRwkZ6O1IQExO/ciZSzZ3GsVi2ca9AAndq1w9gRI4DoaGSXL69jBZFiUjAgclVcXByGDBmC7777zmz7kxJian/LFq5FtOoBatYMyS00mYPz53EyJQURaWlo06ABLkZF4U+7d5vag8AQJA6R4r4FEbmZggGRq1599VW8/fbbOHXqlCbnlVRmJjB/PnD+PMBhRE4+dFNTkXXxIrbHxuJQcrKZlHjx4kVUrVoVL7zwgpmWmJCQYHYsKDgQsaiAUOSqzz77zNQMaIRuCVP2xGxAVBTnOJepPsAWOTmIrFULvYcMQe9y5UxBIrcxsp0xsGPhgw8+ML+Ug4+aNWtmMgctWrTQ3734Frt8RHyPI4gPHDiA2267zff3otg4J2DVKmDBAiA5Gaha1flAgBiUtG177VoYANSrVw9t+XOAqSPgampupKxZsya2bt2KTz/91Kxypm3btpmvBdaQiPiFMgMiAGbMmGFeQU6ePFn3ozhOnwbWr7e6BmJj3XXPGjYE2rBJsWCB4IBvvXv3Nn/v3E4ZODLgbgUeFXEHQ0xMjMka9OvXzxSXioQr1QyIALjrrruwZcsWJPMVrhQtIQFYtw5IS7MCATdtJuSre84f6NcPKOVSJAYHHDzF3QqBNy5cio6ONoECW08ZIDRt2hRRzEKIhAFlBsT3OIKYkwcHDBjg+3txS5wdsGsX+zCBZs3ccSxwYyFjSooZewyONy4FZg64YIlvrCFhcMCfo4yMDGzfvt0EBfy5Ro0aYeTIkSY4yP/rRLxGwYD43sGDB80rwQceeMD396JQV64A3C3ArADT6W7dG8Dxx7y+ypVt+5D5H/AjRozA8OHDr8scVLo6CXHFihXYv3//tVZGZg4C7xNxOwUD4ntLliwx2/LGjh3r+3tRaOqdQ4T4xiDATccCBQUDnG9QyiOC0mQOApglYJCwc+dOs/WSv+7OO+80a50zmbEATzAUHIg7KRgQ35s6dSq6dOmC6qVMK4c1tg5u3Qps3w7Uq+fuQIB4fBEd7cinZrcC33hcwDZGzjdoyGJG8PZtx4IFC8z/588cVLYxgyFSFgoGxNfYc75x40Y88sgjTl+KO19lb95s1QjwocbWQbfjEUEwRiCXADMCtWvXNm8B7du3Ny2NPFbYvXs31qxZg27dumHcuHGmDoGBA+cdKDgQpygYEF+bN2+e6Se/7777nL4Ud84R2LfPOhrwyivYDh2sGQMuw7bEHj16mDc6d+6cKVwlBgIceMUgokGDBiZr0KpVK7Qpoj1SxG5qLRRfe/zxxzF9+nRcuHBBS20Czp61ugb27rWyA16pkOc1N2lS5IwBt2JwkL+VsW7duiZblZOTY2pamDXgWxUufxIJAgUD4mutW7c233jXrl3r9KU4L7BymEcDxBoBL+FeBG5NHDPGmkLo8eMrDkE6c+YMPvnkE1ODQMwccGzyqFGj1MYottIxgfgWp87xVdhTTz3l9KU4jxkAFgmyPoBHAvXrw5N/Bl57GGwmDExDZMfC888/f+1rlW/MIvBIgYWK//jHP8wkRR4tMHPAZUwipaFgQHxr2bJlZh79lClTAL93DMTFWcuGWChYrRo8icEAgxivHGuUAHcosOCQbwHZ2dmoVauW2aOwnqOhwT9+fTzxxBOmEJFHDGyZLS62P/79r+/gVPIJ9B04FKNHj9biJh/RMYH41sSJE83kQRZw+fZYgA9O7hfgMQmDgIoV4VkMZrp3B64W6fkJa16YNThx4oSZbcDMwbvvvmuyB4GtjHwrLHPwynNP4PS6GXicgxsjy2Hq9mwsSYjCT3/3d+3r8AkFA+JbTK9yAc3XX38NX2YDeCRw9Sw6LLDeYehQoFUrp6/EFXbs2HHtaIG1B/T000+b4UgpKSkme1CtWjW8+i/fx6DTn+LOVtdnEU6m5+KuTzLw6jszMX78eIf+FBIqOiYQX+JSIu6454Ii3+FYYRYJsm2QRYLhso2vb1+gaVOnr8I1OEiLb4HMATNgLEAkDkA6dOiQWb50eNkn+PX9N9dZNKxWAU/2qIhn//nHpvW2gtsHTkmZlC/bbxfxppkzZ5oVtZMmTYKvMBPA+gC2DbINL1wCAapVy9vHHEGec8DAIPBA57AjHpMxQJjQrvAai6d7RaJcejLi+DUjYU3BgPjSt99+i5YtW157peQb27YBSUlAixaeb7+7zsmT1rZCKRaO3u7cubM5MqhQxFOgfLlAWckJ3dkwp2BAfIdV1nv37vXPEQELBTMyrAI7Lh1q3tz9OwZK6uJFbgFy+io8p2fPnpi5O6fQ93+0NRuJF/IQExMT0uuS0FMwIL7DXQQ8Q33ooYfgi0JBZgNmz7YK7BgEhFvrHQcN8XiAxwRSIrfffju2pFbF2oSbA4JzmXl4b1MWmsTGYvDgwbqzYU4FhOI706ZNM2nSPn36IKxxg9+WLVbXAPvvwy0bEHDunLW22OEFRV7EGoJfvvl3PPTUJIxtF4Fn+0ahckWY1sJpO7Ox5eQVfP75Wyoe9AG1ForvcM0sq6gDg1rCdsnQxo3AgQNA48beWTRUGsx49OoF5BvIIyUza9YsU0xbIwqIKAeczQRiY2Px1ltvqa3QJ5QZEF9hf/XBgwfx4osvIqzx1TJrBNhqFwbjeYs0cKBaCsuoY8eO5sdnX/h3dOrUydQI8GhA7YT+oWBAfPcKiKtjw7alMDnZKhLkq2V2DPgB/5zhHvAE2cKFCxEVFYWXX35ZmxF9SsGA+Mr8+fPN8pdeTCuHkytXrNkBrBHgyNnoaIQ9dhDwOIRFkgoGymTq1KmmhkYrkv1L3QTiuxGtQ4YMQVjJzAQ2bLD2C7A2wA+BANslOVugWbPwrocIAa5H3rZtG3r37u30pYiDFAyIb3DaGt8eeeQRhA1u6uN0uB07APaC+6WinrP2OT2xffvwa5UMsRkzZmh7pygYEH990+MI4mHDhiEsXhkHHooXLliDhPzyCpkB0PnzQNeu/siCBNlXX31ljs76creD+JZqBsQ3Zs+ebda4sq3Q88cCzARwqiBrBerUga8wE8BVxdpOWGYspl27di1uu+02EyiLfykYEF/Izs7G9u3bMWHCBHjaqVNWkWBCAsC9CtWqwVeYEWFGwG87JYIkPj7erDeePHmy05ciDlMwIL6wePFiXLp0yaxi9SS2C+7fb40W5mTBcNwvcCtpaVZWRGOHbW0pjIyM9H6QLGWmvJD4wpdffmn6qO+55x549px8+3arhY4V9H4LBPjn5wwFHg1oTbGto7nZUliV7ajiawoGxBc2b96MHj16oJKXNtsxJX7kCHDwILBpk5Ua90u3QH6sizh+HGjdGujSRd0DNjl//jw2bdpkNheK6JhAwl56erqpF3jzzTfhGZcuATt3WoOE2CVQrx58KzHRWrTEh5ayArZ213Cd95QpU+z7oOJZCgYk7M2bN88UEI4YMQKeyAbw4cfagBMnrNkBfk/hcgERsyKcKyC2+frrr1GrVi30799fd1UUDIg/zkX5Ta9NmzZwPRYHcogQCwY5c98ttQGBIIVn9wG8toYNgaio4HxOjhrmAp2WLYPz8X1u9erVaimUa5QZkLC3bt06M2rVtX3UfNDyTJwpcNYIMCXuhiCA1ft8IHfuDNStax1X8NU5ixi5D4DDjrgemUFCaqq9QUFKihV4VK9u38eUa/bv34/Tp0+ri0CuUTAgYW3Pnj04efKke1cWc9kOawP27bNmBrBA0OlAgNP9Tp+2jifYudChAxARYR1ZFIT1DLNmASzOtKPAkbMUsrOBfv38XSsRRIsWLULFihU1X0CuUTAgYW369OnmR9cVSTEbcOyYVRvAV8F80Fap4vRVWZkJPtQ54Y/p+eL09DNTwOK+NWus/y7LICQuH+K94Tm2jgeC+u+iX79+qK7Mi1ylYEDC2po1a9CqVSs0ZjrbTZiC/+47KwvA2gA3HGHwCOD2260fS/oKv21b60iBwQ0DgtKsFGYQwEwAazuaNi3575diSUtLw/r16/H000/rjsk1CgYkrOeuc77AM888A9dgCpwBAKcJsvjODa1yPBbgw5urnUsblPD3cUwwAwJmFzghsbhYf8C3Xr2s2gRtIQyqWbNmme4ajSCW/BQMSFhnBVgkNXLkSKcvxXrYcWYAXznzLJ7LktwQCJw7Z7316VP2hzADCn4c1hhwUBI7I271MVl4yM2LnCyoQCBk0zhr1qyJQYMGheYTiicoGJCw9fHHH5u56zwbdbxIkMuFmA1g+t0tWxOZEQgEAmzhs+MVOQOdQLAzd661WZGp/xvXKweKFFlfwL+fdu2UEQhhkMx/E67trhFHKBiQsPXdd9+hU6dOzo4g5mId1gYkJQFNmgSvJ780AcrZs/YGAjdmCVgEyC4JDk8KzCdg1oABAO8LjxU4YliLh0LmwIEDOHXqFMaNGxe6TyqeoGBAwlJqaqrppX7uueecvRC+AuaDz21bBtm90KmTVagXjDN6fkwGP40aWUEHawl4VMIOAb4iDbQrSsi3d0ZEROChhx7SnZfr6F+jhKXPP/8cubm5mDRpkjMXcPSolQZn14CbXvly5wFfmXPEbyiCEz74WQvAt/wUCDhi5syZZupgDY12lhvo0EjC0rJlyxAdHe1MvcDhw8CqVczJwlUYCDBlz2DATVkKCdnCrlWrVqEzJ0qK3ECZAQlL27ZtM+eiIS+S4iChtWutV74cK+y2QIArgHlWL74ze/ZstRRKoZQZkLBz9OhR7Nq1C3feeWfoZwisW2edl7s1EOCkQKXofWnOnDmmpXDo0KFOX4q4kDIDEnY++ugjlCtXDoMHDw7tJ2aBHKfocZiQm/BYoEcPKyOgQMDXLYV9+vRRS6EUSJkBCTtLlixBbGxs6EYQs22O/foctOOmjACvi/sO2OKnjICvHTp0yCzsuu+++5y+FHEpBQMSVthBsGXLFgwYMCA0n/DKFWDrVmvATm4uXBUIsH6BA4DcMOlQHG8prFChAh555BH9TUiBFAxI2HURsGp6zJgxofmEzAbs3g3UqQPXYFDCQIALfzjUR3yPrbbsrGGHjUhBFAxIWJk3b57Z0x6SdCgLBjdvts7k+QrcDZip4IyDZs2s6YJumXgojrl06ZKZxqmWQimKggEJKzt37sTw4cNRNdgPZ7765vEApwveOFDH6YmH3AXQt69VLyC+98UXXyArK8u5AVziCQoGJGxcvHgRcXFxGDVqVPA/GbsGOLiHI3fdhNmA4cOBmjWdvhJxUUth9erVMWzYMKcvRVxMrYUSVqNWL1++HPziQa7dTUx01xQ/ZgSYoXBbcCKO49RBtRTKrSgzIGFVL8CZ67179w7eJ+HSnW+/tdYRuwWPKrgHoXp1p69EXObw4cM4ceIE7r33XqcvRVxOwYCE1VCVXr16BW+oyuXLwKZN7lo+xNqFhARrCyC3EIrcMHOD/x4ef/xx3RcpkoIBCQsHDx5EYmJi8EYQs0p/2zarUj82Njhrf0vj+HHrejhh0E3HFuKa4kFuKazlluBVXEvBgIRNvQBNmTIlOJ/g5Elg1y6gUSP3jPTl+GNOPOzVC6hc2emrEZfJyMjA0qVL0bFjR6cvRTzAJd/VRMpm9+7d6NKlC1q0aBGcW5mebu0ccNNDl4OOunUDQr2ZUTzhyy+/NAW1EyZMcPpSxAMUDIjn5eXl4ZtvvsFjjz0WnAmDZ85Ym//cFAgwU8E6AQUCUsQRQbVq1TBy5EjdI7klBQPieStWrDBLWDhu1dYU/J49wJYt1vAeNw0WYgEjCwfdUrcgrm0pZGcNdxKI3IryixIWc9cjIiLsKR7kMKGkJEYYwPr11vAeNwUCgTHI3Dvgpg2J4ipHjx41BbV3332305ciHqHMgIRFZqB9+/YmJVrqAODCBevBf/EiexStGgFW6UdGwlWYFeCoZQYDIrdoKXzyySd1j6RYFAyIp3FD4Z49e/CDH/ygZL8xOdl64J87Z52/MxhgpwADA7ZhuWkL4Y1Dj9q1c8+cA3Ft8WDfvn1Rx61fx+I6CgbE80VSOTk5GD9+/M0DgphO53Q+vvHBz59jm1VGBrB6tVUUyPNU1gQwK8BZAjyHd3NRHhcQcSOhSCEyMzOxePFiPPzww7pHUmwKBsTTduzYgXp16mBo06bWdEDOAOCroZQUq/gvgD+ff51vgwbufugXhFkL/jm1jVCK8NVXX5mWwpsCZJEiKBgQz5+N3tWzJ8ovX269yq9Rw1okRC1bFv4bvRYIsHuA0wa7drVqBkSKyJZxhfddd92leyTF5rHviCLXL2HZsmULBnJTHyvrmzcHatcOz1vE2gYGOqUtkhTfWLlypdnRoZZCKQkFA+JZ06dPNz+O5DjecH+1zAJHBjv5jzpEbnDs2DEcP35cWQEpMQUD4lmcOti4USO07NLFe2n/kggMGOI4ZJEifPvttyhXrhyeeuop3ScpkTD+Dirh7MqVK9i4cSMGd+4MZGcjrHH2AY8HwvUIRGwzb9489OnTB/Xq1dNdlRJRMCCeHbV64cIF3M82O44ODmesFeB8+UqVnL4ScbGsrCwTDHBhl0hJKRgQT1q3bh0iK1bE3ayuD/dzdB4RMCAQuUVLIWcMjB07VvdJSkzBgHjSsmXLMKRrV1SPjkbYS0iw9iWI3KKlsEqVKhg9erTuk5SYggHxnIsXL5pCqUGsrq9eHWGPkxPD/ShEyiwuLg49e/ZExYoVdTelxBQMiCfnrnPC2h0cLeyXvntOUBQpBNsJ2VaoQUNSWvoOI548G+WEtYHDhsE3wrl1Umw5NiNtKZTS0ncY8ZzVq1ejT8eOqMBZ/SKC+fPnm6mDMTExuhtSKgoGxHsT1o4dw71c2MNthH7AHQt+KJSUUsnOzjbZsu7du+sOSqkpGBBP+e6778B8wP09ewKVK8MXuIXRL39WKVVW4NKlS7j77rt196TUFAyIpyxfvhydWrRAKy4n8gMehSQnA5cuOX0l4lKzZ89G5cqVMWbMGKcvRTxMwYB4agTxV3PnYkirVv4ZwsOWQs4YUDAgRWTLevTooZZCKRMFA+KpqYOnUlIwkGfofpgvQFeuABUqqLVQCpSQkICjR49i1KhRukNSJgoGxDNmzZpldrTfc9991gPSL5kB/lk1SEYKOTbLy8vD448/rvsjZaJgQDzVS92+ZUtEV6kC3+D0Qe5eCPf9C1IqCxYsMEcETdldI1IGCgbEEzIyMrB71y6Mio311/k5swIcu6wJhHKDnJwcM42T8wVEykrBgHhm0NDlrCyMZS+1n9rsOESmRw+nr0JcaOHChWZPh+oFxA4KBsQzRwR1atbE4M6drZW+fpCRAVSt6vRViEt9/vnnqFSpklYWiy0UDIgnzPniCwxt1w7la9aEb+YLsKUwLc3pKxGXWrFiBbp164bIyEinL0XCgIIB8UT71O7du9G3cWP/tBSeOAHUqgVwM6PIDRITE3H48GEdEYhtFAyI682cOdOMIL5v/Hh/tNidPGltKezb1z/DlaTEg4boe9/7nu6c2EIrjMX1Fi5YgIb16qG9H0YQ5+ZaBZIslPTDn1dK3VLII4KWHMAlYgMFA+L6EcQbN2zAKI4gZkthuM4YYLEggwB2DjAboFZCKURubi7mzJmDKVOm6B6JbXRMIK62b98+nD13Dvd26RKeLYUcN8xCwVOngPr1gdq1FQhIkRYvXoy0tDQMHz5cd0pso8yAuNrSpUtRMSICY/v1C7+WwvPngZQUoEEDoGtXgAOVRIrRUhgVFYX7779f90pso2BAXO2L2bPRt3VrVKtXD2G3cyAzE+jdG2jbNnyPPyQo+whYL8AZAyJ2UTAgrpWZmYmVK1fiBwMGhE9L4dmzQLNmQIcO1v8rCJASthQeOnQIDz74oO6b2ErBgLjWvHnzzAjiu+++G/D6YBVmAhISrIc/jwMUBEgpxMXFmS2Fjz32mO6f2ErBgLjW3LlzUblSJdzBNjuvdwqwSJCb5dgtULeu01ckHt5H0LlzZ7Rp08bpS5Ewo24Cca1VcXHo37QpKvJVtVdlZ1uBAI8FBg9WICBlbins37+/7qLYTpkBcaXU1FQcPnIET48ZA0RFwbPq1AHat7e2D2p2gJTBt99+i/Pnz+P222/XfRTbKRgQ124pvJKXh8mDBlmjeb0mK8taNsSWQQUBYoNZs2aZpUTjxo3T/RTbefC7rPjBl3PmoHVMDJo3bw5PSky0ih69GMiIa1sKu3btisrhOHxLHKfvVOJK8+fNQy8O4/Hiop7UVKtboFs3BQNii5MnT+LgwYMYOXKk7qgEhY4JxFUFUjwX5Z7202fPYhjbp7xYL8BZAhwmxNHCIjZtKeSejkcffVT3U4JCmQFxhXfeeRe9+9+Bdz+eixMXo3D76El446uFmLl8OTwlPd3KCnCwkIhNFi1ahI4dO6JDYFiViM2UGRDH/fWv72HO4tV45b9noFy+/QMpyYn42QuPoUL58hg/ZAg8gee5nToBNWs6fSUSJpgRYEvhhAkTnL4UCWPKDIjjRwPv/O0jPPOzN64LBKheg8Z44Psv4rm/vGN+nSewaLBFi/BbqiSOFg6ePXsWgzmnQiRIFAyI42ehjZq1RflCqu77DB6FitF1EbdjBzxTPMg3EZvMmDHDtBSOHz9e91SCRsGAOCopKQmVKhe+sY/ZgsioSjhx5gw84fRpazWxiI2ZAY4grlq1qu6pBI2CAXFU48aNkXT8UKHvP3c2BSknExHDSX5e4ZUjDXG9lJQUxMfHY8SIEU5fioQ5BQPiKJ6DpiQdwr4dmwp8/8dv/wZVkIPBXbrAMy5fdvoKJJwmcV65gocfftjpS5Ewp2BAHFWhQgX84Y3/xJ9+8yy+nv43ZGdZD9KTicfw5qs/xOqlc/GnZ581v84TKla05gyI2OCbb75Bu3btzORBkWBSa6E4LlAY9fj3vof5M/8HUZUrI/X0KdSIKIdPX3rJO22FxJZCLw5KEtdhRuCLL75Q4aCEhIIBcU1A8MW0aZg+ezY+eP55NGna1BwNeCYjEMDxydWrO30VEgbi4uJw5swZDBgwwOlLER9QMCCucSUyEr3bt8cj3bsDTZvCs7ikiKOI69d3+krE4y2FFStWxMSJE52+FPEB1QyIK2RlZWHz5s3o2auXVY3v5Yp8theuXw/k5Dh9JeLx4kGOIK5WrZrTlyI+oGBAXGHatGnYt28fenHKGl9Ve7lXv1YtKyBITnb6SsSjTp8+jf3792tLoYSMggFxRaHUmjVrkJeXh559+wLsqW7SBJ7FkcR0+DCQl+f01YhHswIcwa2WQgkVBQPiiimER44cQVRUlEmLgpPWWrb0dr9+vXrA0aNWhkCkhLjKu02bNujO+hmREFAwII47dOgQTp06ZXqpWTBl8Lw9KQnIzIQnMaBhhiDw5xEp4ZbCO+64Q/dMQkbBgLgiM8Cxq71YPJj/lXWbNkBCgneLCflnUGZASmj16tVITk5Gnz59dO8kZBQMiOPGjBljAoKePXv+309yvkCPHlxeABw75t2z9337gI0bvXv9EnLTp09HREQEJk+erLsvIaNgQBzFosEdO3aY1Oh1wUAg1d6vn9Vd4NVX2FzNvHu3deQhUoKWwhocYCUSIgoGxFGLFi3C+++/b2oFuKb1JgwEeHbKNz5YvaZyZetHBgSaOyC3cPbsWezduxfDhw/XvZKQ8uB3VwknBw4cwPHjx00gwG6CAvEVUt26VocB2/W81mXQsCFw/LjVXSBShKVLl5qWwoceekj3SUJKwYA45vz582a4CoOB64oHixrm07q1VVR47hw8g10FPPKIj2epuNNXIy4PBlq2bFm8fw8iNlIwII45ePAgcnJyzI831QsUhA/U/v2tOoKMDKuw0CudBuws4AIjFRJKIVg38+WXX5ojgnLlyuk+SUhpUZE45vDhw6aAkAFBsV8JRUQArC3gscGuXVYfvxdebbPeITsb2LMHaNTIqoUQyWf9+vWmq6Z37966LxJyygyIY+677z7UrVvXrCnu0qVLyc/hhw0DuN41Oho4edIbQcHmzcCmTVZgIJLPZ599ppZCcYyCAXEMe6n37NmDTp06oXKg6r4kmEplpoCzCCpVsooL3T6xMCbGOt5g/YDIDSOI27dvj2gGtyIhpmBAHLF27VrMnDnTWltcnHqBW53HsxWrXTurn9/NMwl4rMFCSB5xpKY6fTXiomJathQOY7ZLxAEKBsQR/MaXmZlpBg6VORggFuexuHDQIKtILysLrsV6gbQ0q35ABMA333xjamcefPBB3Q9xhIIBCbmsrCzTThj4b9vaqDjCuG1b4N57rcCAcwvcemzAo43C5iqI76xYsQLNmzdHP3bKiDhAwYCE3NGjR81glTNnzqB8+fLo1q2bvZ+A9QfMFLDIkMcGFy7AdRgIMDvAwke3BiwSMmwpHDlypFoKxTEKBiTkOFegZs2a2LdvnymYqsr5AcHQtCnArMPZs+49n1+8GNixQ/MHfN5SyExZDy7mEnGIggEJucGDB5uNbFu2bLGnXqCoY4OuXYG+fa1X4QwK3Fg/sHevFhn5vKWQ7bVTpkxx+lLExxQMSMgxE9CgQQNs27Yt+GNX2X7YoYMVELjxjL5aNevH7du9t3NBbGspbNeuHWprEJU4SMGAhNTu3bsxZ84c8yO7CYKaGcgfELDtcPRooE4d9w0n4kRC1jYcOOD0lUiIXbhwwfxbUEuhOE3jiCWkOGSIhYPnri4aCtk5KQMCvrGKf+NG6wHslkwBjzM4Xll7C3xnyZIlpqVQRwTiNGUGJGS4h4DFg61atTLDhtq2bYvqrPoPJa5DDmw+dNOSo5o1rU2MnI+goMBXLYVNmzbFwIEDnb4U8TkFAxIyJ0+exKVLl0wwsGnTptAcEdyI44tZp8DMwNVZB67BQGDBAiA52ekrkRCZO3cu7rzzTrUUiuMUDEjIMCsQGRmJmJgYbN261bmd7VWqAH36WCuRU1Lgqs2G7HjYv1/ZAR9gduzIkSP2z9kQKQXVDEjIcCERtxQeOnTIZAgcyQwE8IyeUwoTE4GMDLhGgwZWxoL7FbhzQcLWtGnTTEvhAw884PSliCgzIKFTq1YtM2SIRwTkaDBATZoA3btbhYVuwawFWwzddoQhQSkebNOmjQmQRZymYwIJCU5YW7x4samcZnq0ZcuW7ljVykr+8+fdNZCIxYTMWLipwFFslZ6ejl27dqmlUFxDwYCEBHupd+7cadKizAw4Vi9QUEFhy5ZWMOCWhy9XHDdvbgUqEpYWLVqE7OxsTJo0yelLETEUDEhIBFoK2V4Y9DHEJcVWw/r13VNMyEJCZivUYhi2Vq5cicaNG2Po0KFOX4qIoWBAgi4tLQ2nTp0ywcCBAwfM/7smM0CVKgEdOwKXLgE5OXCFEyeAuDinr0KCZN68ebjrrrvUUiiuoWBAgo7dA9SiRQtTL0Cu29DGDYdMzbPX3w14RMCOArcEJ2Kb7du3Iz4+Hl25REvEJRQMSNA1atQIo0ePNguKWC/AiWuuq6COjASGDbOOC9ySrWBg4qa2R7HF1KlTUb58eY0gFlfRnAEJunr16pk3YmbAVUcEBRXvnTpltfg5XdiYne2eTIXY2lLYunVrs7lTxC2UGZCg4lKiVatW4fLly6Z4kMGAq4oHb5Sa6o5xwAwGeETAgEA8Lzc3F8uWLcPf//53c0ygwkFxGwUDElT79u3D8uXLTUvh4cOHzbZCV2cGYmKsH50+q2dHQdu21spl8bSPPvoIg9pEY9pPR+HwRz/GpPbAqq+nYubMmU5fmsg1OiaQoLcUNmvWDBEREdeKB12dGeBxBof+XLgA1K7tfN1AxYrOXoOUyccff4zPf/sUlj9UGVERla/9fOKFXIx9/kFTOzBhwgTdZXGcMgMSNByqcvToUdNSSCweZG+1q89KWUjIMcVpaU5fibVm2S2zD6RURwP//cqP8dlEBgLXj7xuXKMC/jw6Ci88+4z5dSJOUzAgQXPs2DEzfjgQDLi+XiCgcWPADaOSz5yxhg+JJ8XFxaFd9QxUqVjw7osBsRGIqZBqfp2I0xQMSNCwlbB///6mk4DFg64aQ3yrYKBDB7jClStOX4GU0okTJ1A9quglWNUiy5lfJ+I01QxI0DRs2NC8BbIE7CzwRGYgf2uf02f2CgY8KyYmBodSCw/mMrLzcOz8FfPrRJymzIAExaVLl7B161bTUkiBtcWeyAxQfLyVpneaggHPGjx4MA5fromlhwruTHl95WWkRTU0v07EaQoGJCi4g2DOnDmmiDBQL8DCQc+8CmInwdVAxjE1alhDkMST2E77uz/9DU9/nYG/rL+M7Nw88/PnM/Pw00WZeGdjNv7857+YXyfiNB0TSNBaCnlEUK1ateuKB8uVK/oM1TWqV3d+1gBHNrttbLOUyPjx4wHMwvceexRvr09HjUrlkJyeh5xqjfD+x3+6+n4R5ykzILZjsSCXEwW6CDxVPBhQuTLgdODCrIpaCz2PD/xmzVugWe878ZPff4L/nbPUtNwqEBA3UWZAbJeSkmLWFLds2dL8P6ulk5OTvVM8SFFR1swBntlzGqATzp0DtmyxpiI6HZhIqe3Zswe7du3C008/jQcffFB3UlxJmQGx3ZUrV9CxY0ezndCTxYPELoj+/Z0LBIjBCLcWalmRp3366afmeEyTBsXNFAyI7VgrMHnyZFS82pbHeoE6deogNjbWW3ebD2OnxxGziPHSJWevQ8pk8eLFJkvG6ZsibqVgQGzFiYPx8fHXuggoUC/gmeJB4ojYnTutVL2TwUhmpjtGI0upZGZmYtu2bdpSKK6nYEBsxeFCU6dONQOGAjwzhjg/tnuxXsDJFcIMnngdWmPsWQsWLDCzNnREIG6nYEBsbylkO2FgGRELBxMTE71VLxDAtkinH8TNm2uNsYetX78e9evXx6hRo5y+FJEiKRgQW7GlkOejgSMBT6wtLkyVKs4HA3TqlPMDkKTUmQEGAhosJG6nYEBsc/HiRdNGGJgvEAgGoqOj0aJFC28GA25YL7t6tTUeWTxl//79pl6gd+/eTl+KyC0pGBBbgwG2EwbmCwSKBz01efDGFD3f3HBcwWCAbYbiGaydofvvv9/pSxG5JQUDYhuejT755JOozlG+Xi4eDKhaFYiOdseeBBZkHjrk9JVICVsKmRELzNsQcTMFA2ILjhzmEQEHDgWwo4BjVz1ZPEjs709Odv6ogIOPuLBo927g7Flnr0WKJSsry2ztHDp0qO6YeIKCAbHF6dOn8d5775kCwgBPFw8Siwc5Z8ANEwADWxRVSOgJ8+bNMzMG1FIoXqFgQGxrKYyIiECzZs2uqxfgkUHr1q29eZdZQMgdBRz84zTWXDRpwkEOGlHsARs3bkTt2rXVUiieoWBAbAsGeDYaGEEcyAz06NED5Z2c718W/LPUqOGuV+MsIpw7F1i7lhWbTl+NFNFSeNddd13370HEzTz6XVrcNoL4yJEj17UUkufWFheWnndbFT/rB9hdsGyZlSnIV6ch7giMt2zZgn79+jl9KSLFpmBAyuzChQuoUaPGdS2Fqamppn7As/UCAY0aWRsM3YQ7C9jyeP68FRCsXMkKTqevSm5oKRw7dqzuiXhGuTyWgYvYgF9KgXkCy5Ytw7Bhw8wed64z9rR9+4ATJ+BKrGdg10PbtgBHQHNaYf36VkaDew0k5AYOHIikpCQcPnxYd188I8LpCxDvS0tLM4WC+QcL8YigSpUqaNeuHcICjwoqV4brcM0x306fBo4fB5KSrMwB5yOw4JCBgVbnhrSlkEcEEydODN0nFbGBjgmkTC5duoQ//vGPJgOQH4sHu3fvHh4z2dnbz1fcbsdghXUbDACYMdi61So0TEiwsgcHD1pHCxI08+fPR0ZGBsaPH6+7LJ6izICUCVOhPB6IjY297ueZGQibTW1Mv3PgD0/UvDBWme2Q9epZb3TggNURwaCAUxVjYgC2gLIeglkEsQ2/7rmL45577tFdFU9RZkDKXDldr149U0CYv6CQS1o8XzwYUKeONXOAr669igECCzy55+DoUavwcMUKp68q7CxcuFAtheJJCgak1JgRYDBwY0shx7CS59sKAxjo1K3r/RQ7sxoMBjgrn285OTzPAU6etLIGqiUuc5aMw4YGDBhg19+YSMjomEDKtKWQBVM3BgOsF6hUqRI6dOgQHneXD1FW67thEqFdWMvBGoMLF6wFSMx68O+rc2d3Fkp6wKeffmp+1BGBeJFaC6VMAouJ8k8ZfPTRRxEfH4+1LF4LJzx75yvocJSebmUI2HnA4x3WSUiJDB48GMeOHTPLuUS8RscEUqbJgwwCbhw37Om1xUVhij0tDWGJf7YWLYCUFGD5cneNYPaA7Oxs83XPgEDEixQMSKnk5ubiD3/4w7X6gPxHB3v37g3PYIA1A15oMSzL0QFrCTjumK2iDHxSU52+Ks8UDrLNdty4cU5fikipqGZASiUhIcH0U9dnT3s+27ZtM0cHYVM8mB9T5+wqYEqdr6TDFdsNWUuwaJFVVNi9uzW/wKsLp0Jg/fr1pqNmzJgxTl+KSKnoX7eUCrsIOGGw4Q1z+5kqjYyMRKdOncLvztasafXo++XVMjsoiLsPWP/BIEgKtHjxYjNXg1/7Il6kYEBKhUuIWrRocVO9AIeudOnSJTy/KbKrgMN6srP9symQg4sY8O3ZAyxdGl4dFTZh0eCGDRswaNAgpy9FpNQUDEiJsZ3w5MmTN7UUhnXxYAAfjNy34JdggNhqyOJCHhkcOWIFQ25b6+xwSyFnbowePdrpSxEpNbUWSqkDAsqfAWANARcWvf3223jmmWfC984yEFizxnoo+tHFi9bAoq5drUyJz2sJhg4dajJlx7koSsSj/P2vWEqFr4IYBNx4FLBjxw7TZRDWmYHAcUFEhH/P0JkpYGaALYirVvmnhqIA/Hrn0ZiOCMTrFAxIiQOB9957zxwH3IjfFCMiIkzNQNgHA0yZsyffj5gJ4HEJiynj44ElS3wbECxatMi006qlULxOwYCUyNmzZ029QLUCWusYILCLgKOIwx7P0NmX7+ezc/498z5UrGiNNObxQbgOZSoEp2zy38LYsWOdvhSRMlEwICXCs9EKFSqgefPmBWYGwv6IIH+VPUf3nj4NX2OWJDraCgLYgvjVV8D27SwqgR8sWbLEtBT6IgCWsKZgQEo8X6BJkyY31QtcvnwZO3fuDM9hQ4Wlylu3tgrp+CbWmuSqVYENG6zA4Ny5sL4riYmJWLdunSkgFPE6BQNSbJwsyDWtBbUU7tq1y8xn901mgBo1AthbzuMC+b/BTBxpzBbEFSt4rhTWLYX8NzFixAinL0WkzDSOWIqNA4Z+/OMfm2OCgo4I+P5u3br5547yrLxNG2tngV87Cwq7L6wl4B4H1hHUro1wNH/+fDRq1Ch8VnWLrykzICXC+etVmQouoHiQ3xQ5othX2FXAQODMGaevxH21BNzlwMJC9t9z10GYtRRu3LhRLYUSNhQMSLHNmjXLZAAKwp/3Tb3AjQ89zvBnax0DA7ke78myZcCWLWFVW8HCwfT0dNx///1OX4qILRQMSLFkZmaauoCCsFZg+/bt/qoXyI9T+HhWHuYFc6XGmQQHD1p1BGFi1apVJgumYEDChYIBKRYWDnLgUEHFg7t37zbdBL7MDFD16taK3zAulisTdp7waInBZJgsOlq6dCnuvPNOVOY0RpEwoGBAit1SWKdOHUSzp7yAeoFy5cqhO/fe+xXnLnAQU5g87GzHoxTOZAiD+f1JSUlYs2YN7rjjDqcvRcQ2Cgak2MOGWrZsWWi9QLt27QqcSugbrJgfMwbwWwFlcbEDhYOaCig+9ZrPPvvMtBQOHz7c6UsRsY1aC+WWeDwwefJkVGTLWAHCfm1xcTEQ4AMvIcFqr5Pr1agRFuOK2VIYExNjRm+LhAtlBuSWeATQsGFDc0xQUIvV1q1bFQwEsKsgKUlfVYXZu9dqN/QoZgQ2bNiAgQMHOn0pIrZSMCDFKpbawtawAuzduxcZGRn+LR4sqHaA7YaXLzt9Je7ExU7793u2DZP/Fi5cuKDFRBJ2FAzILV8JrV+/3nwDLEhglXGPHj10JwNtdFxglJys+1EQ1pWwBdOjExu/++47s5Ro/PjxTl+KiK0UDMgtK6c5Y6Co4sHWrVujJvvsxVpg1LYtoyhlBwqrq2B2wKMTCVesWGFaCguawiniZQoG5JYthXwl1Jivdgug4sFCFhhxXj0DArnhO05564iAOws8Jjk52QwbUheBhCMFA3LLYKBFixZmCVFBRwisJVC9QAFtdP36WfUDcjMWonLugAdbClkwe/vttzt9KSK2U2uhFInf+AprKYyPjzfz2dVWWMTsgR07gPr19VWWH4+UOLXRY77++ms0aNAAXbt2dfpSRGynYECKVFitAAWWFikYKERurjWRkG+VKukrLYDFgxzdzK2GHmspHDZsmNOXIhIUOiaQIh/2O/jKthCsF2jevDlqh+m+els6C7jE6ORJp6/EXTiWODERXusiOH/+PO677z6nL0UkKBQMSKFWr16No0ePFvp+FQ/e6l9XeaBdOyAiwpMFc0HDAkIuL/LYfIGoqChMnDjR6UsRCQoFA1Kgc+fO4cyZMwVuKQyMKGYwoOLBW2AqnEctKSn6SsvPY+Oa4+LiMHLkSLUUSthSMCCFdhFwDDE7CQpbXMS0qeoFboHTCLt1AwYN0lda/sxAVJRn7kdKSgpWrlyJESNGOH0pIkGjYEAKDQY4W4AzBgqi4sES4IAaZgfYcsiiQr8HArVqWZMIPWL69OnIycnBkCFDnL4UkaBRN4EUqEuXLkXeGR4RNGnSBPXVNleyKnouMuJQIj9nStia56E5A2wp5Ne5Rm5LOFNmQArUoUMH81YYZgZUL1CSf2nlgY4dgZwcfxcTMjPCgkoPtRSuW7cO/fv3d/pSRIJKwYDcZP/+/WYbYWECxYOqFyihpk2B9u2tVkO/HhdwSdHWrZ4Z1cxaARbTjh071ulLEQkqBQNyE85f38pv2IVgu+HZs2eVGShNipzHLzwm8FifvW04gKlGDStT4gFLliwxEzjVUijhzhv/IiVkLl++jOPHjxfaUph/bbEyA6VQuTLQty/Quzd8icckHhpFzFkb7CKowQBGJIwpGJCbXvXznLSoMcQMBho2bIiYmBjdvdIu6mE9Bivqs7P9dQ95PMI1xh7A7BcnD3JlsUi4UzAgN7UURkdHFzliWMWDNh0ZsM0uIcH60U88Mn2QLYXZ2dkYOHCg05ciEnQKBuQ6nC3AymkOHCqseJDBgI4IbMDsC1PmfppO2L07UMggK7f56quvULduXfTp08fpSxEJOu/0+EhI3Go9a2JiopnIprZCm44LevTgrFvg0iXPpM/LhJMHOXzJ5XhUtnbtWmUFxDeUGZBrkpKScOTIkSLviIoHg5AdYP1AUpJn2u3KVC+wfz9w4QLcjrMFUlNT1VIovqFgQK6rnP7mm2+uOxLgGNb8bwkJCWanOwsI+f/8NWLDRL7bb/fEK+YyBwMcuMSOApdbuHAhIiIiMHnyZKcvRSQkdEwgBh/qXD7UO1/LW25uLh577LECBxD169cP7du3xz/+8Q/zTVPK2G7YurW1yW/3buv/wxEDRwY/HpgxsGbNGgwfPhw1a9Z0+lJEQkLfxcU4ceIELl26dNN8AQYCW7Zs0V0K1Xk6pxNyKJGHtvqFG04cXLFiBf7zP//T6UsRCRn3h+gSspbCyMhIs3xIHFKvnlVDwIBAHG0pzMrK0j4C8RVlBsSoVq2aOSKoEO7n1m7Ge89BTgcOFO/XZ2VZs/7ZicAUPN84Ka9hQ46SBJKTAa6gDrw5nZ7ncVLz5q4/BmFLYZ06ddCXkyJFfELBgBilXc+qAkKbZWQUP3Dg8B5OMWTfPn/kw5Zn3FwrnZYGbNwInD9vvTEwID6MC5khEXS8Zq4udvERSKCl8LbbbkN5p4MnkRBSMCCmhYqT1urVq1fosKHCPPPMM3j88ccxZMgQ3Uk7qu3ZYljU7P7A+mOOyA08rArK5vBj3HHH/1Xws50vsCSIn2PXLmvOATMGocLMBY9AYmNdO1Nhw4YNOHPmDMaMGeP0pYiElEJfMT3VU6dOLdWdyMzMxNChQ838dn4cKSE+rA8dsroINm2yHs58ZV8YPkz5EGcAEHgrCt/PAIC1IOxY4Mdu1846Sjh1issorCOFUGCgefCgdbThUvPmzTNHZWopFL9RZkBMSyEXE92YFWBVNdsHC8P3ffTRR5g0aRJeeeUVk1rlK6pf//rX6M6xs3LrLADrAzjoqWpV60F9q8wMjwLKutyIZ/bMGjCw4BCgw4etYwYWMIaCi+cMrF+/HnfccQdq1arl9KWIhJSCAZ+7cOECTp06dVOaPz09Hffddx8qVaqEzz//HLFM7RaAr6LGjRtnJrXNmDEDv/jFL0z9AQOEX/3qV+jA6Xpyc13A6tXA8eNWqr8krYQMGBhA8JV+WWb8Bz5vgwZA06bWUQJfsTNICTaXbmpMS0szLYWvvfaa05ciEnI6JvA5ZgWYEci/sphtVRMmTMCOHTvw+9//Hi1atDCDhQp6C2QTGBQ8+OCD2L17Nz744APzCqtz585maBHbFuXqK2K+HTtmLSfiw5gP4pIU1PFVPX/9vn32jC/mMQL/7rt0sfYknDljdSkEC79eXJoZYEshj724qEvEbxQM+BynDLZt2xZVrhZ0sZqaD/Dly5djzpw5Jd5OyADhiSeewP79+/GXv/wF3377Ldq1a4enn34ax/gQ9KvTp4ElS6y3EyesM/vSrvLlq/noaPtbBVmvwGp/ZiyClSHgnzmURYslbCnk8QCna4r4Tbk89YbJVfxSeO655/DOO++YlD+zA2WVkZGBv/71r3j99ddx/vx5033w8ssvm90GvsGagA0brHkATO/bNcuhY0egdm2rjsAuvMbvvrMyF4UcDZXZ4MGu3MPAbhrO2liwYIHTlyIScsoM+BjHD7M2IOA3v/mNeTX/7rvv2hIIUOXKlfEv//Iv5jjil7/8JT7++GNzJPGzn/0Mp/lqOZyxlY57HVautF5pN2tm30OQH3vhQutVvJ2YIeLiJKbz831t2Iotji6zceNG8/V47733On0pIo5QMOBj3Dnwpz/9yRwVMABg8d9//Md/mJR+MCYcvvTSSzh8+DBeeOEF8/lYi/Dqq6+aroWwxEK57dutB6zdmZDAwh8WE9q9+phTENmGGJhpYCcekaxdC7eZO3euqXuZMmWK05ci4ggdE/gMB6r8/t0PsW73YZxITEDzWpF4ZOJ9pk7g2WefxVtvvVXiwUOlwVdhb7zxhslEsGPhxRdfNJ+fQUNYHQ+wbS9Y95OvsDkrgAOI7A42mMngtSck2Ptxeb38O777brjJPffcY4oHWeMi4kcKBnxk9fqNeOJXf0VG21EoH2UVDGafT8aZBX9Gj5hKWLVqVchHsHJbIusJ3nvvPbMultmDH/zgB+Z4wbNYLc8aAY4BDnaxHB/YbN+87bbgtECuWGHvn+HsWSujMXas87sSrrp48aKpF+B8DGatRPzIHf8aJeh4FPD0L/4bl7uMuxYIUMWaDdBg4qvYfOSM6R4ItZiYGHNUER8fj/vvv99kCFq3bm2OEdji6EnsmtizJzRFcqz+Z+1FMO4VPy4HI9l5DMFiRwZLLpo1wGJZFroOGDDA6UsRcYyCAZ/4fO48nGnQu8D3lYuIROVWvU0nAYMGJzRt2hTvv/8+9u7di2HDhuHHP/6xaUn88MMPkePSvvQC8cHJc3zOAqhYMfifjzsIODmwtG2KReHYY358Lj2yCwMkfo256O/0yy+/NFkpTtAU8SsFAz4xd+ESRDZoVej7Ixt3QGJiIuLi4uAkZgXYcbBz507T5vXkk0+iY8eOmDZtmpmB4Ho8GmBbHlv+QoXp/GDMBmDhIycecsmRXXj8062bqxYVrVmzxswW0JZC8TMFAz5RuWIF5KSlFPr+7NPWQKD58+ebIkOnMQCYOXMmNm/ebDIEDz30ELp164YvvvjC3WuTA9sBQ1nzwCOCZcustL7dWJhoZ0qfdQIsqHRqjfINtm7dasZxq6VQ/E7BgE9MGjsaF9bMKPB9fLhmxK+7NnsgcFbPb5TMFCQlJTn2AOaeA06G46s3DioaP348+vTpg4ULF7ozKAiMGA4lHhEwK8ANhHbjxkMWENp5r1lPwa4CF+DeDWYEHnjgAacvRcRR6ibwCdYCNGjWGnkdR6Naj7uvtQ/m5ebg7OJ3kL5zKWIbx5jhQOy35vu/+eYbs9+dwUHVqlXNsCCeqzZu3NixPwfHJP/85z83nQ8DBw40cxFuv/12uAbPwjlkyInjCWYkRo+2HuB24oplO0dJ8+NxCmGbNnAat2xyWRcXFIn4mbYW+gQf8O//6Q+YOOUhXNy1FBF1miIvNxvZpw4h+0wCyiHPzBjgboGAkSNHmmK+48ePm2VDfGMvNu3atctkDFq1amWK//L/vmDig5/ZisWLF5uggOtmhw8fbqYnumLBzK5d1lGB3Q/kW+Hn4zEB5wJwTLGd7G6PDOZ0wxJgB8HSpUvN4CsRv9MxgY8wxT5r+qeoV/4iLu74Bpd2Lze1ArFNGmPWrFnm/QUFEc2bNzcPXE4m5MM/sO5127Zt+Mc//oHf/e53mDp1Kg6wij4EmLUYNWqU2YzIGoLk5GTTFsZzX05VdBQn7DkxbpcPWC4vsrvFkMcD27ZZ2wztwnoKFlk6jF/zPBYbzCyFiM/pmMCnRwZ8dc2BP+zz5zdDPvRLimf2LL5iEMCsATcccm0xZwbs2bPHdAZw5HCwBwixy4C94hynzG2J3Kvwq1/9Cp06dULIffWVFQyw3c8JbAfkOmI7LV4MpKZa2xLtwMzJ5csc++doVwG/TpYsWYLU1FR1EojvKRgQ27EtkGf7HDnMV/GsMejbty+6cgFOEHEewSeffGICgaNHj5oOBC5HYlASMvPmWZv/nAoGWLPAhUj8M9tVsc9OBWY8WBxpBxY7squAr8hDdLxUEAbCDBgZEIj4nY4JxHbMDvzzP/+z2VbIAq0aNWog+2p7GusP+Cp+06ZNZqWxnVi38Pjjj2Pfvn1mDfOyZcvQvn17fP/738cxOwvgisJXuk5O12NWgqOQOfbXrZiF4kAmB9cYb9++HSdPnjQ7CURExwQSYuxW4EM6ISHBHDPUrVsXvXr1CkrxHwvEuPPgt7/9rQk8WPPw8ssvm1eEQcOgY+vW0BcQ5nfwoDXYp3fBEydL7JtvrJoBO5ch8ZiAg5l69HAkO/DKK6+YrwsO2mLLqojf6ZhAHMEHNdcZs9agTp06pgAwJSXFDD1iWp+Fig0aNLBlg2J6errZjsgtify8zFr87Gc/M8tpgmL16uDsCijJmTzXD48cae0uKCtON+RsADtHHvP+JCYCI0YAsbEINe7B4NcbW1RFRMGAuAgLGtnqdeTIEXOswHXGrDO4kyt6bcDswB//+Ee8+eabJivxk5/8BD/96U8RzSp8u/CIgHMGWIXv5FY+9vKzgLJfv7J/rJMngb17EZQsCgOBoUNDeq8uX75sMlLMEnFLpogoGBAXYiEgawvYpRAZGYmhQ4eaV/dsX2TGgJmD2NjYUnVAEAsbf//73+PPf/4zoqKizNpaLmmqzqU8ZcX++QULrFfRNWvCMSxi5CTEzp3L/nHWrLGCG7vT+axv4CTCYcOAJk0QKvw6euSRR0xHzaBBg0L2eUXcTMcE4gls/2KtAY8VuH+eQQJ3FrA9rLRYQPb666/jr3/9qyly/H//7//hRz/6UdlbIVnAt3070LKlszP4GZBwE19ZXnVzhfGiRVZgEYyCPx5B8Mx++PCQZQcmTZqERYsW4dy5c2opFLlKwYB4CtP7fIgza8AxyRyGxCMFrj9u1qyZyRxwtkGlEkzNYxaCY40/+OADU0fw7//+73jqqadM1qBUzp2ziu74cGPfv1N4Ls9Nj2zhq1q1dB9j/36AmyyvDpsKSisk7zNfoYcocGKrK7tMvv3225B8PhEvUGuheAoLCgODkhgIEIMBBgAsSJw+fbopFPzwww+vrTy+1UIjHjmw62Dv3r1mBDOPDNq2bYv/+Z//MUcWJcYaBKbnGRSU5vfbhWl9FumVZSkQ2z+DWe3Pj825A6xxsLnVtCCBMdqjucNBRK5RZkDC7jiBRwn8kQ92BgKcOVC/fv1rXQo8EigKpydyWBHnIfD3cIjRlClTSlajwEJCpthZJMeHnVOOHAE47Klnz9L9/uXLrT+HXQOHiipS5N8LiwlLm8UoZkvha6+9ZlpbGwX7zyTiIQoGJKwxa7By5UpzrBBYxczA4IknnjC1Afz/wtoXucKZS2y4QpmT6n79619j3LhxJWt35Az+deuAatXgCGYGOJGwtIVy7CLgzolgXz8DJgYubdsCnDkRpGwE//44W4B7LUTk/+iYQMJaxYoVzWZDTiF88cUXTfEYX+0Hagr+9re/4eOPP8bq1avNnoX8Rwrdu3fH3LlzsXbtWvMqksWKvXv3NrMQbnX0cA2LEVk1z4eyE5ihKG3tA7VoEZpAhlkXdhSwRmHnTqt7wWasMWGdwNixY23/2CJep2BAfKNKlSrmFT7nFvDVPR/oXbp0Mf/N+QY8TuAcgrNXR/kGag769etnViZz3wI/BkfYDhw40PyeW+KDdMAAq7Kf64WD8JArUps21qvt0mIRZEZGaGofGLTUr29NcAzCOGVuuOS2Ta7BFpHr6ZhA5OpxAvcXsAhx2LBhpuWM65k5oIZ1Bnxr0qSJ+flvvvkGP//5z7FhwwaTdWAnAicoFomLftautYrk2KYXijY6dhP06QPUqlW2j8FFRTzT53WHouKfo4rZvWDzgqkHHngA8+bNMy2FpZ1RIRKuFAyIFLHMhiuRuU+Be+/Zavjoo4+aoIDBw4IFC0xBGn8dq9N/85vfmD0LxC6EOZ9+gG2LpyLvchqyqjXGU0+/hLY5uVa7XzAzBPzYDD54FDJmjLUUqCySk62pihxAxFR+qGYncOkTP59NhX78e2vTpo2ZVyEi11MwIHILPC7gqGR2KXAVM+sNZs6caX6uZcuWpjjx3XffNYHD+PHjzZyCv736fTzffD/a17UyANm5eXhzfS4ye/wTXn3ldYAFbNwfYPd5PNP5HOTDyvy+fe2b+8/ggtd8+jTQvHloNg6yzoI1F5yTUMY9Emwb7dChA373u9+ZvRQicj0FAyKlwACAq5L5I9sYWX/A7gQOP4o4fwTrnqqGWpVvfgX94uJMdPnB3/AYW/22bbPS8A0aWK+Cy4pHEHxYM53PDAW3AtopLc1qM2TAwS4JdgAEMyhghoOBDcc6sxuiDAOc2BXC45yjR4+auRIicj0FAyJlxIJDBgWcahcREYF/HlQbH4wtuIL/fGYeBn9aHlsOnUYFrgXet8964LHjgClxFtGxA4AP2eLUFfB8nQ9l1gXw1TN/L8/b7dwwWNRkQmYg+JAOVg0EA4KjR63PwQxBKZdKsROE9SCbN2+2/RJFwkHoF4mLhJnatWub4wNauHAhmtUovB6gZqVyiMxJQ9zKlVZVO6vnWTnPV9o8G2flPh9YN3Ye8NfxQcj1xDzD5/t4ds96AP4+7iAI5R4EZh9YNMlg5vDh4AUF/DPxc3GKImsWShEMsH6DLYX/+q//au+1iYQRBQMiNmcJEtMKDwYysvNMduCxxx4z9QWce9C/f3+UD6TA+VBlSpz1BHyVz2JDpuX5fj4Imarn+T0zB3z1z+MF/nyoFyKxOLFDB6t+gMEAMwXMUpR1yVNBGGBwmVF8vHVf+OcuQWfDl19+adZXs/NDRAqmYwIRG3EWwbNThmPD96uiUsTND6vX4zLx8tIsNG/e3CxIys3NNRMROQiHDytmCzw5JpcZDR5xpKYCq1dbexl4bFGChVHFwiwK10RzxHLHjsU6DnnooYfM8CgGBGopFCmYggERG/Hh3rRpU3StnIzpk6qgRtT/BQQzd2fhhcWXkVejiTm/Tk9Px6xZs7Bu3TozMpk7ETgAiUuXBg0ahPvvv98MOOK6Zk9hDQQzBewGYFaDhYzMeNh1hMCjEh6rsMaC2YnGjYssZOTfB+/pihUr7Pn8ImFIwYCIzWbPnm0K1lpEl0PPmAqoFlkOB1OvYOvJXFzMLmcCAB4R3Gj37t2YNm0alixZYvYiZGZmmomHd911l9nQyAChK18RewGPN/jA5qIm7hzgA5udEzz6KOvcA2KQwUFILJ7kBkLWVDBjwGOTfEEHCzs5W+C3v/0tXnrppbJ/XpEwpWBAJEgBwfPPP2+24wWwpe2tt94qMBC4UWCoUVxcHFatWmWyB5x3wCOF2267zWQMWG9QqyzTBUOFnRI8LuDDesEC65V99epWrUNZsx6B9kZ+HAYezECwnoDBQZ06+PVrr+EXv/gFjhw5gmZc2CQiBVIwIBLEIwM+zDmcKCYmBoMHDy71mfXJkyfx2WefmQCBY5A524BtjEOGDMGIESPQp0+fa2OUXYsdEDzz5yt6Fh2ytZIZBD687ZhXwLoFzlpgkSGzD9HRmPDBB4g/dMhMiRSRwikYEPEYZgi4gpc7Epgx4MKkjIwMVKtWzYxD5iKmBx980JyTuxbT/GwX5JCkunWtAIGrkvnK3o6iw6ws5MTHo97LL+O5n/wEv/rVr+y4apGwpWBAxOMuXryIOXPmmIp5rmIOHE306NEDI0eONKuYWYzICYmuxVoCFvixbZL/zamDPEYobcYgNxfzV67EPb/8penwGDp0qN1XLBJWFAyIhBnuUJg/f77JGixatAinT582HQlc38z2xcmTJ5tjBdcdKfDIgJkCjjw+dMiaqVCGc/7vvfMOZl3dUljRjqJFkTCmYEAkzOsWeIzw+eefm9a6+Ph483OcczBq1Ch069bNFDQ24H4EtxUd8uy/alWrMJBbE1l0yILJiGLMSrt4Ec1/+EPENmtm6jZEpGgKBkR8NiFx3rx5puaAWQMGB8wQcPsiCxzHjRtn1jGzONFVgQHrCQ4etIoO+Sqf3QIcclSQK1dwdP16NH/pJbNW+uc//3mor1jEcxQMiPjYtm3bMH36dDPbgBX3ly9fNrsW2KEQqDXg6l9X4JwC1hRwoFFgT0H+/Q0B6en4w8cf44UZM8yRCQMdESmaggERMbKysrB48WKTNeDCpY0bN5rVzA0bNjT7E+69914z26A60/VO1xawyJAzBrjUiccI3F0QqIE4cQKT3nkHu86cMYOcROTWFAyISIESExOvzTZgYMDZ/lFRUWa2Qc+ePc1kRP63o4WILDbctMlqU+SUw0qVkHvgAOq/8AJ+9Oyz5phARG5NwYCIFGu2wdq1a02HArMHXAnMKYk1atRA7969zWyDRx55BI35QA41TjbcutVap1yvHhavX49Rr72mlkKRElAwICIlxiVL7FD46quvsGbNGiQlJZklSxx6xLZFbl/kJsZKdm8tLGqI0a5dwN69eHLWLEz7+muTyfDckicRhygYEJEy279/v9mhwKzB119/bYIFHil07tzZLFl6+OGHg79kicWEWVlo0a4dYho1MgOYRKR4FAyIiK04x4BBAZc1fffdd2ZzII8ZWrVqZQoRuWhpypQpqMsxxDbjQiKOYeb44VdffdX2jy8SrhQMiEhQpaSkYOXKlWaXAgOE5ORkU3TYunVrMyb4gQceMMcKdhQivv7663j55ZdNAMLgQ0SKR8GAiITUpk2bMGPGDFOEuGPHDtPSyCzBgAEDTM0Bg4O2bduW6mNPnDjRfMx9LCYUkWJTMCAijsnMzDQFiBx6NGvWLFN7QI0aNTLBwYQJE8zgo6IKEbduWItvp/0ZF0/EY9Wm7ajQqDvmLP5OxYMiJaBgQERcg2f+nIjIUcnMIFy4cMFsW+zXr5/Zo8BX/gwSAkcK0959AxErf4+JrS+bbgbadSoXP1gEPPefH5ohSSJyawoGRMSVWHTIEcnMGsycORObN29GTk4OoqOjzWyDwQMHoMnud/Fkx8s3/d6E87kY+OElvPnBLLOISUSKpmBARDyBcwMCsw04AKl27ilsfaYqKlawMgI3mjTzEtalxeDw4cOoUKFCyK9XxEtcttBcRKRgNWvWxJNPPokvvvgCJ06cwL239ys0EKCYauVw/PhxrTAWKQYFAyLiSZnlKyP3SgFbC69KuWi9j4GDiBRNwYCIeFKvux7G/27NLvB9ZzPysC4x1/x3TExMiK9MxHtUMyAinp102Ktlbbw2MBv3tK147edPpF3BxJmXsPr4FcTGxqpmQKQYIorzi0RE3IZFga+++SEefHACesRkoWmNcjh3OQ+bkq7gRHqeaTV86623VDwoUgzKDIiIp3HE8fPPP4+EhIRrP8eMAAMBtRWKFI+CAREJiyODuLg4UyzIGoHBgwcrIyBSAgoGREREfE7dBCIiIj6nYEBERMTnFAyIiIj4nIIBERERn1MwICIi4nMKBkRERHxOwYCIiIjPKRgQERHxOQUDIiIiPqdgQERExOcUDIiIiPicggERERGfUzAgIiLicwoGREREfE7BgIiIiM8pGBAREfE5BQMiIiI+p2BARETE5xQMiIiI+JyCAREREZ9TMCAiIgJ/+/++wxiQhmgVmAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -303,7 +256,7 @@ "ax = plot_layout(\n", " prob,\n", " input_dict=input_dict,\n", - " show_image=True,\n", + " show_image=False,\n", " include_cable_routing=True,\n", ")\n", "plt.show()" @@ -327,8 +280,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[-1.75361979e-02 -4.93468387e-01 -9.15527344e-08 -2.28014110e-01\n", - " -1.66755598e-05 -2.75319218e-02 -2.40987392e-01]\n" + "[-0.53717807 -0.68701966 -0.06754067 -0.64462873 -0.00398565 -0.04290426\n", + " -0.64086142]\n" ] } ], @@ -339,10 +292,28 @@ { "cell_type": "code", "execution_count": null, - "id": "1d762a8b", + "id": "e356a5a0", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HeterogeneousMap with 2 dimensions using interpolation method \"linear\".\n", + "Speed multipliers are defined for 5 points and 3 wind conditions.\n", + "\n", + " 0 1 2 3 4\n", + "0.0 1.0 1.0 1.0 1.0 1.125\n", + "157.5 1.0 1.0 1.0 1.0 1.125\n", + "270.0 1.0 1.0 1.0 1.0 1.125\n", + "{'x': [-100.0, -100.0, 1500.0, 1500.0, 1030.39], 'y': [-100.0, 1500.0, 1500.0, -100.0, 919.56], 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125]], 'interp_method': 'linear', 'z': None}\n" + ] + } + ], + "source": [ + "print(prob.model.aepFLORIS.fmodel.wind_data.heterogeneous_map)\n", + "pp.pprint(prob.model.aepFLORIS.fmodel.core.flow_field.heterogeneous_inflow_config)" + ] } ], "metadata": { diff --git a/pyproject.toml b/pyproject.toml index 8ceeacfc..d6d95ef2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ classifiers = [ ] dependencies = [ "numpy<2.3", - "floris>=4.3", + "floris>=4.5", "wisdem>=3.21", "NLopt", "marmot-agents", From 1d32e603e4922696f93295ac3a034798901807ee Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Mon, 1 Dec 2025 16:48:25 -0700 Subject: [PATCH 12/17] save notebook, black reformat --- .../x07_exclusion/optimization_demo.ipynb | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/examples/x07_exclusion/optimization_demo.ipynb b/examples/x07_exclusion/optimization_demo.ipynb index 317fc4a6..264f239a 100644 --- a/examples/x07_exclusion/optimization_demo.ipynb +++ b/examples/x07_exclusion/optimization_demo.ipynb @@ -90,12 +90,16 @@ "\n", "prob.model.set_input_defaults(\n", " \"x_turbines\",\n", - " input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\"coordinates\"][\"x\"],\n", + " input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\n", + " \"coordinates\"\n", + " ][\"x\"],\n", " units=\"m\",\n", ")\n", "prob.model.set_input_defaults(\n", " \"y_turbines\",\n", - " input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\"coordinates\"][\"y\"],\n", + " input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\n", + " \"coordinates\"\n", + " ][\"y\"],\n", " units=\"m\",\n", ")" ] @@ -291,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "e356a5a0", "metadata": {}, "outputs": [ @@ -306,7 +310,11 @@ "0.0 1.0 1.0 1.0 1.0 1.125\n", "157.5 1.0 1.0 1.0 1.0 1.125\n", "270.0 1.0 1.0 1.0 1.0 1.125\n", - "{'x': [-100.0, -100.0, 1500.0, 1500.0, 1030.39], 'y': [-100.0, 1500.0, 1500.0, -100.0, 919.56], 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125]], 'interp_method': 'linear', 'z': None}\n" + "{'interp_method': 'linear',\n", + " 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125]],\n", + " 'x': [-100.0, -100.0, 1500.0, 1500.0, 1030.39],\n", + " 'y': [-100.0, 1500.0, 1500.0, -100.0, 919.56],\n", + " 'z': None}\n" ] } ], @@ -314,6 +322,14 @@ "print(prob.model.aepFLORIS.fmodel.wind_data.heterogeneous_map)\n", "pp.pprint(prob.model.aepFLORIS.fmodel.core.flow_field.heterogeneous_inflow_config)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "072e162d", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 64d7792650bca4a9542c9741b7c6e1a30a5121d8 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Tue, 2 Dec 2025 10:42:58 -0700 Subject: [PATCH 13/17] some updates to the case --- examples/x07_exclusion/inputs/ard_system.yaml | 2 +- examples/x07_exclusion/inputs/windio.yaml | 33 +- .../x07_exclusion/optimization_demo.ipynb | 385 +++++++++++++++++- 3 files changed, 391 insertions(+), 29 deletions(-) diff --git a/examples/x07_exclusion/inputs/ard_system.yaml b/examples/x07_exclusion/inputs/ard_system.yaml index 7af36d8c..6786bf99 100644 --- a/examples/x07_exclusion/inputs/ard_system.yaml +++ b/examples/x07_exclusion/inputs/ard_system.yaml @@ -143,7 +143,7 @@ analysis_options: optimizer: COBYLA opt_settings: rhobeg: 2.0 - maxiter: 50 + maxiter: 250 # debug_print: # - desvars # - objs diff --git a/examples/x07_exclusion/inputs/windio.yaml b/examples/x07_exclusion/inputs/windio.yaml index 5f60d89f..5fe66e9b 100644 --- a/examples/x07_exclusion/inputs/windio.yaml +++ b/examples/x07_exclusion/inputs/windio.yaml @@ -463,7 +463,8 @@ site: -349.9959503233879] energy_resource: name: Predominant wind only - wind_resource: !include 'wrg.yaml' + wind_resource: !include ../../data/windIO-plant_wind-resource_wrg-example.yaml + # wind_resource: !include 'wrg.yaml' wind_farm: name: Patterson Pass turbine: !include ../../data/windIO-plant_turbine_IEA-3.4MW-130m-RWT.yaml # DEBUG!!!!! @@ -471,22 +472,24 @@ wind_farm: layouts: coordinates: x: [ - 606.1611139248125, - -7.565841734409332, - 1436.1546635665, - 2086.7966175233014, - 299.2976360952, - 714.294410916, - 1761.4756405449 + 1530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13, + # 606.1611139248125, + # -7.565841734409332, + # 1436.1546635665, + # 2086.7966175233014, + # 299.2976360952, + # 714.294410916, + # 1761.4756405449 ] y: [ - 2240.4306740884513, - -17.519102511407254, - -416.39044961224135, - 1871.7237653906122, - 1111.4557857885, - -216.9547760618, - 727.6666578892 + 919.56, 1310.48, 1407.02, 1136.50, 702.62, 432.10, 528.64, + # 2240.4306740884513, + # -17.519102511407254, + # -416.39044961224135, + # 1871.7237653906122, + # 1111.4557857885, + # -216.9547760618, + # 727.6666578892 ] electrical_substations: - electrical_substation: diff --git a/examples/x07_exclusion/optimization_demo.ipynb b/examples/x07_exclusion/optimization_demo.ipynb index 264f239a..cacd7a03 100644 --- a/examples/x07_exclusion/optimization_demo.ipynb +++ b/examples/x07_exclusion/optimization_demo.ipynb @@ -150,13 +150,13 @@ "\n", "RESULTS:\n", "\n", - "{'AEP_val': 111.37566714426002,\n", - " 'BOS_val': 18.246398964448733,\n", + "{'AEP_val': 122.6095295001479,\n", + " 'BOS_val': 17.92663778128289,\n", " 'CapEx_val': 30.939999999999998,\n", - " 'LCOE_val': 42.524368596590215,\n", + " 'LCOE_val': 38.43255783467086,\n", " 'OpEx_val': 1.0472000000000001,\n", - " 'coll_length': 6.179125053544407,\n", - " 'turbine_spacing': 0.7489037403037934}\n", + " 'coll_length': 3.3736578876389562,\n", + " 'turbine_spacing': 0.4338766778705673}\n", "\n", "\n", "\n" @@ -207,9 +207,57 @@ "execution_count": 5, "id": "b0009663", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", + "Number of function values = 250 Least value of F = 0.036302402897247246 Constraint violation = 0.0\n", + "The corresponding X is:\n", + "[ 0.91937139 0.73345401 0.64899477 0.13580084 0.21663803 0.51945554\n", + " 0.81909701 0.96374364 -0.14161969 1.0336359 0.08825701 0.37836504\n", + " 0.6170059 0.55589903]\n", + "The constraint value is:\n", + "[-9.69371389e-01 -7.83454014e-01 -6.98994771e-01 -1.85800837e-01\n", + " -2.66638030e-01 -5.69455545e-01 -8.69097010e-01 -1.21374364e+00\n", + " -1.08380308e-01 -1.28363590e+00 -3.38257005e-01 -6.28365036e-01\n", + " -8.67005904e-01 -8.05899026e-01 -1.30628611e-01 -3.16545986e-01\n", + " -4.01005229e-01 -9.14199163e-01 -8.33361970e-01 -5.30544455e-01\n", + " -2.30902990e-01 -1.86256364e-01 -1.29161969e+00 -1.16364097e-01\n", + " -1.06174299e+00 -7.71634964e-01 -5.32994096e-01 -5.94100974e-01\n", + " -1.16572287e-02 -1.36760390e-02 -1.70834916e-03 -4.37000917e-01\n", + " -4.44658015e-01 -1.36314690e+00 -4.47292090e-01 -7.81479076e-01\n", + " -6.73646656e-04 -4.56092326e-06 -8.59389492e-01 -2.23894114e-01\n", + " -4.17281843e-01 -1.32023606e+00 -1.68977908e+00 -6.52822500e-03\n", + " -1.79785927e+00 -1.27720997e+00 -5.06602356e-01 -2.87981374e-01\n", + " -1.80457300e+00 -7.28675784e-01 -9.14264477e-01 -1.02446204e+00\n", + " -8.53513550e-01 -1.59938028e+00 -1.01811116e+00 -3.20607511e-01\n", + " -4.62233297e-01 -5.03199194e-02 -7.54547102e-01 -1.10399845e+00\n", + " -2.19097688e-01 -7.04145119e-01 -5.96177171e-02]\n", + "\n", + "Optimization FAILED.\n", + "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", + "-----------------------------------\n", + "\n", + "\n", + "RESULTS (opt):\n", + "\n", + "{'AEP_val': 130.17953107008557,\n", + " 'BOS_val': 18.108458640103898,\n", + " 'CapEx_val': 30.939999999999998,\n", + " 'LCOE_val': 36.30243832621823,\n", + " 'OpEx_val': 1.0472000000000001,\n", + " 'coll_length': 4.985931525186327,\n", + " 'turbine_spacing': 0.558375970237104}\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ - "optimize = False # set to False to skip optimization\n", + "optimize = True # set to False to skip optimization\n", "if optimize:\n", " # run the optimization\n", " prob.run_driver()\n", @@ -247,7 +295,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -284,8 +332,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[-0.53717807 -0.68701966 -0.06754067 -0.64462873 -0.00398565 -0.04290426\n", - " -0.64086142]\n" + "[-3.90569872e-01 -4.74886645e-04 -1.00000000e-15 -4.29804358e-01\n", + " -1.12019252e-01 -2.08497491e-01 -6.59982980e-01]\n" ] } ], @@ -295,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "e356a5a0", "metadata": {}, "outputs": [ @@ -311,7 +359,318 @@ "157.5 1.0 1.0 1.0 1.0 1.125\n", "270.0 1.0 1.0 1.0 1.0 1.125\n", "{'interp_method': 'linear',\n", - " 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125]],\n", + " 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + " [1.0, 1.0, 1.0, 1.0, 1.125]],\n", " 'x': [-100.0, -100.0, 1500.0, 1500.0, 1030.39],\n", " 'y': [-100.0, 1500.0, 1500.0, -100.0, 919.56],\n", " 'z': None}\n" @@ -326,7 +685,7 @@ { "cell_type": "code", "execution_count": null, - "id": "072e162d", + "id": "c3d2b478", "metadata": {}, "outputs": [], "source": [] From e1940ae57c18d624baaea15106aa8523da126169 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Wed, 3 Dec 2025 11:31:08 -0700 Subject: [PATCH 14/17] some small updates for eliot --- examples/x07_exclusion/inputs/ard_system.yaml | 6 +- examples/x07_exclusion/inputs/windio.yaml | 2 +- .../x07_exclusion/optimization_demo.ipynb | 3056 ++++++++++++++++- 3 files changed, 2876 insertions(+), 188 deletions(-) diff --git a/examples/x07_exclusion/inputs/ard_system.yaml b/examples/x07_exclusion/inputs/ard_system.yaml index 6786bf99..a1eee9f3 100644 --- a/examples/x07_exclusion/inputs/ard_system.yaml +++ b/examples/x07_exclusion/inputs/ard_system.yaml @@ -144,9 +144,9 @@ analysis_options: opt_settings: rhobeg: 2.0 maxiter: 250 - # debug_print: - # - desvars - # - objs + debug_print: + - desvars + - objs design_variables: x_turbines: units: km diff --git a/examples/x07_exclusion/inputs/windio.yaml b/examples/x07_exclusion/inputs/windio.yaml index 5fe66e9b..66f5ed54 100644 --- a/examples/x07_exclusion/inputs/windio.yaml +++ b/examples/x07_exclusion/inputs/windio.yaml @@ -463,7 +463,7 @@ site: -349.9959503233879] energy_resource: name: Predominant wind only - wind_resource: !include ../../data/windIO-plant_wind-resource_wrg-example.yaml + wind_resource: !include ../../data/windIO-plant_wind-resource_wrg-example.yaml # DEBUG!!!!! # wind_resource: !include 'wrg.yaml' wind_farm: name: Patterson Pass diff --git a/examples/x07_exclusion/optimization_demo.ipynb b/examples/x07_exclusion/optimization_demo.ipynb index cacd7a03..cfb2179b 100644 --- a/examples/x07_exclusion/optimization_demo.ipynb +++ b/examples/x07_exclusion/optimization_demo.ipynb @@ -39,15 +39,7 @@ "cell_type": "markdown", "id": "cf2ceef4", "metadata": {}, - "source": [ - "This will do for now.\n", - "We can probably make it a bit cleaner for a later release.\n", - "\n", - "Now, we can set up a case.\n", - "We do it a little verbosely so that our documentation system can grab it, you can generally just use relative paths.\n", - "We grab the file at `inputs/ard_system.yaml`, which describes the `Ard` system for this problem.\n", - "It references, in turn, the `inputs/windio.yaml` file, which is where we define the plant we want to optimize, and an initial setup for it." - ] + "source": [] }, { "cell_type": "code", @@ -104,17 +96,6 @@ ")" ] }, - { - "cell_type": "markdown", - "id": "b0732705", - "metadata": {}, - "source": [ - "Here, you should see each of the groups or components described as they are added to the `Ard` model and, occasionally, some options being turned on on them, like semi-total finite differencing on groups.\n", - "\n", - "Next is some code you can flip on to use the [N2 diagram vizualization tools from the backend toolset, OpenMDAO, that we use](https://openmdao.org/newdocs/versions/latest/features/model_visualization/n2_basics/n2_basics.html).\n", - "This can be a really handy debugging tool, if somewhat tricky to use; turned on it will show a comprehensive view of the system in terms of its components, variables, and connections, although we leave it off for now." - ] - }, { "cell_type": "code", "execution_count": 3, @@ -127,15 +108,6 @@ " om.n2(prob)" ] }, - { - "cell_type": "markdown", - "id": "723f8210", - "metadata": {}, - "source": [ - "Now, we do a one-shot analysis.\n", - "The one-shot analysis will run a wind farm as specified in `inputs/windio.yaml` and with the models specified in `inputs/ard_system.yaml`, then dump the outputs." - ] - }, { "cell_type": "code", "execution_count": 4, @@ -150,10 +122,10 @@ "\n", "RESULTS:\n", "\n", - "{'AEP_val': 122.6095295001479,\n", + "{'AEP_val': 122.7865872459762,\n", " 'BOS_val': 17.92663778128289,\n", " 'CapEx_val': 30.939999999999998,\n", - " 'LCOE_val': 38.43255783467086,\n", + " 'LCOE_val': 38.37713824683762,\n", " 'OpEx_val': 1.0472000000000001,\n", " 'coll_length': 3.3736578876389562,\n", " 'turbine_spacing': 0.4338766778705673}\n", @@ -212,166 +184,2882 @@ "name": "stdout", "output_type": "stream", "text": [ - "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", - "Number of function values = 250 Least value of F = 0.036302402897247246 Constraint violation = 0.0\n", - "The corresponding X is:\n", - "[ 0.91937139 0.73345401 0.64899477 0.13580084 0.21663803 0.51945554\n", - " 0.81909701 0.96374364 -0.14161969 1.0336359 0.08825701 0.37836504\n", - " 0.6170059 0.55589903]\n", - "The constraint value is:\n", - "[-9.69371389e-01 -7.83454014e-01 -6.98994771e-01 -1.85800837e-01\n", - " -2.66638030e-01 -5.69455545e-01 -8.69097010e-01 -1.21374364e+00\n", - " -1.08380308e-01 -1.28363590e+00 -3.38257005e-01 -6.28365036e-01\n", - " -8.67005904e-01 -8.05899026e-01 -1.30628611e-01 -3.16545986e-01\n", - " -4.01005229e-01 -9.14199163e-01 -8.33361970e-01 -5.30544455e-01\n", - " -2.30902990e-01 -1.86256364e-01 -1.29161969e+00 -1.16364097e-01\n", - " -1.06174299e+00 -7.71634964e-01 -5.32994096e-01 -5.94100974e-01\n", - " -1.16572287e-02 -1.36760390e-02 -1.70834916e-03 -4.37000917e-01\n", - " -4.44658015e-01 -1.36314690e+00 -4.47292090e-01 -7.81479076e-01\n", - " -6.73646656e-04 -4.56092326e-06 -8.59389492e-01 -2.23894114e-01\n", - " -4.17281843e-01 -1.32023606e+00 -1.68977908e+00 -6.52822500e-03\n", - " -1.79785927e+00 -1.27720997e+00 -5.06602356e-01 -2.87981374e-01\n", - " -1.80457300e+00 -7.28675784e-01 -9.14264477e-01 -1.02446204e+00\n", - " -8.53513550e-01 -1.59938028e+00 -1.01811116e+00 -3.20607511e-01\n", - " -4.62233297e-01 -5.03199194e-02 -7.54547102e-01 -1.10399845e+00\n", - " -2.19097688e-01 -7.04145119e-01 -5.96177171e-02]\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|0\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", "\n", - "Optimization FAILED.\n", - "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", - "-----------------------------------\n", + "Objectives\n", + "{'financese.lcoe': array([0.03837714])}\n", "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|1\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", "\n", - "RESULTS (opt):\n", + "Objectives\n", + "{'financese.lcoe': array([0.03837714])}\n", "\n", - "{'AEP_val': 130.17953107008557,\n", - " 'BOS_val': 18.108458640103898,\n", - " 'CapEx_val': 30.939999999999998,\n", - " 'LCOE_val': 36.30243832621823,\n", - " 'OpEx_val': 1.0472000000000001,\n", - " 'coll_length': 4.985931525186327,\n", - " 'turbine_spacing': 0.558375970237104}\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|2\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0378642])}\n", "\n", - "\n" - ] - } - ], - "source": [ - "optimize = True # set to False to skip optimization\n", - "if optimize:\n", - " # run the optimization\n", - " prob.run_driver()\n", - " prob.cleanup()\n", - "\n", - " # collapse the test result data\n", - " test_data = {\n", - " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", - " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", - " \"BOS_val\": float(prob.get_val(\"landbosse.total_capex\", units=\"MUSD\")[0]),\n", - " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", - " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", - " \"coll_length\": float(\n", - " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", - " ),\n", - " \"turbine_spacing\": float(\n", - " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", - " ),\n", - " }\n", - "\n", - " # clean up the recorder\n", - " prob.cleanup()\n", - "\n", - " # print the results\n", - " print(\"\\n\\nRESULTS (opt):\\n\")\n", - " pp.pprint(test_data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f93a46df", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZwVJREFUeJztnQd0VWX2xQ/NECCQQEJJCL3X0DvSu4oo6mBDLKMClrGgjmOvoyL4F7CMCGMbFAQsNGmh914SEJIQEkghpHfgv/Z3fTFgAnnJe++2/VvrrSgJyc1LeN++5+yzT7lLly5dEkIIIYTYlvJ6XwAhhBBC9IVigBBCCLE5FAOEEEKIzaEYIIQQQmwOxQAhhBBicygGCCGEEJtDMUAIIYTYHIoBQgghxOZQDBBCCCE2h2KAkGLIy8uTixcv8vkhhFieinpfACFGY/PmzXLmzBmpW7eubNq0SRo2bCiNGjVSjzp16kj58tTQhBBrQTFAyBWEhYWJj4+PNGvWTC5cuCCRkZGyZs0ayc/Pl549e8qIESMkMzNTUlJSKA4IIZaAYoCQQmRnZ0tMTIyMHj1aVQbwuP7665UQwJ97e3urjwsPD5elS5dK5cqVpUGDBqpq0LRpUyUOCCHEbFAMEFIIVAHgE2jSpMnl/1AqVlTtAgft27eXWrVqqY/HY926dUosjB8/XgmKPXv2KIEAMcG2AiHE6FAMEFKIEydOSM2aNcXPz+/q/3AqVlQVATz69++vKgcQASAhIUGJAxgQvby81MegaoAWAyGEGJFyly5duqT3RRBiFBxegHr16pXp88BrEBsbW1A5QHXgzjvvVFWHH374QerXr68qB/g6rBwQQvSGYoAQDwDNXa5cOUlPT5fFixfLqVOnVOXguuuuU5WDO+64Q1UbHB9HCCGehGKAkD84dOiQahPceOONbj+QUTnA+CKqBklJSeprgjlz5qhJBscoIyoHFSpU4M+IEOJW6Bkg5A+OHDmi7tw9cWeOAx6tAjwcoIUAYyIEwoYNG2T16tWqcvDII48oDwPaF9WqVaM4IIS4HIoBQv44iE+ePKmryQ/egb59+6oHrgeVg6ioKPH19VXvh9cgLi6uYJQR0w1BQUEUB4SQMsMoNUJElNkP0wBw/RsBCAMc9L179y6oVIwaNUoGDBig3odkxLlz5yqxAE6fPq18CGg/EEKIs7AyQMgfI4UIEMIBbFQCAwPVo0+fPqpycPbsWQkICFDv27p1qxw+fFgqVaokwcHBqnLQpk0b8ff31/uyCSEmgAZCQkTk/PnzKh+gRYsWpnw+HOLAMcqIisGYMWOUBwHtj+joaCUQIHYwtUAIIYWhGCDEgkAcYEwRRsXt27erECS0QSAEUDno2rWrtG3bVu/LJIQYBIoBYntwJ41dA0OGDLGsGQ/iAOZDR+UAFZAuXbpIRESEhIaGFowyYrqBlQNC7AfFALE9y5Ytk+PHj8vjjz9uu+cC7QOsbEZbISsrSwmBTp06qUVNqCzAkEhxQIj1YfOQ2B6YB40yReBp0DJA+iEOfkfloEqVKup98fHx8vnnnyufQeHKAUyKhBBrQTFAbE1ycrKcO3dOtQjsDMYXHSubHVStWlWGDh2qBMKOHTtUOwHTCVOmTFHvxygjEhIpDggxPxQDxNbAaY+DsHHjxnpfiuFA2mGPHj3UA5UDVAqQ0AjS0tJUzgE8FoUrB3hw8RIh5oOeAWJrcMDhDhfuelJyIA4wiukwJOIBf8G0adOUGNi9e7dKTkQbApHKJSUmJkYWL1kiF/LzpWPHjtKvXz/LmjoJMRIUA4QQl4iD1NRUqVGjhppcmDlzptql4EhSRMWgV69eBX6EK4Ff4annX5HrqteTNiE9JfL4Edm0erEkxkbIRzNnyLhx4/hTIsSNUAwQ24I7W4wUdu/e3am7V1IycZCYmFhQNUD1BV4DLy8vlXkAwdCofn0JbtxYVRQm/v1JufWhF6VixUqXfY7/fPCCrFw8X+1loCAgxH1QDBDbsnHjRpXx/+yzz7IU7WZwsDt2LPz6669qQ6RXVJT4pabK9twL0umuaVLTv85f/h7aBU9PHCoXc9NVJgJbBoS4By4qIrYeKUT5mgeM+ym8Fnr0gAHy9MSJcs+QIdKnZUtJzsgrUgiAChUrSqPmbVUeAsQbIcQ9UAwQW5Kbm6sOGLvmC+jCxYsiv/8u8ssvUm7XLmUwbNKnj1zn63fVv1a+gjb0tHf7dsnJyfHQxRJiLygGiC1xuN8pBjwEDvHdu0U2bcJ+ZhFv74J31SiXJxnpqcW2F6IjwtR//+O55ySoXj25/vrr5ZUnnpDt69erfQuEkLJDzwCxJdjwd+jQIRk8ePBlJWziBpBNsHWrSFSUSL16SDO67N2Jycly17xF8tC09/7ys1j67Rz59pO3pXZ1H3nr7rtlxZ49sunwYYk+d069v1ndujJm2DDp3aePNO3SRdq0batWURNCnINigBDiXmJiRNavF6lTR6SY9ckzFi2Wr/celZsmPCLN24TI2ZgoWfL1bNm9eZVkpKXIwldflXH9+xd8fPSZM7I8NFQ2HjwooWFhEp2UJOXLlVOVg87Nm0u/Pn1k9Pjx0iokhD9dQkoAxQCxHUjRw2KiNm3aqFE34qa2QFgY6vzIfC7RX1kUGiqPzZ4jWRfLSXZmumRlpktwQIDMmDLlMiFQVCvh9+hoWbZ9u6zasUO2Hj4s57OypFKFCtKnfXvp37u3+DZqJENHjlRtIe9CLQpCiAbFALEde/fulZ9++kmeeeaZYkNwSBlACX/PHiwvEMGugyvaAlcDPg7c7Z85d07q1aol/dq3d3raAxkGh06ckNVbt0ro/v2y7sgRScvOlusqVZIGDRuqZEPsXHjwwQcZnUzIH1AMENuxcOFCOX/+vDoMiIunBU6ehNrSfALBwcW2BTxJ/oULsjs8XFauWCErYmJk96FDapqkZs2ayoyISsGAAQOkb9++atSUlQNiRygGiK1ASfm9996TLl26KPMgcSFpaSJLlojAwBcQYKynNitL5Px5kVGjJMfbW7Zt2yZr166V1atXy/bt21VFwsfHRy2sQuXg5ZdfVi2F/Px8qWgAQUOIu6EYILbizJkz8umnn8rEiRPVXSBxkQiAN+DoUa0iYMTFQklJSD4SueGGv1Qr4CFBEuWyZcuUOAgLC1OisUmTJlK7dm3lLYFw7NSpkzRs2JCtJWJJKAaI7cTA5s2b5eabb2byoGueUJEdO5DiZLxqQGGio0WaNBHp0+eaH5qUlCShoaGyZs0aWb58uVpzDQICAlTlYOrUqTJmzBgVgIQ1z1Wd8EQQYlQoBgghzoNKAA7JXbs0IRAUpIUJGRVca69eIq1bl0pAYrnSihUrlECIjY1VxkOsZ65fv76qGAwcOFBatWqlqgnMOSBmhGKA2Ia8vDy17AZ3d5Uq/bkdj5RCCBw+rE0MYEzPyBUBBzVqiLRrJ+KCnzt+h+A3WLlypRIJ2M6IiQcIA1ScsF3R399ftRrQVmDlgJgBigFiG5At8M0336hVunixJqXkwgWRVau0igAOWTOAykXz5i7/tDjwjx49WiAO4D1ITk5W+RUQBxCeqBxgUqFr164SGBjo8msgxBVQDBDbgBdrrM594oknGEFc2iChxERkOWumQbOQmam9xfSIm0OmMJWwb98+JQ5WrVqlxAH2J2BcsVevXjJ27FhlXEXsMoQCKgfwHRCiNxQDxDbMnj1bgoKC5KabbtL7UswHRvNgFMTWQUxhGHFi4GqTBPAzYJLAw9eNPIMdO3YocYDH1q1b1Z9hjBFCAIKgc+fOcuONN6q3qDSUZFeGCmfauFH5GerVqyf9+vWjIZaUCYoBYgvS0tLkgw8+kFtvvVXaoXdMSk5Ghsj27ZoJr0EDkeuuM9/EQ+3aWmVAZzIzM9U0C4TBb7/9ptIwkZgIkTp8+HBp3bq1mlLo0KGDqiDgAeFQmBkzP5Ivv/5B6tZvooTDqZNhkpZ0VmbOmK78CoSUBooBYgvi4uLk119/lTvuuINz4s6AdgA2DmI0D0LAjMbLyEiRDh1EOncWowF/wYYNGwoqBwcPHlR/XrduXTWtgMrByJEjVS4GRMPrb7wlR6NT5bZJ/7isgrDshy9kwRfvy7y5/6EgIKWCYoAQUjxxcSKrV2s7BszUGijMiRMiAwdqOQMmEK3r169XwgBjjCdOnFCHPkyISM08cOy0THvnyyL/7oxXJsvJw9slMjKSLQPiNBQDxPKgD4vZcPRWMR9OrvmEaZWAvDyR06e1/zczaGtglbEJl1JFRUWp8UWIg59+/lke/edH0q3vsCI/9vew/fKvR8bKiuXL1K4FQpyBr4zE8uBu6/PPP1cvrOQa5OeLHDggsn69yP795hcCAON8JhQCACZDtAj++9//yuTJU6Re/eIjtGvXrS/XeVWRL7/8Um3lPHDggDIaElISKAaI5UGpFSFD6MGSa/gDNm/WUgV9fUVq1jT/04WxQqxUtoCoCenYQfZtDy32/Yd2b5bM9BRlQoyJiVGJiY5KGHwJ+/fvl5SUFA9eMTETXMdFbCEG4Mrm9rlrVAQ2bNAyBCCazDYxcDWBgwOxBON6RgeTAm++N0CGj7tXKlW6/OcDc+HKxf+VwMB68swzzyjPAEYY4TfA+xCMhDFE4OfnpyoOWL505aQCsS8UA8TyEcSnTp3iuuLicJSRT53S7p4bNzb2jgFnQUpi9epiBXDAP/Ho/fL20/fIA0+9JYENNENkQlyMfDH9n3J431b54fvvC8yD1/0h6FAd+Pvf/67GGtEqczyQkggwZYN/J45RRl9UhYjtoBgglgZlUby4YTc9KaKEjv0CKKMjVtiKSXgwQVro7hf+gSpVqsjDj46VuvUbS7ly5SXm1HHxqVJZCYGr5Qzg76GFgMeVfx4eHq7aCDDb4t/LLbfcotpq+fn5SlyUJAiJmBtOExBiRxArvHOnSGyslttfubJYDlQ6IiK0sKGGDcUqwBRYq1YttRRp2LBhLksgzMrKUhUDjCb26dNHtRBgRHS02QpXDigOrAfFALE0qampUt0iZWKXhvDAJJiervkDzJofUJIWCARB9+6WaRUA7D5A7gDyCK6//nq3fi1saDx27JgSCGfPnlWVg9GjR0u3bt3Uvy1UDuBBoDgwP2wTEMuSnp4u06dPl9tvv/0vpVHbgsPx2DHNMIgdA1YGIqdNG0sJARAaGqr6/T169HD710ICIh4AC5dQOahTp476/127dqkpBYhtVCYgEIh5sZBTiJDLOYksfUGKbgM+Ndg4iEkBZAfAWIZEQauDyocF2x8QAxAClT38veHrtWzZssBg2Lt3b5kwYYIyKu6B94SYGooBYlnQ60TGe9WqVcXWOPIDfv1V2+BnpyjlhASxEhgTxN24u9sDJRUHzZs3V16DJiaIeiZXh20CYknQ24QY6Nixo4jdjYJYPYwZc1RIrDQ2eK2Vy7hz9vMTK3HkyBE5d+6cIcSAg/HjxzOvwAJQDBDLrizGXZStRwpxZ7xpk1YZgD/AqkbBokhN1YSAxWbmURVAmmavXr3ECMA4iAkDYn5scptA7AZMTUhis/ULVXKyNmePsTo7CQGHXwDft8UqIfALwKiHbAAjsHLlSpVRQMyPtf6lEPIHGHnCXYvtthRinA4vzlg2hNYAjIJ2C4zBcwAhgPwEi7W+IAb69+8vRgBegW3btqmpHWJ+bPZKSewiBN577z21tc12EwMIEoJZEPHCdqVSJREcmBZrEWDeHxs4jeIXwLQOBEqzZs30vhTiAugZIJYDuwhycnIK5qFt0yOHEECgEFb2enuLLYFxEPHDEAQWA1UBpAwiHdAIHD9+XGrXri01EGVNTA8rA8RyYIqgWrVq6oXKFsAXgI2DEAKYGLCrEADIUrDAuuLixEDnzp0N4dxHReD3339nVcBCsDJALCkGMPds+YjUixc1PwD2C1hx42BpqiMYJ2zVynI+CYdf4G9/+5sY5XpGjhwpAQEBel8KcREUA8RSIDI1MTHRMKNXbvUHwBOBHAFUAgxwt6i7aTA+XqRzZxELHlDoz8fExBjGLwBjbtu2bfW+DOJCKAaIpUAq2rPPPmvtqgBWDiP+NSpKpF49va/GOM8JJicsuoMCVQH8Tvft21eMcj0NGza09+iuxbBxTZFYEZQvkZWOYBbLgVbA77+LrF0rcvq0FiRk96hlByEhIrhrtqhfAodvSEhIwV4AvatvuB5U4Ih1oBgglhICs2fPlr1794olwabBI0e0/4Y/oCILe8o8CZGE8TYLt0qMso/A0bJAuidHCq0FX02IZUhISFAPpA9aChgEMzI0f4DVvreyABGACgkChiw+KhsZGWkYMYApAn9/f0NUKYjroBgglgF3LBUrVrTOymLc9R49KnLwoOaOR34AuXz3AmbcO3Wy9BQFSvLACH4Bx0ghzYPWg2KAWGqkEELAEn4BrBret08kIkLE31879MjlY4S5uSKYGrHYZsKixEC7du3U3bjeoD3Qr18/qV+/vt6XQlwMxQCxBBcuXJCoqCjDlFLLXP7etk2780WVwwrixtXPD8QA1lNbpQp0DTEwfPhwMQJIQMSiJGI9yl1C3YcQC5CamqraBEbZ6OY0WDUMkyD64BAC2DRo5RHJ0nLddSIdOmgBQxY3UcbGxkpQUJB8//33Mn78eL0vR7Zv3y7BwcESyJaV5bBuo43YDhgHTSkEkCSIdsCaNSLLl2sz8zjkKAT+GiwEMyUSBqtVs7wQKOwXMMKmQuz7wMpihB8R62H9f03EFixYsECaN2+usttNBcrdMAgeO6bNyBs1RAgLgFC5wFQDiom4O0cCXXa2Fn6EwxkPdwombGLE8ikbiIDCYqBVq1aGWLrFkUJrY59/VcSyZGZmSlhYmLRs2VJMd6e7fj1mIo29aRBTDTA0YpQM8/x4i7AjHFA4pNHaiI7Wvo+gIE0ouBJ8DQgOxAzDMGij8UqIAaONFPpZ3LBpVygGiOlx7FXHciJTkJys+QHQGoA5ENdtpJaAI+cf1zhwoDbNcP68JgKuHOHD//frp2UgHD6Mvbba3L8rTY8OIdC7t+UnBwoTFxenRO5LL72k96Wof19YWdymTRu9L4W4CYoBYomRQqwrNnzYEA5ZCID9+7W7XRxwRqsGwK8AsYKcf/TmIQQgVGrWvPrfw8f17Kl9X6gi1KrlmuuBIIEIwDpqGwkBsHHjRvXWCJUBTOugBcfUQetCMUBMDe5YUBlobfQFNSkpmgg4cUIrsRtxsx568nDo4/Bt2tT5cr+XF5JxNG8BfBBlGVRCawL+hEGDbNUWuLJFgMPXCM59TOkMGDBA78sgboRigJge7HjHciJDrxtet06760ZYCw5No4GyPu7sUQEoS7gNPg8+B/YEYKkS7uhLY1aEYx2CxGiVEw+LASNMEYADBw6oEcdarqr4EMPB0UJiarDWtW7dulLzWmVsvUQA7nBRDYADHt4AowkBmP9QtcDWvxYtyiYECoOfB753mApLCioJ+PizZ0Xat9cqFDYNXDp37pwcPHjQEC0CjBQuXbpUGQiJdWFlgJia3377TQICAtR6V0OBKsDu3dpdLqKE3Tl2VxYhAHMeViG7+tDF54RHYs8ezSeBkUm0IK4GvArwJ6DVAOEEv4BNMZJfAEuS4BnA6C6xLhQDxLTgBWrnzp0qK91Q4IDduVPrnRs1LhcHtUMIYFzPHW0WlPkhhA4d0qoPKPlDgGCnAA59/DfEEqomSBREmwK5BdyGp1oEDRs2VA+9wRQBKm+GrL4Rl0ExQEzL6dOnJTc3V5ri0DECcNJjyyDuhnGnjYPWSCODVwoBCBUcwO5MbUTbAX1vHPwA4UoHDmgtAYgACAQ8T46f4bWqBzbBKPkCji2FLdBCIpaGYoCYeqQQ8cP1jJLaBzGAvirMc0a+u0U2AKYvkCCIyQZPfD1H5QHjihAhDjGAw9/G7YCiSE5Oln379smUKVP0vhTJz89X7QHmC1gfigFiajGAoCGYCHUFZW+UwTGaZ+RVwxArqAp06XLt3AB3AQFg01HBkrJp0yZ1R26EygDWgY8ePVrvyyAegGKAmJbBgweLl97ufAiBHTu05D2jtgUKR/piZt3IVQuiWgQY4zNCouaxY8dU5c0H1S5iaThaSEwLXizxoqkbGJ3btUskPFw7ZI0uBBB0hF30V0YKE0OxYcMGVRXQu+IFPw4WgB1GzDSxPHxVIKZkx44dag5b1wN23z7NMAhBoneF4lpCAEY+zO3TEW5o0tLSZPfu3YZoEXCk0F5QDBDTgX7qli1b1DSBbmAEDhUBZPgb2QGPNga2C/bpQyFgAvB7jZFZIyQPYqQQGwo5UmgP6BkgpiMpKUk5rnUdKYyN1SoCRm0NwK2Pa+vaVVvwQ8e+afwCderU0X0dt2OkELsR9G5XEM9AMUBMOUVQoUIFaQTDnqfBKl/kCAAjH7ComuD5cVW8MPHoPgK9D2CMFMI42AqjoMQWsE1ATCkGgoODPb+cCK0BGAYxQmhkE96ZM1rrgkExpiIzM1MlahplpPC2224zTqAXcTusDBDTgT0E5T19GMOIh+Q8CAFExBq1dJqYqL1FsiC8AsQ0bN26VfLy8gwhBqKjo1W7wtDbQIlLMfDtDSFF07p1a8/3VE+eFMGIFdIOEZxjRDIztQfGB4OD9b4aUooWAVYE6532B0Eyf/58NdVA7INBX9UIKZqwsDD11uO9TCQMYvOgO3P8ywqyDjp3ZkXA5H4Bj1e9ihgphGcA5kFiH1gZIKaLavVovgDaA+npIhkZWmiPEUH4EUYIsWsAo45GbWGQYsnOzpbt27cbokWAKQJfX1/xp/nUVlAMEFO9YMbExHjO1ITxPAQLrV6tiQIjguuCjwGTDUY2NZJrhmjl5OQYQgwgX4AjhfaDrx7ENERERKj5Z49ltuOQPXTIuB4BEBOjjQ8iT8DIo47kmi0C3I23b99e9wji6tWrc2WxDTHwqxwhfx0phMEKL5oeyROAgQpuangFjDo5UKmSSI8ext6WSEokBvr27avyM/QE0wMTJ07U9RqIPrAyQEwDsgV69erl/i+Uk6MFC8E0aNTxPLQw8vO1dcTwCRDTgrtxxBAboUWQkJAgF43aEiNuhZUBYho6duzomS8EA15yskj9+sY143l7i4wdq1UuiKnZtWuXZGVl6S4GMEHw2WefyaBBgzwjuomhYGWAmAIsJcLIk9vvttPStE2EtWppJXgjkpAg0qCBljJI06AlWgQ+Pj7SqVMnXa8D/76QMcDUQXtCMUBMwebNm2Xt2rXuFQIQAUuW/JniZ0QgVjBGSCwlBvr06SMVdTaqYqQQ5sEAo47QErdCMUAMD3qYmCRw2x3LhQsiyC7YsUPEx8e4rnwIlvh4JC5pAUPE9KA0D6Grd4vAMVLYvHlz3ZckEX2gZ4AYHmQLIGPALWIA8b3IEkCyIVoDRnblnzsngkkKLiCyDHv27JH09HTdxQD+fSH5kKmD9oVigBiekydPSuXKlSXQlXfDcOKjLIv+e3i4tnMApjyjgqpAaqoIjF2oXhBLsGHDBqlSpYp0RU6EjuDf1+TJk1WOB7EnFAPE8MBchRfLMme2Z2WJJCWJnD2rhfVgbBB/1rixGB6UbocM4RihBf0CvXv3ViuD9QTViWrVqrFFYGMoBojh6YzlO86AuxtkBSCzH3fReLthgyYEsGcAoB2AfQNmcOPj+8FhgVFHM1wvKREXLlyQjRs3ytNPP627b2HmzJkybNgw6YaNl8SWUAwQQ3Pu3Dn1YlW7du3L71pw2KPfjzn7qlW1Evrx49pbOO7xfgCfAQ59tAPQBsBInlENgsWB7wltDYgaLy+9r4a4iAMHDkhKSoraVKgnUVFRaqSwAf5tENtCMUAMzbZt21QM8WOPPSYSF4fAAW30z3Hg+/lp2wQREoTSP8QBHjg0MYePgxSYOaUPFQ3suKcQsFyLwMvLS7p3726IkUIIbmJfKAaI4c2DTVEex10/HhAEuMPHAy0AHPy480cZvVEjsRwQPKhkNGyo95UQN4iBnj17KvOennBLIQEUA8SwnD9/XlLOnpUOaA/gBbNKFXOY/Vw9TgijI+/aLJedgUmCKVOm6HodiEHGgyOFhGKAGLoqUCU7W+o4yv52BEIIAojGQUtx+PBhSUpK0j1fwNvbWxkYOVJIKAaIYcELVNu6deU65AGYzfTnKnr2tGb7w+agRYBxQrQJ9ATGQVwHUwcJ55SIYenaubMMb9tWmxawI4hJ9vc37uZEUiYxAOMgAof0HG384IMPZB8SOIntoRgghiQjI0PSYmO1KYHq1cWWREVpExLEchUv+AX0bhGcOnVKxRDXNfOkDXEZFAPEkOzevVtmff21XAwONnZMsDuDhlARqFZN7yshLiY8PFzi4+N1FwOYIkDqYB0YVIntoRgghgTZAk3q15fyKJXbEQQMYVxSxzIycV+LoEKFCtILeyZ0zhfAFAH9AgRQDBDDkZOTI7EREdIR4ULYHWBHcnM1MaDzDDpxjxjo0qWL2rmhF5mZmWqaASuLCQEUA8RwREZGildGhgRhikDnBS66gfhhfO8YqySW8gtADOjdIoBxcdq0adKyZUtdr4MYB44WEsOBDWrBVapIVXgFIAjsCBYp4YXart+/hdtfsbGxuosBiBK9NyUSY8HKADEcXTp3ltv69JFydh0pBDAP2tE4aXFQFcAq7r59++o6Ujh9+nQVfESIA4oBYigQgpKXlCTlMFKoY09Vd1JSRI4e1fsqiBvEQEhIiNRA5UcnoqOjJS0tTWrWrKnbNRDjQTFADMXBgwfl33PmSB6y+O3spIeB8Px5va+CuBgj+AUcI4XMFyCFoRgghuup1vX3l0qIH7Z78h6yBoiljLEI+tFbDGCksGnTphwpJJdBMUAMtckt8vhx6ZSWhtknvS9Hf+wuhiwGUgcx09+vXz9dkz3j4uI4Ukj+Aq3KxDCcPXtWlcaDEY9q18VEDhC2RLe35VoE7du317VXX7VqVbWl8DqOrJIrYGWAGAbcsdS4cEFqYheB3V+sYJ5s2lTvqyAuFgP9+/fX/TmFX4BigFwJxQAxDJ1CQmTSsGFSwc4jhQ7wHGAvA7EEMTExyg+jp18AI4WzZ89WuxEIuRKKAWIYv8Cl9HSpiJE6u24pLAx9E5arCgA9KwOnT59WC5JQGSDkSigGiCHAXdP7s2ZJJoSAnUcKHSQkiMTH630VxIVioHXr1lIbI7M6ThEghjgwMFC3ayDGhWKAGEYMIB7VG6l75W3+awnzIJ4DO4cuWQyj5AtwSyEpDpu/6hKjcPLYMemalyfl7Lql8MoWAUq5vr56Xwlx0ZQM+vR6igHs+8B1QAwQUhQcLSS6k5qaKumnT0sjPz9WBQCimLGkiLsJLJMvAPQUAxgpfPTRR3WNQSbGhpUBojtIZfPOypIA3Al7eel9OfoTFCTSpIneV0Fc2CJo3ry51KtXT7fnFGFH8Ct48d8XKQaKAaI77dq1k0kjRogXpwi0sCU4zuvU0fvHQlxYGdCzKoBJnXnz5snJkyd1uwZifCgGiP5kZkpVxA/b3TAXHa15BTx094ad9hs3bZapTzwj9z80Wb797js1i05cR2Jiohw6dEhXMYCRQuxFYNAQuRoUA0RXzpw5I7M+/1xSK1bUgnbsupDo1CltpNJDY19JSUnyt3v/Lqt2nZKBtz8lI+55XjbsjZb2nXrIDz/84JFrsAMbN27UPV+AI4WkJNBASHQfKUxJS5Mq8AvYcTFPXp5WEahVS6RXLxEPzaFPfvJ5Gffgv6RSJS32uWLFSjJ83L3SufdgeeLx26RChQoybtw4j1yL1f0CjRo1kgYNGui+pbC83Ud2yVXhbwfRlRPYUnjxolTMzbXnTwKJi40aiQwY4DEhsGvXbglu1b1ACBQmoG596dC1vzz22GNsGVggXwAjhbGxsRwpJNeEYoDoRl5ensQfOybNLl7USuV2AcInI0OkYUORG24QwUpbD458ffXtAuneb0Sx7+8xYJTK0neUuEnpOH/+vOzfv19XMYAQr3vvvVdatGih2zUQc8A2AdGNqKgo8crIkDpwzleubP2fBAQPYoYRKtS8uVYR0KE1kpubI9lZGVLVp2gBkpaSpN5OnjxZxowZI926dZOuXbtKw4YN1YgaKRmbNm1SJk09xQDaPY0bN9bt6xPzwMoA0Y0mTZrIHQMGiI+O+909BioBGO2qVEkbHezdWzePxIihg+TnBZ8V+/7Nq5eqt35+fvLtt9/K+PHj1YESEBAgI0aMkBdffFGWLl2qqgc47EjxLYL69evrdhhjpPD777+XaHhSCLkGrAwQ3Sifmyu10SKwQypadjYCFUTattXGB3UiJydHfvnlF9mwco106ztMmrbqeNn7V//0rRzZt02Cg4PVYYY7S8TY7t69W3bu3Cm7du2Szz//XN5880318XXr1lVVg8IPVekhBX4BvaopEGtHjhyRXjCmEnINKAaILqSlpcmP//uf3OTrK75WXamKagAihTt10sYmURXQscyOefNbbrlF9u3bJ5MmTZJ3n5skrTv2kE49B0p2Zobs2bpWwg7ukIy0FJk39z9KCDgO/NGjR6sHQDUABw2EAR4QCR999JEaVwQQElcKhJp2qP5cEbG9Z88eeeihh3SdIoBnIAiJloRcA4oBogtIQ4s4fVq80Df/49CxFPAGQAx06YJ6u95XI+vXr5fbbrtNKleurHrZ8AEMHTpUTQ1sXPVjwcfhIJ//5RdXHSvEnS7K33iMHTu2QCAg2MYhDvD23XffVYeioyVUWBx06dJFqls4cXLLli2qTK+nX4AjhcQZKAaIbiOFbS9eFG+r9Zzx/cTEYHBfpG9fkaZNdb6cS/Lhhx/Ks88+qw6m//3vf6r3D3Dg33TTTWpqAOFPyM7v169fQUXAGSAQ0BvHAx4DgMMQB1LhCsIrr7wimUibFOxianmZQOjUqZNaqGOVFgEqKthJoAcZGRlqpBCij5CSUO4SHUDEw+BX7uM33pABWVnSHgcmkveswunT2vfTs6fH0gSvdiDcf//9smDBAnnmmWfkrbfekooQKTqCuOOwsLDLBALaFvAyIBSnTZs2lwmEjh07qmqG2ejdu7eqsuC512tsF2uTIc6sIrCIe6EYIB4HhrQFb78tE+rVk4AePayVPIjNdGgLeChAqDiOHz+u7vwjIiLkyy+/LLhbNyI4uA4fPnyZQDhw4IDk5+cr8dK+ffvLBAIWWxk5Zx8izNfXV2bOnKnWBhNiBigGiMfJzc2V2B9/lODMTKlglVW9KH1jUgBBQjqDaYG77rpLufp//PFHaYvrMhnZ2dly8ODBywQCBANaD1jDi4pBYYHQunVr3aseDlavXq38GFhQpMdzj8obfgfQIkCrgpCSYIx/PcRW4J6uEe7sDHx35xRZWSJxcSIdOuh6GTgoX3vtNXn11VflxhtvlP/+979Sw6Rjm2gN4DAr3POG1wAtBYdAWLt2rcyZM0cdflWqVFGeg8ICAal7euTxwy/g7++vWh56AK8ARkE76Pz7SMwFxQDxeEn450WLZICI1PzDyGZ6zp4VadZMV48Aom9RDVi+fLm88cYb8vzzz1tuMQ0OfPTi8XCAaYW9e/cWCATcEaM8D3x8fNTUQmGBgKkGd8/9QwxgS6Fe+QJoEUFMwbNASEmhGCAe5dSpU3IgLEwG4o7PIGXdMpGeLuLlJdK6tYhOhy/66/AHYM5/2bJlKiXQLmA8EVMShUf4IIxwZ+wQCFjJ/P777xekKl6ZgYBD01UHd1ZWlmzfvl3ee+890QtMcED0WE0MEvdigVdjYiZOnjghDbKzxdcqLQIE7SArASuIdQBxwQ888IAqia9atUodAnYHB/6QIUPUw0F8fPxlAmHevHny9ttvq/fVrl37LwIBY5bOcPDgIZnz+TyJP3deagc2lCZN9BkpRSsFgVCoiBDiDDQQEo/yxYcfSvvoaOk+aJCusbwuIy9PpGNHj08PoN2C7IAZM2ao9sCnn36qyujEud66Qxw4TIqJiYnqfYGBgQULmhwhSY58hit5ZOqTUrFGI7l+5HiV0ZCXlysrFs6VmpVz5P133/K48RKbEmFcrGaFf1/EY1AMEI/uVv/Piy/KLX5+EoxlPVYYKcT0gIcX0cTFxak0QaTcTZ8+XaZMmcJtgi4ARkS0sQoLBDySk5PV+7G1EcLAIRIgEGZ89H9ysXoz6dRz0F8+34of50vrQC954onHXXF5hLgVigHiMRAsE/H999IoM1Mqt2xpjeVDDRqIeNA1vm3bNrVfAJMD6IX3RWgTcatAOHHixGXiAO0GCFvQrnNveW3Wn3HOVwYsvTp1nOzbublUqY6luVZMWISEhEgtndpWxLzQYUI8hlf58tLKx0cq+/tb41lPSxM5ccIjXwov9GgFwKXeqFEjdSBRCLgfGAubNWsmd9xxhzIhYsdDSkqK2gaIiQ3/OsUvAYIA8K7mq+KePQEipfG1sASMEGehGCAeO8xWr1wp53FH5ePDZ93JPjBMgg8//LDagrdu3TrV0yb6AJc+Qo6QjJiZcfWDNzM9TR3SnhopRCATRwpJaaAYIB4hISFBNu3aJRkYw7PKJAFGI2EgzM9325eIiopSFQBMDcAB//HHHxs6itdOYOLgRNgBSTmvmQ6vJOL4IYk8fsjpyYSyjhR6oiVBrAfFAPEI6LvWTE2VulZaW4tDOTdX8w64KdYWJrVz584ps+C9997rlq9DSgc2PFauVE7ee+EByUhLuex9iXGxMuvNf4ifb3X1ce4G+QanT5/WbUsiMT/MGSAeIerwYemYkyMVcXiiOmAFsE0PbY8LF1zeUkFoDXrSmJVHVYCGMOOBO/CPPvpIGTqfmTRcmrfpLNV9a0lS4lk5fmSPJJ6NkUWLFnnkTh2GUvhJKAZIaeE0AXE72D435/nnZUSlStIcQTBWSkZDdaBQPG5ZgfnrvvvuU4cIxMDrr7/Osq/BwTKoxx9/XN2ZO0DfHhkQSIYkxAxQDBCPjBQe/PFHaRUXJ9UQ0GOFfIHCYDMdJiTK+H1h//zNN9+sDpX58+er/ybmAGOEcPLDLAiPAFoDnurdo5KEkVMsRjLrYiqiPxQDxDOkpIgsX66lDlopGS0jQxsxHDUKQfml/jRLliyRe+65R4KCgmTx4sXSqlUrl14msS4QIBg7haeksYcDsIh1sFC9lhgVFfMKr0CLFmI5EAEMQRAfX+o7yn/+85+qCjB06FDZsWMHhQBxeooAEyYNEIBFSCmhGCBuJSMjQ3799VeJiY0V6dxZW+pjJdAagJEwIgIuLqf+KqYERo8eLe+88456LFy4UK3dJcTZfAGOFJKyQjFA3MrJkyfV24Jteiil/5H1bhkQ/YpgGSeqA3v37lX59oi3XblypUybNo37BUipAqngMUFKIiFlgWKAuD1foE6dOn/e8SKgB2t/EdZjFVAZAFlZJfrwr776Snr37i01a9ZUscKFV+0S4uz2ys6dO3OkkJQZigHiVpczKgMFVQGAvmZwsHYnbSXwfV26dNUPyc3NlalTpyqjILLuN23apDbhEVJaILLHjBnDKQJSZigGiFvzBbBXHTnul0X4tm+PxBZtwsBKREWJREYWKQrg+B40aJByfc+ZM0fmzp0r3t7eulwmsY7Y3r9/v2RmZup9KcQCUAwQt1GpUiUZPnz4X13OdetqggBi4Bp306YCUwWbN2MRw2V/vHnzZlXKjYiIkNDQULVwCNvwCCkLcXFxagz17NmzfCJJmaEYIG4DITrJxZkF27QRGTtWxEp3x8hPwAhleLgSObhzw2KhAQMGqJ4u/AG9evXS+yqJReBIIXElFAPEbS0CjModOnSo6A9AuwCTBUjvg3/AKoZCVD0iIiTzxAkVAgOPwOTJk2XNmjVSF+8jxIUjhQgZqoh/S4SUEf4WEbeAcSc4nZs2bXqN38CK2gF64oRI/fp/OvPNire3RCQkyLgRIyQ8Nla++eYbmTBhgt5XRSw4UhgdHS0jR47U+1KIRaAYIG4bKaxateq174bRJkDpHAt/wsJE6tQxdVzxyh075G+vvy5+1aurvPgOHTrofUnEomKgZcuWHCkkLoNtAuI2MYCRwhIZ5VAN6NFDpFMnLYMgJ8d0PxWskH3r669l5HPPSc+2bWXXJ59Ih3r1tFwFQlyMr6+v3H777eotIa6AlQHicmCcCwgIUHcuJf9NrKiJAczdw4T3+++4/cFIguF/QqkZGXLvO+/Ikk2b5KV77pGX771XymNN85o1Is2bi3TpovclEov9+4LYRkYFJnYIcQXcWkiMCWKM163Ton4NfPdzJDJSbn7pJTmblCRfv/CC3NC795/vTE0VSU8XGTxYa38Q4gLi4+Nl9uzZcvfdd1/bk0NICWGbgLic2NhYySphNG+xIJsArQPM7p86hfV+YjQWhYZKj0cflUoVKqi2wGVCAGBaAlWOgwetMy1BDDFFgIoA0yuJK6EYIC4vYS5YsECF65QJtA3atRMZNEjE31/bCoiD1QDkX7gg0z79VG595RUZ3bOnbJs9W5pjEqIogoK0ZEK0PQhxUb5Ao0aNOFJIXAo9A8SlYC1vSkqK68qXMOH5+WkHKtIKdU5bS0xJkTtee03W79snHzzyiDw5fvzVTZLo6eL60S4gpIzk5OTIqVOnVLInIa6EYoC4FCwmqlChgmtLmJg2cJgRMYIILwHuuD2cSbArPFxuefllycrJkd/ef18GwvBYEmrW1CYk8PDycvdlEguTnp4uQUFBXFlMXA7bBMSlwOUcHBws1+HQdge1a2vCAKmF586Jp5i7bJn0nTpV6vj5ye5PPy25EHCAEUOIGCwyIqSU1KpVSyZNmqTWXxPiSigGiEtBVcCpkUJnQSARQorwgCkvOhpD/m77cjm5ufLw9Oly/3vvyT3DhsmGmTMlGIKkNJw/L3LggAi3zJFS+nFgzkWmBSGuhqOFxLzAPwCnPtYhY67fxcQkJCiT4J7jx2XW44/LA6NHl+0T4kUcRsiQEGYPEKdJSEiQWbNmyV133cU2AXE59AwQlwHjYLVq1VR1wCMg6hjz+zDn7d2r9eRdFMISum+f3Pbaa3JdxYqyceZM6d66ddk/KQQLqgqIXQ4M1MyRhDgxUoilRBwpJO6AbQLiMn744QdZunSpZ59ROPl9fDQzISYOyjh+iFLsjIULZfBTT0nbRo2UP8AlQsABrhWZCXFxrvucxFYjhUwdJO6AYoC4BIQMxcTEqBcrXWjfXov+hYeglAE/GVlZcucbb8iTs2apkcFV770ntTEW6GqCg7VrxKgkISUgNzdXoqKiuJiIuA22CYhLiIiIUHfVusWjYvth9+7aXTf68hAlTrQrTsTEqFjhk7GxsuCll+S2gQPdW81AsuLu3SJ4vtwhOIjlWnBYStSsWTO9L4VYFIoB4rKRQn9/f6lRo4Z+z6hDEOCuG4ct4oBLwLJt2+TON9+UAF9flSbYrnFj8QgwP2KyoG9ftxggiXXA4q+pU6fqfRnEwvAViLgsDMUQS1MweogI4549r/mhGNF6df58GfPCC9K/QwfZOWeO54QAgIEQC5nQ2iCkGFBxS05O5vND3ApHC4lLX7SuGs3raTZuxDyWlgB4Bcnp6XL3W2/Jr9u2yWv33Scv3HmntnbY08TEaG2CIUO0dEVCriAxMVE+/vhjueeee6RJkyZ8fohbYJuAuCQvHYmDhhICICBAWxCESYMqVQr++ODJkzLupZfUnoFf335bRmI7ol5gNBJTELGxms+BkCKmCDBSiGRPQtwF2wSkzCxevFi+//574z2TLVqItGmjHbR/rED+39q10nPyZKni5aXWDusqBBzbGZE5gPYGIcXkCyBbgCOFxJ1QDJAyceHCBTVJUM+IAToo+3fooA7b/OhoeWr2bPnb66/L2D59ZOusWdIUy46MAIyPp08XCBZCHOTl5XGkkHgEtglImUC2ANoEhjAPFoW3t8QHBcntzz0nm44ckZlTpsjUceOM19I4flwkKUkEI41Guzai60pwtOA4UkjcDcUAKfPKYm9vb2NWBkRk+/btcsstt0h+fr6s/egj6Ye2gRGpWlXbtYBlRtxIR/6gbt268vTTTxtPvBLLwTYBKRNnzpyRxo0b6+PEvwaff/659O/fXxo0aCB79uyRfv37a3ffRgQGx6wsWMf1vhJiILKzs9W/LYoB4m6M9wpOTMUdd9whN910kxjtBfSBBx6Qhx56SL1dv369BMKkhyVGuPM2am8eUw8wOxLyR4vg3//+t/IMEOJu2CYgZc4V8PLyMsyzeOrUKdUWOHjwoHz55ZcyceLEP9+J0T305uPjjbkxEK0CiBUkKLpo+yIx90gh/n0ZtQVHrAUrA6TULFu2TBYsWGCYZ3Dt2rXSpUsXtfd98+bNlwsBANGCDYSIAM7PF8OB+GR4GigEyB9iACOFMBAS4m4oBkiZ9hFU8/B8/PYdO+TvU56SSY8+JQ9PfVp2796jKhTvv/++DB06VEJCQmTXrl1KFBQJglsQ9GNE7wB8FxAqxPZgpBAju5wiIJ6CbQJSKs6fPy9JSUkybNgwjz2Df5/8uFQPbCfD73xGlU+xW+Crn3+Uhx6dKnt2bJHnnntO3njjDalwtW2FuMuCkfDoUc2wZzTCwkR8fUU8uSOBGI74+HglcptjLTchHoBigJS6KgCXcyMPRei++tobUqdFb+nUY0DBn+HrXz/iVvHyqixtWjWXt99+u+Tl+Pr1Nf+A0cjOZnWASFBQkEybNo2pg8RjsE1ASkVkZKTUr19fKsMB74GUw59XrL1MCBSmx4DRcjjspPq4EpOWBrehGA7Mk0MQEFuDqpch930Qy0IxQErF2LFjlWvfE2zcuFGqVPMt9v14waxctYb6OKec+xAPRhszRIsjJ0fvqyA6gvbbu+++K6cRUU2Ih6AYIKUCW9Rq1KjhsWCj9LSUq35Memqy+rgS4+8v4uOjVQiMBMWA7cEUARIzA7B1kxAPQTFAnAZjez/88IPHnjnMWZ8I2y9nTkcW+f6I44fl5LGDzs1jYzkQPj41VQwFooi5s17svqUQqZlGyu8g1odigDhNeHi46ml6in79+olP1coy/aWHJf7s5aXTs6cj5eM3Hhe/Gj7q45wCI4YI+DES8GB4qOJCjAcqAvDjcKSQeBpOExCnwIZC9DJHjRrlsWcOo4IfffSR8ii88NAN0qx1iNTwqyXJSQny+9F9cj4xThYtWnT1kcKiaNBApHt35L6KYcC4Y3S0Nl5IbEdsbKzKGOBIIfE05S5hmJUQJ6oC3333nTz22GNS04Pb9fBr2qJFCxU3nJubW/DnwcHBMmPGDBk3blzpPnFMjLFGDLGoCAmEBtv3QDxHamqq+Pj4cJKAeBRWBojT+QJ+fn4eFQKO6GMYq1asWKF6qTALwiOA1oDTFYHCwHSIykCtWmKYFEK0YPAw4CZI4n7RWx05GIR4GFYGiFNkZmZKSkqKR5en4AWyW7duUqVKFQkNDXXtHdOOHVoaYcOGYghSUrRxxxtu4I4Cm5GcnCzz5s2T22+/ncuJiMdhZYA4BQ5kPDzJzz//LLt375Z169a5vnQKs56RsgZQDUAbBIuUuLDIdlMEaBGg8kaIp2EdkpSYQ4cOyeLFi9WduqfA1MJLL70kAwcOlAEDik4gLBMYMTQS2J2AMjGT52wH2mDwwHgi1ZOQK2FlgJSYI0eOqDsXT0akLlmyRPbv3y8bNmxwzxfACy/uxlEdKIv3wFVgtjwwULsuYquRQmwp7I8lWoToACsDpMR36Hixatq0qUe/5ssvvyxDhgxxPkOgpOAuvHVrMRTp6VqrgNiG6OhoNSXDfAGiFxQDpETAvZ+VleVRMbBw4ULVmnj11Vfd90VwBx4cbIyqgIN9+0SYS28rsP3z4YcfljoIwiJEBygGSIlHCjHSh9WqngAbCF955RUZMWKE9O7d271f7Px5LezHKKANg+oAsQ1ovdWtW5fZAkQ36BkgJaJDhw7qxapMM/1OsGDBAjl69KgatXI7sbHaSJ9RzITwDSQk6H0VxENgVBe/7zfffDOXExHdoBggJcLX11c9PGWmQmtgzJgx0h1xwe4Go5JxcWIYsF4Z1YrsbBoJbTJSePbsWZU6SIhesE1ArklUVJSsXLlSHdKe4Ntvv5Vjx4651ytw5eFrpIVFuJ7MTGO1LohbRwrr16/PkUKiKxQDpEQjhSjZe6JFgCUtr732mowdO1Y6d+7smZ8OTIRGWtFRsSIcZVxWZAPgjTl58iQXExHdYZuAlMg8iCkCT+QLfPXVV+rrYQuhx8B4odHy4LGbAEuLsAPCSJMOxKU4Fm9xpJDoDSsD5JrmpsTERI+MFOJF8fXXX5dbb71VOnbs6LmfDEJ+mjcXQ4EQpBUrRM6e1ftKiBtB4uA999yjzLmE6AkrA+SqoISJikDjxo3d/kxhcgD+BOwi8CiOFgHeGiUGGNUAVAd+/10ES6G4wdCSVKxYUZo0aaL3ZRDCygC5OjA2jR49WrzdPHaXk5Mjb775ptrY1q5dO8/+WFJTsXgBFyGGonZtuDe10UdiORDt/c0330hSUpLel0IIKwPk6gQEBHhk9nnu3Lly+vRpFT+sy1w/FgQhAthIOwEcAgxCxd/fWNdGXDJFgIe7hTYhJYGeAVIs8Aps2rRJ9fLdSXZ2tqoKTJgwQVq1auX5nwjEAF6QjVYZAEh8ROaAkUYficvyBVB5oxggRoBigBRLWFiY2hbo7pHCzz//XO0++Ne//qXPTwM+AQQqGVEM4LmHZyAiQqtcGGkEkpR5pJBTBMQoUAyQYsGIHxaouFMMYPnRW2+9JXfffbe0aNFCv5+Gnx+iD8WwnDsn8uOPIgcOaJMGxPRbCuGTaW60KRZiWygGSJGgNYAZaHePFH7yySeSkJCgX1XAAdoT7duLYUH1ArHJu3aJbNummR6JacEoIUZo66HqQ4gB4GghKRKM+KGU6U4xkJGRIe+8845MnDjRo6uRiwTVj2rVRNLSxLAgGAlGx7AwLX+gUycRjqWZksqVK3t+aoaQq8DKACmS6tWrS58+faRWrVpue4Zmz56txqpefPFF/X8KKL2jL4/thUYGEwUQAI4MAixYgoBBWiH+jBietLQ0WbJkiQr0IsQolLt0iY4kos8LIoKMUCpFq8AQrF8vEhOjOfjNBIQAzI8YP2zYUAQCDh4I7DgghmPv3r3y008/yTPPPCNV0PohxACwMkCKLN/jBQsGJ3fx8ccfK0HwwgsvGOcngP4t1gabDYgA7DBAeM3mzVqMscNoiJ9hRobeV0iuGCkMCgqiECCGgrcOpMgXK9y5tGzZ0m3Ja++99548+OCD0qBBA+P8BHA3XamSNsKH3ryZQE6CI7wG14/pAwgDCAG0EerUQZyklmro46P31dqWixcvqpHCnj176n0phFwGxQApcqQQLmd3lTBnzpwpmZmZ8vzzzxvr2YcYqFFDOzzd6JVwOw4hAw8BApUQWHTqlOYxgEkSS6D0CHciKmUTIVscKSRGg2KAXAYsJLhz6dy5s1uemeTkZPnggw/k4YcfVqVSQ4GqQP/+Ivv2iWXAgiPHimbYgyB0sO8AmQqoJMBXgIoB1yR7BD8/Pxk1ahRHConhoBgglxEXF6c8A+7apPbhhx+qDIPnnnvOmM88qgOoClhxeQyyCiAKHKZDTCJkZoo0aiTStq3WQiBuxcfHR7p3785nmRgOGgjJX8D8M/asuxqMEc6YMUMeffRR4+5vh+kuPt74I4auAD4CVGdQKVizRmT/fmOnMJqc9PR0+e2335RxlhCjQTFAikxGw551VzN9+nTJz8+XZ5991rjPOsrl8EokJ4stgL8AlQF8z4cPIx9a7yuyLNhQuGXLFimP1g0hBoO/laSAvLw8CQ8PV2/dsQERxsGpU6dKbaOXo3G3jAqBnXYAwDgZGIgheJHwcM1syBAjl4uBwMBAqVq1qms/MSEugGKAXBZB/N133ymTn6t5//331dunn37a+M84xAp663bM/4cAOHJEZONGbQcCS9ouelovqikdbikkRoVigBSAKQLEEPsjxMaFxMfHy//93//JY4895vLP7Rbgsodnwg6+geJMlPB0HD2qeQkiI7k6uYzExMSoDZ0cKSRGhWKAFIA7F0wRlIPr3IX8+9//VmuQn3rqKfM821giExIitgWCCBMl8BBs2UIvQRmpVq2aDBgwQLUJCDEiFANEAYczxgpdvT3wzJkzMmvWLHnyySelJiJzzQL6ukbLQfA0EIWIaMbUAeKNHeOIpFT5AhADNA8So0IxQBRIBGzYsKHL8wXeffdd8fLyUmLAdGBPAUrkdgcTFnguQkP/HEFE5DEpEcjt2Lx5s/o3RohRoRggijp16sh9993nUqcz+qTYSIj2gK+vr/meaYzbIZWQL+IaCGPC78euXZowYJWgxFMEyBeAiZAQo0IxQFQEMQ5uV79Yvf3222q/weOPP27OZxltDUT1ojxO/hxBxJrk2FiRtWuRpMNnpgRiALs+4BsgxKhQDBDl9v/8888l0oUl8VOnTqnPiZ3tmFAwbc+8WTPNSc+y+J8gkAqCAFMHCCpCdDPEAZ4nUuRIIacIiNHhbgKiXqwqVark0nXCb731lhIBU6ZMMfczjBE7OMAxZmiGsUhPUrnyn9MGWJmMldfYccAVyQXExsYqrwDzBYjRYWWAKDEA86CrIohRYfjiiy9U7DAWs5jePDdwoIiLpywsBcrfAQFalWD1ai290E7pjVcB5tlu3bpJfbSbCDEwFAM2B7sCkDzoypHCN954Q40RYiGRJYBIwpghWwVXN1tiEgVR1kgvjI724A/IuAQEBMjo0aM5UkgMD8WAzUlJSVFOf1eNFKLKMG/ePLWi2FIZ7GgT4IBjX/zqHgtEOeMuGM8VfAQJCbbdcYD2wL59+yQnJ0fvSyHkmpS7BCs5IS4C44krVqxQ0cbeSLGzCsjoX7FCGzU045ikHuAQhCCAjwBpjtiQaCMOHDggP/74oxqtNX27jFgeVgZsTqoLl/EcP35c/vvf/8oLL7xgLSEA8GKO6gmMcqRkeHlplQKkF27frgUX2WykECvBKQSIGaAYsDHp6ekyffp0OYItdS7gtddeU/PUDz74oFiSRo20zH7O1pcctIqw9AlrkRFW5Ib12EYEBVeIAY4UErNAMWBjIiIi1FtXjBQePXpUvv32W1UVqIyRMyuCEKIWLegbKE2FAILgzBnbPHccKSRmg2LAxsDshxhiVySjoSoQFBQk999/v1jaINe1qyYIiPOCAOOHJ0/awlCIzZ9t27blSCExDRQDNgVlTIgBV4wUHjp0SBYsWCAvvviimqu2PAgfQuoecR6Igd9+s7x/AKuKx48fr1Z3E2IGKAZs7Be4cOGCS8TAq6++qkKLJk6cKLYAi4swasjcAeeBWDx9Gj0qsSrZ2dnKTIsMD0LMAsWATYHDGXsDGjduXKbPs3//flm4cKH861//kuvsMjpWr54WUYwZeuIcuFPGropjxyxbHYBx8JtvvuHKYmIqKAZsSl5enuprli9ftl+BV155RVUX7r77brENSCRs3lw7zBi7WzojJkY0YSi0IKgKwItj2gVdxJZQDNgQlC/ff/99dVdfFnbv3i1LliyRl156SS06shVI2cMMPdcbl646gN8XC1ZWHCOFXExEzAbFgA2Jjo5WEam4eylrVaBFixYyYcIEsR1oiXTrprULiPNg1wOmCyzG2bNnJSMjg/kCxHRwhbENwRQB9gaURQzs2LFDfvnlF9UbddW2Q1OuN8a44dGjel+J+UB7Cq0C5A9Y6PcH7Tfs+QjG90WIieBuAhvy6aefir+/v9xyyy2l/hwjR45U2w4PHjxo7/EpjBj++qvWNoAwICUHUwXwXvTowWeNEJ1hm8BmoD2QkJBQppHCrVu3qmVEaBPYWgg42gWIKD5/Xu8rMR943s6etYwJE/+2kDzI3W/EjLAyYENQygSlNf0NGzZMzpw5owyIZZ1GsARYxLNzp7bIiNWBkpOVpYmoUaMssQny8OHD8sMPP8iTTz4pNWrU0PtyCHEK6zTrSInAXUtZnP8bN26U3377TRYtWkQh4AAi4PhxrQeOdEJSMrDDAmuOEeJkATGAKYLatWtTCBBTwts6mwmBOXPmyJ49e0r9OV5++WUJCQmRsWPHuvTaTA12O7RqZdkQHbeBKgoWF1ngeeNIITE7rAzYiMTERImPjy91GMq6devUA9kCbA9cAZYX1aolEhbmih+VfYCBsIwpmEYgLi5O0tLSmC9ATAsrAzbi5MmTyvCHPQKlufNBVaBz585y4403uuX6TA1aLxjVxN2uDbbyuQyMFVrAZ4FsAYzqumIdOCF6wMqAzfIF8GJVGs/AmjVrlF8A2QKIMSZFAGMmRg2xoMaCgTpu4dQpkUaNtH0PJgbTOY888ojel0FIqWFlwCZgQ2FkZGSpRgpRFUDkcPfu3WUUnN+k+DHDNm1EUlMtMy7ndjIyTO8ZwHROCrZYEmJiKAZsAtoDU6dOlU6dOjn9d1euXKmyBV577TVWBa4F7nKRTBgfX8qflA0x+V4LLCb68MMPJRUikBCTQjFgs7XFiCEuTVWgd+/eKl+AXAMvL606gLvd3Fw+XVcD1ROEVpl89TVGCgMCArilkJgaegZswoIFC9TyFBgAneHXX3+VnTt3yurVq1kVKCnIpe/ShdWBawGxBCGAvAGTjxS2bdtW70shpEywMmADMjMzJSwszOnD3FEV6N+/vwwaNMht12dJh3yHDiKlmNqw3fOEfIYqVcSsYFQX7QGuLCZmh5UBGxAREaEOdmfNg0uXLpW9e/fK+vXrWRUoDchz2LxZBONmjG0u2isAwWTirYXnz59X7YHSjOsSYiTM+6+QODVS6GxP8+LFiypXABWB66+/3ulKxIzP5svybQclKydP6lWrKG9NmyLt29mslOrjowURnTkjEhSk99UYj7Q07VGzppiVVq1aScuWLSmWiemhGLA4qAggbAgvWM7w448/yoEDB1S2gDMkJyfL9bc/LEktbpAKjUarP0u4eEEGPv6h3N2tnnz4zutiG1D+xvTG+vXaoQdxQP4kMVHb52DSu+r8/Hw1susF0yghJodbC20gBtDXRNBQzRLegaEq0KFDBwkKClJjhc4w9Lb75FiDG6Vcxb86xJN+myNz/vE3ufPOO8U2IHt/717tgXaBycfoXMrJkyJ9+2pRziYEPpzvv/9ebSnEpA4hZoYGQosD0yBiUksqBADWsGId66uvvup0JOvuU6lFCgFQo88EeWzav9TdlG2AabNdO+1B/oqJJwmQL+Dn50chQCwBxYDFwbphmABLCg7qV155RSUN9uzZ06mvtXz5cinnG1js+ytUqSFp2Recbj2YHozP9egh0rq13ldiHLC/AULJpBkD3FJIrAbFgIXBwb5r1y5JT08v8d/53//+p8qfEASluVPKOxdd/PVkpsjFnHTZsmWL2BJ/f81MyDAirX2C/Q0mHStMSEhQEcTI7iDEClAMWJiYmBjJycmRJk2alNgQhdbADTfcIN26dSvxHRKWGI0ePVpeeOEFyYk+JJfy84r82JQt38uF9CT55z//qWKR/+///k+SsNjHLsAvEBgoEh2tHYZ2BsmDyGIo5TptvYEPp3LlyhwpJJaBYsDiI4Xe3t5Sr4Qb4b755ht1d18SrwBExvz58yUkJESGDBkip0+flrlz50qt8pkSv/gNuZD9ZzXi0qWLkrr7J8k4Gir169eXJUuWSOPGjeUf//iHurY77rhDVq1apYyLlj8AMV3gqBDYGfhGTLz9sl27dvL000+XagMoIUaE0wQW5j//+Y/UqFFDxo8fX6LNa5iZ7tixoxorLI5z587Jp59+Kh9//LGcOXNGeQtwqCOPAGZF/N1bbrlFKlSvLdfVbizlKnlJflKM5CZGSbmLF2ThwoUybtw49bni4uLk66+/li+++EKOHj2q1itPnDhR7rvvPmmEhT9WXtsbGiri62vfcUOMFCJs6MYbTScK0H7D73p5BkkRC0ExYPHkQdy54G78WuBAfuCBB2T//v1qrPBKjh07JjNmzJB58+ap1sA999wjTzzxhLQuwhQHQfD444+raoGD4OBg9fcdQqAw+Hzbt29X1wDPAjwOgwcPlvvvv19uvvlmVY61FGgRHDokcvasfUcNExI0v8BoLYvCTISHh8vixYvVFlBnF38RYlQoBmwGDt4rR/tQFcDdPJatvP3222rdMe588LGhoaEyffp0+fnnn6V27doyZcoUefjhh1Wi4dXA18DUAKoHaAX069dPfd6SjCeiegBhgL/v6+urcgkmTZrk9JIlw5ORIbJnj1YytxtxcSI1aoiMGCFm45dfflFBXo899pjel0KIy6AYsCjYNIhktCvv8mESxF09JgaKAq0CHMSLFi1SIgBjiRAJaAVMmDDBo3fpqEZ8+eWXypsAUQF/AkQBrqMWYn6tUCFYt067S65TR2wFqiLwTgwZImYCAnnmzJkq0XPkyJF6Xw4hLoMGQguCF6zNmzdfVqYvDIQADvmiHnjf2LFj5e6771aVACQQHjx4UB3Cni7Xt2jRQlUqTp06pSoTDtNhYGBggenQ1AFG6JU3bgw3JhY66H01pAQkJiaqyG1uKSRWg2LAgmCTGl6wnN1S6KBXr15KAKxYsUKGDRum+xKWihUrypgxY5QXAQLnrbfeUnsThg8frsYmsVApMjJSTAmMks2aYVZNbEXt2iJdu4rZwO8ffh8tbXAltoRiwKIjhXA6l/YF68UXX1SjU0YE0cpPPfWUikveunWrEgQffvihqhpgxPG7776TrKwsMQ0QWsgeKM1YJcKLYmK06YSICJGoKO3/HRkGeL9RxzXhxDehGx/5GKhOcaSQWA3z/WskJRIDmCCw8jY1VCsQl/zZZ58pPwGmHHJzc5WfAG2EyZMny549e1TLxPAgkrck1Re0ROAvQFBTcLC27wCTIq1aiYSEiLRpo20ARJYB/gytBwgELASCSEASpVGej5QUkYMHxUzgdwmPKiZNTSTkatBAaEEws4/KQFFri2Eg7N69e7H7CnDns2PHDlUKNSNXmg6Rm4ARRcOaDnHnjvXG+/Zd/aCGEEArBN8DxjlLspIaBy4EAD5/bKzWisAUSAmmOjyyvhgi6IYbTJMzgN8t7N948MEHKQiI5WBlwIJg9r8oIWAHCpsOMQIGT4HDdHj77bcbx3SIscL9+0VWrNDWG1/rjh13+KgGDBpUMiEAMLoXFKRVCfD34H7H244dtcMYBlO99iRAkOTnm2qsEumcAKmehFgNc97+kWJxjAxiRLA4Svs+M4HKBvYl4IEc+a+++kqNTMJj4Eg6xANeA4+CwxcHO0rkKPdfI6/hMtACKEuWP8QBQPIhdk8cO6YJArSTMNroyYoBvhamKCAGTFCFKrylUG9DLSHugG0Ci4EDz8fHR2677bYShw5diSN0yGo4kg6xQwFJh2lpaSrpEGOTSDp0+x0fWgIrV2olexzqKPmX1ESHO/n+/TUXvqvA7wGWJkGYwIsAYeSpnzsqI2hfoE1gghQ/xHBjsRbaTag+EWI12CawENnZ2WpT4dVGCnHI4675ag8rCoHiTIdIX0TCocN0uHv3bteaDiEAcOAiix++gLw87Q4fFQFn3PQI6IER0JVlddydY+Jk8GCthYCv4SlQjUDbA74BE4DEQYhkjhQSq8LKgMVaBLjjxV4APz8/vS/HVL1gmA4hDhymQ1QLIBLKZDp0+ALQa8bPo6zrelFWx2PgQPcsOIIIWrNGa1+4sgJRHHXran4GEwCBiHXbhjShEuICWBmw2EhhzZo1KQScpHnz5irIyGE6RGUFWQZlMh3CuY/NhEePagdrWYUAwF00yvnh4eIWUBFq0kQTHMnJ4pFIYggmk1SVKASIlaEYsBDYDIj0QFI20yH2MqDdgqmEQ4cOKdMhjIZIOsQmyGuCA279eu3gRhneVV4EHNYo5f/+u/sOa4gBLIRCW8PdkwZ4LlGFMDgwDmIduKnCrAhxEooBC4GlRN3gEidlBnsZMJIIMbBt2zYZMWKESjrEqCJMh99++23RhwNK7Qj4QTANvAGuduhjIgBiA6mD7gKjixAxZ86IW8FzBQ+FCfIFsFbbcqu0CSkExYBFQGZ6ie5aidPl4R49elxmOkRwU5Gmw8OHtZ47pgWqVXPfMw1BgBK7u6KGMeqHdEPEJLs7sRBZAwaHI4XEDlAMWIQtW7bI2rVr9b4MS1O1alW59957JTQ0VN0tPvLII7J48WLp2rWrdGrXTj565x05ByHgbmBic3YawVmQO9Cvn3u/BtoeBhcDMA3iAV8JIVaGYsACXLx4UY0+lXZLISmj6XDRImlao4Y89d13EvjAA3L7q6/Kyh073Jd0iEMUUcMQHu5M8KtUSTus3VXKx3ihwfdnYNIEI4UeD6cixMNwtNAiLQIYnJDBDxMh8TAHDojs3CnxNWrI12vXyhfLlsmRqCgJrl1bJg4fLveNHCmN69Vz7dfEAQ0xMGSIFjnsDiAEEJcMjwIqBe6gZ08RA/fikUMRFxenFn8RYmVYGbAAqApgQ2GQuw4FUjzoqZ8/r3IEavv7yz9uu00OffmlbJs1S0Z27y4zFi2SJhMmyOB//EO+Xb1asjC256q7dngGECfsLuAdgJEQy47c9dy56vlwE1hVTCFA7ADFgAVA/DCmCKyaHGho8JzDLFizZqE/Kic92rSRT596Ss4sXCjzn3tO8i9ckDvffFMCb71VJs+YIbvDw8uedIggI6QbYlWxu0BGAoSHO8YMMXq5ebMYFRhyMTWSY3DBQogrMP6GEHJNsHYYLFmyRFJSUtQyFfgH6tSpQ4HgbuLitMpAMct2qnp7yz3Dh6vH8dOn5cvly2XeypUye+lS6dCkidw/apTcOWSI1HIsEXIGBBlhggQjgO7yi0BwIO0Q1YFCgsclYOwS7Q6IIgMK2fDwcDl79qxcZ5LIZELKAj0DFmLv3r1y5MgRiYyMVL3OatWqybhx49RsPO5CWTlwMSjT//yzdqA5keuPKgEMhnOXL5eftmyR8uXLy9g+fWTSyJEypEsXZVgrMRgxxEri1q3FbWAT5okTrl8oBBMknjssKzKgkRCLibCL4AZcHyEWh5UBi1UI8MAcfHR0tJqPRjwxWLlypURFRamKASoHMBo6deiQv5KdrfW8ETDkBBUrVJDRvXqpR/z58/L1b78p0+GIadOcNx0i39/dP0fsD8DWRFePAeKOGy0OPI8GEwPnz59XmwqHwKBJiA1gZcAmYC4eaXrYX5CRkaFKn7jjad++vRqBw90pKwdOgijdZcu0vnoZS8mo3Ow4elRVC75bu1bSMjNlUKdOqlowrn9/8b7aYYkKRbNmIg0aiFuA4Nm0yfWiw7FCGRsT3TWtUEp27twpy5cvl2nTpilzLiFWh2LAZuDQQR8UogB72RG7u2HDBtViQNUAD8xUM3q1BKBXj9E7OO5d2PPOyMqSRRs2qGrBhgMHpEbVqjJh8GDlL+jcosVfRRvK7bi7xqHqioVIRS1dWr5cBON1rhYEEFG9e4vRgGBG4iSqaITYAYoBooJzHFUDlEZRJUB5tHfv3qrlgP/HgxTRr0f8sBtHOmE6nLdihTIdxiYmFm06hAEPPf2+fd2zEhhLkX79VUs+dHUmAISNu5MOCSHXhGKA/KVXClFQr149lVuA3P3Vq1cXVA3wqO6Ou0+zsnu3SFqa278MTIerdu5U1YIiTYcY04Prf/jwYicbSg36+r/8onkjXL1zAVUNTCxAEBhkogDiGJWykSNHcpKA2AaKAXJVEhISVNUAZsTY2FjVZsCaZKz1hdcAUcgIZrEtu3a5L5SnGBKSkwtMh4cjIzXT4dChMrF9e2ly551aOd+VIGMAUxMQGaUZgbwaeO6QcDh6tHuXOzkBzLaHDx+WJ598kj4aYhsoBkiJyczMVGmHCDlq2LChhIWFycKFC9V/O7INAgIC7PMCijaBwzOgAxBmO8PClCgoMB327SuTHn5YjZR6e3u75gthiuC33zTDn6sPbJgfIyNFhg4VMUiU9qxZs9S0zY033qj3pRDiMdioIyWmSpUq0q5dO3X4A7QSBg8erA7/NWvWyOzZs+WHH35Q70PFAOLB0uBOGb1udy3yuQZ43ru3bn1Z0uGF3Fy566671M/m0UcflV27dpU96RDfJ7IM3HHnjucP4hHhTQYgOTlZVcNoHCR2g5UB4hIQcoReKw4ohBwh52Du3LnqUHJUDZDxbqlsA5S40UtHr97VgTylJSdHfs/Lky+3bJF58+er1k6HDh1k0qRJSiTUggmwNGAEECZFd41oglGjdF9aBPG0bNkyefbZZzlRQ2wFxQBxC6gKINsAXgO0FvD/EAMPPPCAulNFbLKvr6+5n32UzX/6SXPzuzqqtywCBaa8oUMlv2ZNWbVqlXzxxRfy008/KdPhTTfdpLZbYlqkxMIsNVXLU8DPyx2HNVoFqBAMGCBGMNBiCyjyNwixExQDxO2gZYBsg6ysLFUhSEpKko8++kilIzqqBoh9NWW4S2iotjnQSBsjsa+gZcvL5vdR+v7666+VMIA5DsJs4sSJct9996lKjm45A4Xp0EETHBwzJMTjUAwQXVoKGF/EA5UD3I1hXNHh3sbB5e/vbw4jIsYKjx517+bA0lQHcF0YM7yiYqFMhxhR/OIL+e677yQtLU0GDhyoqgXFmg5h8Fu7VuRaoqGswDcQEqIJGR2IiYmRo0ePyvXXX2/vCRliSygGiO6gUgBBgAoBqgf//ve/1aFUONsAEwyGBYfYoUPu3xHgDOjvd+2qGf+KAa2bRYsWKWEQGhoqNWrUkAkTJih/QZcuXf4UYwcPIp/X/WIAWQl4DjFZoMPPGy2VAwcOyFNPPWUOIUqIC+E0AdEdtAtw4APsTLj33nvVYYQ0RKxlnjlzpkpCBGg3OP7bMODgwN2zTlMFRYKS/jU8GZgOufvuu2X9+vVy/PhxmTx5sixdulS6desmISEh6nlPxIIiPDzRwsHmR6yDhrCCj8DDoEqFthWFALEjrAwQQ4OM+Li4ONXXRsjRu+++q0rd8Bg4qga6txQgAtavR51Zt8yBIsEoIKoDTgChhTtkTILAdIjn9aZhw2RSr14ytEcP90+DZGVplZb+/d1fiSgEDK0ffvihjB8/Xtq2beuxr0uIUaAYIKYBIiA+Pl7dwcFvgJXMEAjPPPOMVK1aVY3R+fn5uS5sx9kSN/YUYPGOUSYLcKii4uKkIPiL6fCTT+TwsWNSPyBAJo4YIfeNGCFNAgNdfrmFvrB23Z07i6dA7PYvv/yiRgp1+f0hRGcoBoipjYgQAAhBglDAnR0McdipgIoBSr74b48tWQoLE9myBWlMIkY4UCAGEB88YkTpP0dmplwKDZWdx4/L3NWrVdJhakaGDOzUSe4vyXrl0oKfWadO2j4ED3gxUH1CTgZaJITYEYoBYhlQ6nVMKSDbAGZEpPBhTTOc4tWqVVMmObeBPvfvv2tb/owwXYC4ZFQphg1zWbBSZnZ2wXrl0P371Xrlv/2xXrlLUeuVywKex7p1RXBAG8mcSYgFoRggls02wD76wMBAdUB99tlnqooAf4HDa9C4cWP3jJDBQ7Btm3aQ6lkhQN4AZve7dClbsNLKlVrwEA7mQvweEyNfLl9esF65PdYrjxwpdw4dKv6uEF3wD8TGam0OfB9u8oXAlBoREaGqAhVdvfGREJNAMUBsQXZ2tqoWOLINUEXA1AIEAaoGMMbVqVPHdXe2WG28b59InTr6bOODIDlzRmTQoLJvMQwPF9m0SQQ7KYo4LOHbWLlzp8xdvlytVwY39emjqgVDsV65LHf1ECGoEPTqJdK8ubgDrOjGyuKnn36akwTEtlAMENsBfwHGFmE2xEGF8J3w8HDVRnBUDeA3wOhdqcH44/79IgcOaKV6d7YnigIVj1atRPz8yp7ohxXG69ZpB3NAgFPrlV1iOjx3DmpOZPDgv1QnXMGcOXOkbt26cvPNN7v8cxNiFigGiO3BOB0WKzmqBigbO0bM0GpAVaFBgwbO3+HCQ4B0QlQJICwwR+9ucHAjfRDBPdWru+7z4nPm5IgcOaK1Dq5RQXGsV0a1oLDpcNLIkXJLaUyH2LeAdMI/Nma6itTUVJk+fbrccsst3EdAbA3FACFXkJ6ersKP8MC4GTbZ4b+RbYCKQYsWLUq+ZAlLjNC7x50twnvcGaaDO3eM5WE+v2dP9/gV0HrA0iIImxJWO4ozHUIYdG3Z0rnSPFoe+LrXqFCUlD179sjPP/+sxlPLVAkixORQDBByjTtcVAocUwoYPxs+fLh0795dZR6g3QDfQeWSbPODoRAHKe6scZi6yryIagAOafTz27QRQWgO8g7cAaoDqHagQoD/xoImJ74WTIfzVqxQj5g/TIcQBXeV1HSIpVCYbOjXzyV5DqgIwTzYHyFHhNgYigFCnCA3N1cJBGxY3LBhg6xdu1blGGALILwGrVq1UkbEIkFVAFUCGPKQAQBgLoQwcNa4iIoDPh9aFzALwhcAEeCGnnqxmwwPH9ZimEvhiYDpcNWuXapa4JTpEN93VJRIrVraVka8JYSUGYoBQsoAFiwVzjbo2bOn2gKI5UuRkZGqrYCNjJeBwxuHKXIA8BZ388glgOEQ43Q48CAOcMDXrq2V+9EzxwNVBbwfj8aNtXYAqhIQBp4ei8O1REdrfghUJvDfuBYnr8Np0yG+VwgCiBBMGeA5KmXCIsZN27Vr5/6YZUIMDsUAIS7MNoAZEf4CjKoh2x9VhICAAFU1aN26tUpLvAzHwQ9OndJK7zhk8YDPAB+PsrhDPKAkjwMXDxyGRtrmuHq19j3AHIievpOtiqJMhwNCQlS14C+mQzxvjgyCUq48XrNmjfIMcKSQEIoBQtwGEhBRLXDsUoDxcMyYMSoy+eDBg0ogIB3RMlvyUPHAsia0QVApwPcFw18p7rodpkMIg/X79l3ddIj4ZwiP4GCnqhKffPKJev7HjRvn9PURYjVYGSDEA+CuF1UDJB5CHCxYsEDtVvDx8SnwGuBhCVDVQBXDsRsBwgBZAahilCLz4Jqmw4wM7eshlAgtlxKMcEKQffDBB0oIdEC6ISE2h2KAEB2AMMDWRUe2AWKSb7vtNmVQ3LRpkxIIMCVaopeNKQpEGiNJ0NHeKMXYo8N0iGrB0s2bC0yHEAbD2reXChAf+PwYrWzRQgtcKgZHG4cjhYRoUAwQYgBw0OHgR8jRV199JZmZmWpiAWOLaC909uA6X7fg2DNw8qTmf0BCYxkChGA6/Gb1amU6PBQRIUH+/sp0OKl/f2mCVgHEAKYr0E7IyZFLfn6ybss2+eyr7yUnO1P6d+0gLVs0l1GjRrn02yTErFAMEGLAlgJEgcNrgNFF7FGAQXHVqlUq/AgiAWLBdGASIClJy0ZAnx8TCJiiQIgTpi6cbCPgudoVHq5EwZWmw3H9+kmV9HRJOBsnIxcsl+h63aVy484iF/Mlfd9KuXA8VP7z/mty6623uu3bJcQsUAwQYnBw4MEwh+VK8+fPV2OLEAjBwcFqdLFPnz7q/03bQkCAEUYFkaAIgYPsgFK0EWA6/HHjRiUMYDqsXrWqTBg8WDbGZUtav0elXIXLzYV5yWcl/vt/yYL/fEwTIbE9FAOEmAyIAUe2AYxwDz74oPrzFStWqIU78BvAmGgqHCZAhBihaoAqAd46gpWc5ATWK69YIZ/+ulxkwMNStUWvIj/u3IqPxffcIZUJYQl/BiGlhGKAEAtUDXJyclTVAO0F/BlSECEKBgwYoHIPTAPyA+AnwMEcFiaybZs2LgjTYSlWQd/54RzZ1OouKVeu6MpJ5u87JGHRa7Ju3Tr1XBFiVzwcWUYIcSWOeXv4Bx566CHJyMhQ2QaOysFQbC8UUV4DJCFCIGBywbDZBrgux86Gpk21dEMEGWEnAaYFMCHgxE6C/At5cikvR8pdV3Tb4WJ2mnoLEUWInaEYIMRCVK1aVa3ixcMBKgVYqrRjxw7VSoAogNdg0KBBUq0Ud9seA/6BRo20qYPz57W8Angj0DqAOEBaI9ohVxE2d/ToJCt/+1l8e99W5Pszw7eqt/UQXESIjWGbgBCbgJAjZBtgSgE98kmTJqkWAmJ5YUB0ZBuYwoyIlMN9+zQDIgQBTIdF9Pwxsul/z8PiPfwJua52o8vel7ZvhSSHzpegAF+1uZCeAWJnKAYIsTkI3zl69KiKT8YqZowtDhkyRGoZfSMgpg8Qf3zsmEhiopY8WMT2xEWhoXL79NlSObitGi28lJspWSd2S07MEbmUkyELFy7kNAGxPRQDhBCVYYANfo5ERKQhYiIhNDRUBSChaoB8A0OaEdEuQNugalWtlYCpBLQYClU4fly9WqbOmiWxSEH8A4xmzpgxg0KAEFYGCCFXY/369bJv3z5JTk5WZfQGDRqoqkFQUJBxpxGWLdNEAa7RkVcQHy97jh2TT6Ki5PoBA9T19+vXj60BQv6AlQFCyFWBARHZBo5ERIgBbPvbunWrcuHDjNikSRPjmBGRWXDwoMjRo1rbANMHERGy6ORJudSxIxMHCSkCThMQQq4KxhDhH8CjR48ef754VKyophQOHDig/h+BR4MHD5bm2B6oJ2gXdO+ujSHu2aPaBshhOJWRIQObNdP32ggxKBQDhJBS0a1bN/VIT09X2QaoHDj2JezevVvCw8OV1wAPCAmPZhvAL9CypTZpkJMjJ8LCJC0mRlUxCCF/hWKAEFIm0B7o0KGDejjw9vZWo4wIO8J4n6+vr0r4CwkJ8eyzHRio3uSmpEiLtm2N08ogxGDQM0AIcRu5ubkq0wBeA9yVo4Vw+PBh2bZtm/p/VA0CAwPNkW1AiIWhGCCEeBSIg+3bt6ugn+zsbFVFwObFvn37FuxacCVoY2B0EsmLhJCioRgghOgCDuiYmBjlNcB0Qtu2bZX3YPny5QVeA2QbVHLsKijDeCQqEc8++ywrEIQUAz0DhBBdQGsAwT94OKhSpYr6/yNHjqgDHBMLXbp0kZEjR6qqAXC2cgCxgdFHtiIIKR6KAUKIYcB44o033qgO/sTEROU1QBsBYIzx66+/Lqga4AHxcDWQnojqAwQFIaR4KAYIIYYDd/8BAQHq4QBRyNjGCIGAVER8TMuWLeWOO+4oaDtcefePj4Ww4EghIVeHYoAQYgr8/Pxk2LBh6r/T0tLUQQ8B4Pj/jz/+WHkMHFMKNWvWVMuX8GfYs0AIKR4aCAkhpicjI0P27Nmj/AHR0dFKJKDl8Pe//92zYUeEmBSKAUKIpUD0MMYXUS3o2rWr3pdDiCmgGCCEEEJsDmO/CCGEEJtDMUAIIYTYHIoBQgghxOZQDBBCCCE2h2KAEEIIsTkUA4QQQojNoRgghBBCbA7FACGEEGJzKAYIIYQQm0MxQAghhIi9+X96xTWxQo1XjAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ax = plot_layout(\n", - " prob,\n", - " input_dict=input_dict,\n", - " show_image=False,\n", - " include_cable_routing=True,\n", - ")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "d5fb8cca", - "metadata": {}, - "source": [ - "The result: a farm that fits in a stop-sign domain and minimzes the LCOE." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "05647c0f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-3.90569872e-01 -4.74886645e-04 -1.00000000e-15 -4.29804358e-01\n", - " -1.12019252e-01 -2.08497491e-01 -6.59982980e-01]\n" - ] - } - ], - "source": [ - "print(prob.get_val(\"exclusions.exclusion_distances\", units=\"km\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e356a5a0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HeterogeneousMap with 2 dimensions using interpolation method \"linear\".\n", - "Speed multipliers are defined for 5 points and 3 wind conditions.\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|3\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", "\n", - " 0 1 2 3 4\n", - "0.0 1.0 1.0 1.0 1.0 1.125\n", - "157.5 1.0 1.0 1.0 1.0 1.125\n", - "270.0 1.0 1.0 1.0 1.0 1.125\n", - "{'interp_method': 'linear',\n", - " 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", + "Objectives\n", + "{'financese.lcoe': array([0.037782])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|4\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03704646])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|5\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03662964])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|6\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 4579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03782252])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|7\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 4919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03773779])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|8\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 5342.13]),\n", + " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03793225])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|9\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([4919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03645055])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|10\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([4919.56, 5310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03675391])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|11\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03637579])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|12\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([4919.56, 1310.48, 5407.02, 5136.5 , 702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03650135])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|13\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 4702.62, 432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03692278])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|14\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 702.62, 4432.1 , 528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03681955])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|15\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 702.62, 432.1 , 4528.64])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03680836])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|16\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1447.97792266, 2100. , 1398.25161925, 1032.48873534,\n", + " -100. , -100. , 73.89566336]),\n", + " 'y_turbines': array([2300. , 836.2922883 , 1682.85753335, 978.07259313,\n", + " 1536.54654065, 2098.13679694, 2300. ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03822791])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|17\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", + " 'y_turbines': array([ 919.56 , 1310.48 , 1486.07500223, -857.24051132,\n", + " 623.56499777, 353.04499777, 449.58499777])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03780237])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|18\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1603.36453966, 2100. , 1145.99115522, 10.683026 ,\n", + " 517.92482936, 605.03833448, 752.99065992]),\n", + " 'y_turbines': array([1622.7718412 , -115.77099164, 2300. , -500. ,\n", + " 651.47454972, 983.80815274, 1034.25953686])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03687579])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|19\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, -100. ,\n", + " 337.09319568, 465.67033359, 1236.63602937]),\n", + " 'y_turbines': array([2300. , -371.82782536, 2300. , 371.55009023,\n", + " 767.22826853, 1598.01584178, 696.60990773])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03689223])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|20\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1461.58151125, 1434.15039114, 800.45487585, -100. ,\n", + " -100. , 490.98012938, 585.06760813]),\n", + " 'y_turbines': array([2209.8787296 , -425.26416978, 2300. , 563.34974217,\n", + " 1118.51205074, 1327.72474301, 1115.34094766])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03813308])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|21\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, -564.4409931 ,\n", + " 801.53418878, 930.11132669, 1701.07702247]),\n", + " 'y_turbines': array([2764.4409931 , 44.68674201, 2376.36621682, 315.15128132,\n", + " 2418.68587076, 1521.64962496, 620.24369091])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03839013])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|22\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1794.99536927, 1538.59146222, 1539.80332424, -100. ,\n", + " 1247.55639069, 893.69126188, 1940.05867704]),\n", + " 'y_turbines': array([2300. , -138.03695032, 1520.15903866, -500. ,\n", + " 597.56162931, 828.88000402, 1712.80279219])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03695373])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|23\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, -227.65870947,\n", + " 464.75190515, 593.32904306, 1364.29473884]),\n", + " 'y_turbines': array([2427.65870947, 398.34091605, 3942.05526936, 442.35287442,\n", + " 333.38529681, 1299.50523775, 1285.39639919])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03678664])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|24\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1831.20218846, 1768.67634044, 1532.10301595, -100. ,\n", + " 1649.07795976, 657.38350774, 1478.81221056]),\n", + " 'y_turbines': array([2300. , 687.84635691, 1660.26636695, -500. ,\n", + " 578.9359108 , 1772.2194641 , -500. ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03817211])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|25\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([ 1839.17011634, 1452.74125045, 907.37074579, -294.02728277,\n", + " 531.12047845, -1276.56634948, 1430.66331214]),\n", + " 'y_turbines': array([2494.02728277, -318.80244462, 2308.42020209, 404.15554373,\n", + " 978.86238985, 739.24488559, 529.86839692])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03721491])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|26\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1500.49548106, 1456.7172467 , 1527.29186611, -100. ,\n", + " 711.77394297, 306.91469758, 1044.00853159]),\n", + " 'y_turbines': array([2300. , -347.20564865, 1962.84108116, -359.52035623,\n", + " 99.58591667, 1161.26881981, 2098.42866638])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0379115])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|27\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, 619.3958146 ,\n", + " 1439.3076686 , 475.01316362, 517.24021477]),\n", + " 'y_turbines': array([ 1580.6041854 , -1180.86576678, 2874.49559161, 385.64284074,\n", + " 1228.34425803, 1423.42423232, 629.16670137])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03727067])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|28\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1901.51510569, 1281.26717727, 746.72189188, 177.48633525,\n", + " 259.92057322, 564.34077931, 955.85628144]),\n", + " 'y_turbines': array([1448.16840271, -500. , 2300. , -500. ,\n", + " 689.14781783, 1861.17236698, 623.71737208])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03677908])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|29\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([ 1839.17011634, 1452.74125045, 907.37074579, -1290.47218487,\n", + " 216.80526414, 640.36948061, -268.32705351]),\n", + " 'y_turbines': array([2287.56379477, -169.4427529 , 2253.8819615 , 396.29115892,\n", + " 764.92306409, 1209.11412791, 417.73737404])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03695043])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|30\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1606.4715195 , 1382.30378166, 680.69439299, 606.84415122,\n", + " 536.63343383, 536.47877538, 1736.17924064]),\n", + " 'y_turbines': array([2220.25364881, -500. , 2300. , -500. ,\n", + " 915.41813582, 1638.69217245, 176.58816845])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03843408])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|31\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1906.84511298, 1219.17843443, 1140.74981245, -100. ,\n", + " 544.0246559 , 540.61149942, 83.55450586]),\n", + " 'y_turbines': array([1813.64858956, -500. , 2300. , 92.63700242,\n", + " 205.70269485, 2069.70123223, 1544.05557431])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03737337])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|32\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1839.17011634, 1248.22986484, 1244.51787963, -34.9601378 ,\n", + " 208.91821802, 475.94362825, 1217.85458204]),\n", + " 'y_turbines': array([2308.74948471, -391.44439539, 2361.64188498, 374.49390439,\n", + " 817.93529525, 1560.07611449, 609.97151037])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03751531])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|33\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1666.27000072, 1810.9180357 , 565.11394663, -100. ,\n", + " 732.38646416, 458.75534324, 1418.18251633]),\n", + " 'y_turbines': array([1975.72294174, -167.53587005, 2242.24556755, 438.42848891,\n", + " 677.55307604, 1684.48591279, 1063.73604347])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03678555])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|34\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1765.17599428, 1658.39206499, 1073.73298651, -100. ,\n", + " 426.106768 , 550.31213642, 1353.6953159 ]),\n", + " 'y_turbines': array([1860.21419527, 250.33998369, 2107.4894197 , 316.59686121,\n", + " 580.04376475, 2035.27318786, 1197.80719571])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03724904])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|35\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1844.91901201, 1882.11281068, 562.46942353, -89.82002117,\n", + " 729.23735003, 474.72572189, 1418.49621565]),\n", + " 'y_turbines': array([1975.6525103 , -168.16833031, 2226.17855168, 428.73482496,\n", + " 676.56057042, 1643.52819546, 1088.41599944])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03719158])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|36\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1616.97015807, 1518.24408211, 738.15560903, 13.14691213,\n", + " 665.27967762, 503.82466981, 1457.98443384]),\n", + " 'y_turbines': array([1973.13358398, -75.5340431 , 2192.4217961 , 521.76717634,\n", + " 700.29524015, 1720.84957398, 1027.55903046])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03742111])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|37\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1671.73011513, 1807.78006748, 639.56874676, -204.20613169,\n", + " 740.40411981, 481.31504031, 1504.50240669]),\n", + " 'y_turbines': array([1883.66679216, -235.75080269, 2259.89231544, 462.20718044,\n", + " 656.3345218 , 1658.24884367, 1043.97490684])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03705081])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|38\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1585.99686928, 1568.08462506, 729.28870953, 75.28103939,\n", + " 633.6770294 , 496.29486336, 1421.14117079]),\n", + " 'y_turbines': array([2005.81693012, -46.51014466, 2207.44313565, 509.01942927,\n", + " 716.1451748 , 1720.05731305, 1028.40896166])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03719846])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|39\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1422.88649037, 1490.1552573 , 940.92431301, 139.96793823,\n", + " 555.47008473, 504.08355612, 1357.25948326]),\n", + " 'y_turbines': array([2016.73016954, -98.83979618, 2191.64086081, 341.91475398,\n", + " 713.80666202, 1864.87902355, 901.60138157])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03693904])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|40\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1416.38406641, 1522.64721254, 941.39305504, 249.14614198,\n", + " 372.81043917, 502.76548287, 1241.74285053]),\n", + " 'y_turbines': array([ 1.93880068e+03, -1.86661218e+00, 2.19689850e+03, 8.92323009e+01,\n", + " 7.26038175e+02, 1.86002936e+03, 7.57568335e+02])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03713293])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|41\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1493.62152733, 1540.51594726, 971.95245961, 247.45023809,\n", + " 545.43851676, 492.595414 , 1477.67291085]),\n", + " 'y_turbines': array([2046.72493054, -142.04752716, 2210.55724848, 308.75745774,\n", + " 718.69369817, 1889.36730422, 920.72656768])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03760959])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|42\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1442.97033673, 1508.52665295, 915.14750573, 25.62638423,\n", + " 612.48154199, 487.07619322, 1004.9846972 ]),\n", + " 'y_turbines': array([2070.57663913, -82.64523285, 2120.958328 , 390.93481123,\n", + " 689.50118186, 1802.30776645, 848.5259313 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03719969])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|43\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1457.70060938, 1441.81292058, 924.42544459, 119.21583594,\n", + " 647.03856682, 528.52257286, 1407.41178109]),\n", + " 'y_turbines': array([2064.45297221, -39.34297215, 2153.28753838, 285.98354356,\n", + " 628.650582 , 1858.6844664 , 820.70464706])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03730305])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|44\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1457.38915562, 1488.09514163, 850.47048796, 26.63060656,\n", + " 301.94914918, 465.81862499, 1445.12643099]),\n", + " 'y_turbines': array([2082.74465449, -50.06853275, 2121.88440824, 171.38143337,\n", + " 750.34071457, 1724.09924771, 951.42707598])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03789604])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|45\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1404.84488974, 1520.64798209, 919.39547076, 155.94863503,\n", + " 522.82667594, 687.22139529, 1346.91492599]),\n", + " 'y_turbines': array([2043.96820101, -129.15465501, 2178.18400867, 348.95990954,\n", + " 680.35636308, 1861.28219312, 918.63865619])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03686879])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|46\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1552.23928509, 1444.25622398, 1111.2418543 , 112.99603803,\n", + " 565.96515783, 610.92899622, 1380.99806791]),\n", + " 'y_turbines': array([1823.64463338, -89.71114693, 2115.95546534, 408.73859314,\n", + " 747.35846663, 1658.55573478, 811.70207245])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03724626])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|47\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1404.16475931, 1485.53005042, 935.71549781, 171.69882679,\n", + " 488.06233233, 454.26868864, 1357.77214174]),\n", + " 'y_turbines': array([1985.66682378, -132.70446417, 2175.40960532, 396.86220568,\n", + " 553.42563194, 1844.6532238 , 895.04751236])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03741103])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|48\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1528.53067017, 1488.35292787, 969.52201683, 17.11750856,\n", + " 473.47822377, 487.00916243, 1382.29966598]),\n", + " 'y_turbines': array([1900.11325321, -20.44136435, 2150.49065695, 505.48605457,\n", + " 862.70251882, 1802.06065257, 675.82729455])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03745148])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|49\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1364.53585083, 1569.72828135, 1013.13720514, 128.25024194,\n", + " 557.52006046, 501.22288851, 1370.20100975]),\n", + " 'y_turbines': array([2078.23399278, -23.34377784, 2286.02477485, 361.46776546,\n", + " 692.78640012, 1791.86967959, 887.95464848])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03735855])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|50\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1589.81364661, 1216.88306014, 903.9785546 , 87.2514071 ,\n", + " 589.66480109, 501.0286666 , 1263.35068358]),\n", + " 'y_turbines': array([1870.42987004, -139.41224884, 2166.26831002, 265.08882746,\n", + " 739.02056744, 1809.47234314, 1001.67437136])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0366759])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|51\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1722.36202286, 1176.74880769, 816.25901405, 111.15829068,\n", + " 600.47229203, 624.08182876, 1109.2970885 ]),\n", + " 'y_turbines': array([1708.05285657, -49.22814261, 2188.11184902, 233.90686541,\n", + " 591.29138463, 1629.8157561 , 942.4021441 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03681347])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|52\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1555.1449022 , 1284.7079139 , 880.93468062, -18.9579961 ,\n", + " 631.13607912, 496.19551751, 1280.16210859]),\n", + " 'y_turbines': array([1784.82278002, -220.43697888, 2209.14765109, 203.39101937,\n", + " 722.31432131, 1823.19851621, 982.85377004])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03687861])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|53\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1816.2880838 , 1330.51366071, 996.02214188, 313.73382003,\n", + " 603.12897603, 499.45755562, 1173.02905644]),\n", + " 'y_turbines': array([1890.70669167, -175.45162259, 2143.347642 , 264.30714219,\n", + " 877.56037491, 1847.85936479, 1070.85938541])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03641144])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|54\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1931.08493794, 1368.8908097 , 1156.76290542, 268.13060577,\n", + " 528.20088862, 657.92059855, 1088.91641166]),\n", + " 'y_turbines': array([1910.49900521, -100.9714427 , 2103.32009571, 445.42947653,\n", + " 947.93506894, 1870.01301432, 1254.82139279])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03735793])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|55\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.28927495, 1304.53876372, 1029.26041893, 258.57711376,\n", + " 611.33317731, 515.47548507, 1201.73338204]),\n", + " 'y_turbines': array([1994.54477949, -230.46610812, 2185.24029989, 261.86414377,\n", + " 814.33059661, 1850.02831297, 1016.0089625 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03665268])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|56\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1826.64780542, 1300.40581573, 1063.21591125, 451.13897497,\n", + " 625.33484268, 503.56274105, 1292.18246477]),\n", + " 'y_turbines': array([1932.94097457, 48.25503734, 2032.28734824, 78.41624671,\n", + " 763.82388577, 1862.96321215, 975.98476593])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03695532])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|57\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1852.60425253, 1429.65429614, 1016.56557256, 228.73525287,\n", + " 628.59748393, 493.3962174 , 1180.35241139]),\n", + " 'y_turbines': array([1806.12564139, -176.45013214, 2150.81641713, 195.0471402 ,\n", + " 844.98083583, 1931.91104689, 1089.09868072])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03631702])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|58\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1765.05524666, 1474.69389725, 960.17212952, 331.03320412,\n", + " 514.17292177, 496.80753203, 1196.29736628]),\n", + " 'y_turbines': array([1677.85178479, -416.26519497, 2152.27474043, 8.59700956,\n", + " 874.62277381, 1838.11046818, 1019.13985031])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03678391])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|59\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1896.37020509, 1433.15097313, 1068.81765885, 130.66381985,\n", + " 573.68690416, 528.66685323, 1228.42154726]),\n", + " 'y_turbines': array([1797.18742194, -194.27375024, 2125.21997323, 121.77767508,\n", + " 735.47555668, 1955.32310034, 1075.18822398])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03649091])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|60\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1900.31562083, 1416.2376516 , 1095.85977354, 120.63215917,\n", + " 592.3298982 , 538.15498863, 1250.24891231]),\n", + " 'y_turbines': array([1763.0252308 , -217.48084334, 2118.48611011, 111.67690376,\n", + " 672.60615556, 1990.23071403, 1044.71946615])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03646469])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|61\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1891.45986006, 1418.81471632, 1098.96287778, 109.76299009,\n", + " 582.65661656, 539.13499434, 1252.25776964]),\n", + " 'y_turbines': array([1766.08510755, -199.78054055, 2117.71353051, 81.18849178,\n", + " 671.04810213, 1992.80155413, 1049.8922209 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03652498])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|62\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1897.31932307, 1418.94420432, 1099.40650389, 121.07497571,\n", + " 603.16380048, 537.7422962 , 1251.6058542 ]),\n", + " 'y_turbines': array([1766.05550443, -221.42241593, 2116.5834729 , 108.98929613,\n", + " 667.24466061, 1981.42048933, 1055.18889026])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03640958])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|63\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1911.09654488, 1428.13013824, 1077.57266374, 108.95429088,\n", + " 588.7258644 , 535.11071523, 1270.15500238]),\n", + " 'y_turbines': array([1768.08576847, -222.3536814 , 2106.18182265, 108.20979095,\n", + " 662.42666474, 1979.03056633, 1055.07449698])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03643101])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|64\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1911.12546853, 1422.88727219, 1089.85326883, 109.28956674,\n", + " 586.53186081, 541.65395377, 1267.50345671]),\n", + " 'y_turbines': array([1760.54736468, -229.27266829, 2099.30423713, 120.21373573,\n", + " 654.88898305, 1976.93234202, 1086.84889795])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03643169])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|65\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1916.11313275, 1433.97768353, 1075.3593577 , 104.32886706,\n", + " 578.1432416 , 544.38965098, 1280.50610434]),\n", + " 'y_turbines': array([1749.65174114, -220.52641304, 2118.48013249, 126.37075862,\n", + " 652.98055212, 1988.89386641, 1101.78096085])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03646649])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|66\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1912.33129057, 1418.98071634, 1087.35508657, 106.84760049,\n", + " 593.45379727, 555.70654067, 1272.30235964]),\n", + " 'y_turbines': array([1759.1157845 , -230.13947835, 2096.27366557, 117.90425774,\n", + " 663.91225209, 1978.89231335, 1087.13720787])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03646607])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|67\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1909.06309744, 1441.10273619, 1078.80049866, 101.65847168,\n", + " 579.06507807, 535.75527048, 1247.96172545]),\n", + " 'y_turbines': array([1763.4984982 , -229.67532628, 2085.26317064, 128.85684797,\n", + " 637.95414534, 1981.4017158 , 1091.70989549])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03636879])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|68\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.79338053, 1450.22778185, 1075.70211277, 81.86575351,\n", + " 579.77096685, 531.34852712, 1235.79166819]),\n", + " 'y_turbines': array([1749.4875868 , -226.95262805, 2072.46490895, 137.8121666 ,\n", + " 630.00036411, 1965.18905892, 1099.35123582])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03633012])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|69\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1929.49198593, 1458.62773147, 1073.22749087, 75.46646249,\n", + " 580.77796671, 529.32854885, 1223.24743203]),\n", + " 'y_turbines': array([1770.34538023, -241.38731339, 2080.45463172, 142.00455904,\n", + " 609.54905282, 1957.75751139, 1104.59980275])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03626985])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|70\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1926.57579593, 1476.94368714, 1076.34552513, 59.97044262,\n", + " 580.37910501, 530.24303374, 1223.03362565]),\n", + " 'y_turbines': array([1786.04731476, -256.28786927, 2067.29706366, 154.50287838,\n", + " 602.73422726, 1961.1220542 , 1116.82530296])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03630963])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|71\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1927.47506153, 1465.98068967, 1078.26101966, 80.79543582,\n", + " 575.49894887, 539.84689487, 1226.32008285]),\n", + " 'y_turbines': array([1770.54372739, -236.36215348, 2080.76633017, 145.72411113,\n", + " 605.27627525, 1950.02167894, 1099.81824358])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03631461])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|72\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1942.67926617, 1454.7776063 , 1067.00935621, 96.08155857,\n", + " 581.89889793, 526.67269382, 1214.22295561]),\n", + " 'y_turbines': array([1773.94421839, -228.87043772, 2073.29838386, 142.28963647,\n", + " 587.55353049, 1947.98642031, 1112.19449665])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03620612])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|73\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1959.66716277, 1438.64315157, 1071.75111062, 99.71977513,\n", + " 576.83129572, 527.62970183, 1196.20294365]),\n", + " 'y_turbines': array([1768.84522774, -238.1525743 , 2076.29914743, 161.38759833,\n", + " 582.90563991, 1951.50716218, 1100.18784879])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0362474])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|74\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1953.35791491, 1462.1513674 , 1074.91050142, 98.04985864,\n", + " 577.96206364, 527.53395425, 1210.85219002]),\n", + " 'y_turbines': array([1772.58916114, -229.77164852, 2071.99798373, 132.6641168 ,\n", + " 591.16335902, 1953.04844895, 1113.62428214])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03622983])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|75\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1931.42354557, 1440.2020125 , 1062.91714436, 83.87316508,\n", + " 579.86921339, 524.85666488, 1199.0683231 ]),\n", + " 'y_turbines': array([1776.71066234, -222.05801227, 2076.42331041, 121.52241928,\n", + " 571.06772341, 1941.30493546, 1119.01068177])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03619924])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|76\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.32360893, 1450.13479691, 1060.45316936, 98.75498147,\n", + " 586.72013492, 522.26635323, 1197.81539782]),\n", + " 'y_turbines': array([1777.85388783, -203.36802092, 2060.97629404, 127.1837417 ,\n", + " 549.4715578 , 1931.77514787, 1120.70815784])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03616435])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|77\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1940.25058783, 1450.86521416, 1066.45436049, 88.26702972,\n", + " 585.1008353 , 513.97992167, 1204.25776017]),\n", + " 'y_turbines': array([1770.25115382, -199.21379713, 2069.76423371, 127.36292664,\n", + " 545.21496173, 1901.28851727, 1124.9480713 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03619046])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|78\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1931.48218666, 1452.4307061 , 1056.37412477, 91.09255592,\n", + " 598.11982284, 528.93298545, 1195.0241251 ]),\n", + " 'y_turbines': array([1778.42787105, -194.92937359, 2064.07009885, 128.45819121,\n", + " 550.77672171, 1935.13318626, 1118.82525363])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03615851])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|79\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1921.08487648, 1461.80928226, 1051.78469493, 111.53999114,\n", + " 580.77922482, 518.14357812, 1187.35604233]),\n", + " 'y_turbines': array([1761.230906 , -223.08622381, 2068.01534371, 118.7510025 ,\n", + " 544.19802026, 1916.60714942, 1122.04310222])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03614445])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|80\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1924.8873863 , 1469.46954566, 1057.09638191, 109.66290178,\n", + " 577.1174677 , 520.73057393, 1161.26827581]),\n", + " 'y_turbines': array([1755.79096629, -215.25564451, 2059.47631761, 101.55094814,\n", + " 528.96832203, 1926.12478751, 1118.54248361])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03621993])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|81\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.41118122, 1456.52929871, 1055.8908031 , 111.46532986,\n", + " 587.06771675, 527.90744008, 1193.67707959]),\n", + " 'y_turbines': array([1757.3501864 , -230.78295569, 2061.15958441, 114.37680084,\n", + " 538.41779129, 1915.52795468, 1122.06007572])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03615249])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|82\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1921.61579689, 1456.06157329, 1049.61824519, 122.89555038,\n", + " 577.26452144, 520.35546144, 1175.42124705]),\n", + " 'y_turbines': array([1775.01196003, -221.92516086, 2058.05082414, 119.19888563,\n", + " 563.04222299, 1896.53097551, 1137.02443482])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03618806])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|83\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1916.25721921, 1461.31644507, 1064.47134971, 115.20390939,\n", + " 589.21936706, 516.37388698, 1183.53306301]),\n", + " 'y_turbines': array([1759.75069556, -223.34652296, 2075.62950862, 120.81768536,\n", + " 544.15341179, 1918.1844361 , 1128.83258413])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03614566])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|84\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1924.66193325, 1460.31508741, 1047.64431267, 121.11819188,\n", + " 576.53085224, 519.22445715, 1200.19690054]),\n", + " 'y_turbines': array([1756.97939976, -219.22558783, 2086.42582098, 124.93378349,\n", + " 531.75347772, 1920.58349075, 1148.71054575])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03617203])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|85\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.31199755, 1465.20789066, 1053.82265777, 114.46659744,\n", + " 579.89391879, 522.41050787, 1187.54471313]),\n", + " 'y_turbines': array([1775.70098849, -226.81339304, 2075.45055053, 116.52529993,\n", + " 538.4020591 , 1914.17791968, 1116.68217229])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03616468])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|86\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.67031733, 1452.07275825, 1040.80084369, 129.17993927,\n", + " 588.26674604, 514.09476576, 1204.61346567]),\n", + " 'y_turbines': array([1762.09090031, -228.82565212, 2071.29332358, 104.12370062,\n", + " 539.07736431, 1901.71089092, 1108.09288811])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.036095])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|87\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.38175232, 1461.27778164, 1036.49622074, 118.93970375,\n", + " 590.0225777 , 510.69550484, 1211.13997588]),\n", + " 'y_turbines': array([1774.56186985, -253.73721385, 2061.67332817, 108.66745533,\n", + " 524.47830555, 1889.20445302, 1116.79428476])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03611414])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|88\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1911.44424292, 1461.68657725, 1042.64227899, 125.39377291,\n", + " 587.03524308, 517.96138776, 1211.64038717]),\n", + " 'y_turbines': array([1762.7179486 , -224.8222775 , 2071.24463035, 93.92190551,\n", + " 543.51956674, 1900.29499495, 1111.84763669])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0361223])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|89\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1900.6795428 , 1447.21154191, 1035.01604234, 133.76099528,\n", + " 588.34141764, 511.92512974, 1207.99862996]),\n", + " 'y_turbines': array([1750.07052591, -229.44308316, 2076.87092909, 127.26454568,\n", + " 536.47543535, 1893.72899249, 1089.03673237])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03610369])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|90\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1911.64136881, 1442.01090576, 1037.48590223, 121.87977857,\n", + " 586.38884068, 514.56347953, 1197.56459592]),\n", + " 'y_turbines': array([1763.54542559, -226.25333993, 2073.65511459, 97.77556117,\n", + " 531.77259061, 1899.84669054, 1110.35934223])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03610718])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|91\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1935.32863058, 1452.34169224, 1041.60492737, 147.65833833,\n", + " 592.99881266, 513.71517521, 1197.28460949]),\n", + " 'y_turbines': array([1749.00657087, -229.16399291, 2063.45333648, 89.05517547,\n", + " 524.19991093, 1900.31513626, 1092.17837609])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03606792])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|92\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1948.40857827, 1439.60374446, 1040.05492716, 146.68175594,\n", + " 589.40860003, 514.60603927, 1198.90733271]),\n", + " 'y_turbines': array([1739.37421949, -251.22247733, 2078.15215015, 77.07523299,\n", + " 537.10490786, 1903.59325784, 1080.74295546])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03609414])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|93\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1938.75898012, 1455.94246527, 1031.33474398, 144.61171388,\n", + " 606.83824768, 518.79225736, 1193.73317624]),\n", + " 'y_turbines': array([1748.6542805 , -227.33842196, 2067.74421965, 90.33598653,\n", + " 526.67263167, 1899.56614202, 1092.81464019])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03604482])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|94\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1924.58567098, 1461.35131118, 1039.25413755, 148.89096871,\n", + " 600.74656753, 511.35175047, 1186.4373321 ]),\n", + " 'y_turbines': array([1736.41443598, -222.51363778, 2055.57466994, 75.99196726,\n", + " 499.90694679, 1891.6193507 , 1081.6039535 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03605629])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|95\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1918.69246873, 1449.2746204 , 1050.20014303, 165.77609219,\n", + " 604.05636561, 514.69288468, 1194.83473567]),\n", + " 'y_turbines': array([1751.77991452, -216.49129036, 2040.94774159, 72.25382217,\n", + " 486.86419671, 1903.91169367, 1071.58574197])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03606453])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|96\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1917.59197111, 1462.80175676, 1034.21626464, 158.9659895 ,\n", + " 596.84406524, 518.54045112, 1178.25974981]),\n", + " 'y_turbines': array([1736.62276829, -228.96133861, 2052.55863309, 75.0013087 ,\n", + " 503.74542739, 1891.90848016, 1086.27371894])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03607751])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|97\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1939.4837196 , 1451.02586102, 1033.41587129, 154.74778244,\n", + " 598.9455778 , 504.1924026 , 1182.56956655]),\n", + " 'y_turbines': array([1737.18994901, -205.96278747, 2043.22978516, 78.19433207,\n", + " 502.53907997, 1865.27973792, 1082.65475616])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03605831])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|98\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1922.98203752, 1462.94980545, 1033.4920116 , 145.18882008,\n", + " 601.03575394, 500.64264839, 1182.40238539]),\n", + " 'y_turbines': array([1737.85941097, -223.15359046, 2046.08953906, 74.86266645,\n", + " 506.99299228, 1898.52212473, 1076.57254866])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601447])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|99\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1934.19813856, 1464.71171533, 1038.22589581, 154.48017681,\n", + " 603.59210479, 511.30588288, 1196.38039983]),\n", + " 'y_turbines': array([1723.72814625, -211.174936 , 2059.25066957, 78.84904548,\n", + " 490.86577998, 1891.45063831, 1090.86769183])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0360668])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|100\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.11784924, 1461.85497958, 1043.24845322, 151.03727436,\n", + " 609.81838837, 490.63127319, 1178.39578281]),\n", + " 'y_turbines': array([1737.20986691, -225.45221868, 2049.35411884, 75.06539067,\n", + " 510.21748013, 1896.76947312, 1082.73020723])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598808])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|101\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1914.45541235, 1459.2671057 , 1034.25992395, 137.45127778,\n", + " 603.13597443, 508.72059422, 1170.24212251]),\n", + " 'y_turbines': array([1736.78909454, -222.68252763, 2052.03165007, 64.38454902,\n", + " 494.2221054 , 1881.93915144, 1066.83624156])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03605988])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|102\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1915.48458119, 1454.06242374, 1039.95955359, 148.06509463,\n", + " 618.25579343, 494.6909646 , 1184.40859107]),\n", + " 'y_turbines': array([1729.32916928, -228.52379424, 2040.99445039, 72.07256048,\n", + " 513.40474816, 1895.55542485, 1086.24016085])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359727])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|103\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1944.09829932, 1445.31350405, 1019.37791723, 176.31415094,\n", + " 603.42583762, 500.39737293, 1166.17083765]),\n", + " 'y_turbines': array([1744.05919161, -190.63669093, 2041.41261447, 74.47013473,\n", + " 493.50262417, 1851.31765962, 1080.495059 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03606441])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|104\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.6555124 , 1460.99392707, 1031.22247364, 160.16105549,\n", + " 603.38717334, 503.61528584, 1192.30013695]),\n", + " 'y_turbines': array([1739.28311547, -209.1415755 , 2044.74493747, 75.25537921,\n", + " 506.45236191, 1858.0660379 , 1075.19382115])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03606404])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|105\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1951.43311794, 1460.14896129, 1041.31698559, 149.53286153,\n", + " 598.80913485, 506.99773318, 1167.04085623]),\n", + " 'y_turbines': array([1727.63148247, -203.43560237, 2019.44000157, 92.28226056,\n", + " 505.74123207, 1875.60087454, 1075.1464638 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03604978])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|106\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1945.01358096, 1464.35707981, 1048.09116947, 143.74362918,\n", + " 592.75763074, 508.79346179, 1165.77554759]),\n", + " 'y_turbines': array([1728.83292452, -179.64976117, 2013.63270478, 72.90792178,\n", + " 523.58062335, 1882.20735351, 1084.20412947])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03608674])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|107\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1960.6516941 , 1464.56097026, 1041.1929025 , 146.89307574,\n", + " 601.53638221, 507.36262036, 1166.23459139]),\n", + " 'y_turbines': array([1733.97781825, -210.21003993, 2014.80114378, 82.5731939 ,\n", + " 500.87311407, 1875.49921714, 1082.5413414 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03605838])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|108\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1935.90402102, 1453.44525525, 1038.07980431, 138.10462929,\n", + " 601.72457673, 504.07234484, 1172.16062509]),\n", + " 'y_turbines': array([1732.47840841, -209.26955632, 2009.52659367, 119.28011764,\n", + " 498.52091181, 1864.83833787, 1083.91578729])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03606715])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|109\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1962.68280151, 1436.32706155, 1041.03298138, 154.57152558,\n", + " 597.23240778, 507.22483749, 1168.47139959]),\n", + " 'y_turbines': array([1709.70842973, -220.78562765, 2021.00763152, 91.01772845,\n", + " 514.2791357 , 1876.43701104, 1061.88003267])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03603248])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|110\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1965.42392448, 1452.94083484, 1041.82408736, 170.38722178,\n", + " 598.89701797, 508.00974274, 1162.94453601]),\n", + " 'y_turbines': array([1698.92209633, -223.471716 , 2023.31828759, 101.12296689,\n", + " 509.40323031, 1879.32503829, 1034.1556161 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03603701])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|111\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1958.20635788, 1437.87904731, 1041.95758747, 157.92670841,\n", + " 585.88018968, 498.97891163, 1170.87402398]),\n", + " 'y_turbines': array([1703.39121235, -223.7514675 , 2014.53346919, 86.03728745,\n", + " 508.18489699, 1874.17202018, 1064.1398889 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03604519])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|112\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.47123744, 1413.89290704, 1038.25672721, 149.60682029,\n", + " 596.01831809, 507.28402984, 1171.61681903]),\n", + " 'y_turbines': array([1712.92151743, -243.50201335, 2028.60403744, 90.00569505,\n", + " 518.79734272, 1876.65416075, 1054.40672064])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602993])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|113\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1981.7649297 , 1401.39790735, 1044.11475069, 145.40202734,\n", + " 587.60350752, 510.03803901, 1169.24557468]),\n", + " 'y_turbines': array([1703.95837188, -226.63479956, 2028.20861332, 83.15535426,\n", + " 545.71577785, 1886.78650528, 1046.15008562])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03607589])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|114\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1979.71571676, 1407.26301889, 1046.6091186 , 154.79087686,\n", + " 599.21497742, 511.24897643, 1178.15892296]),\n", + " 'y_turbines': array([1719.64462471, -241.6516972 , 2021.23703489, 87.57570762,\n", + " 513.08098675, 1880.84511341, 1049.50426903])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03604356])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|115\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1976.39292573, 1412.39188752, 1034.4931156 , 153.23272486,\n", + " 597.536848 , 503.44037299, 1178.96507879]),\n", + " 'y_turbines': array([1689.13947348, -256.29985071, 2014.45156247, 76.19192245,\n", + " 508.37467985, 1862.51332864, 1060.1803163 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602494])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|116\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1978.00209752, 1416.1989741 , 1034.3973596 , 153.0098516 ,\n", + " 593.13842244, 505.19107881, 1166.55640117]),\n", + " 'y_turbines': array([1721.60680749, -251.13307171, 2020.30741218, 87.75136023,\n", + " 527.10819935, 1872.78987388, 1050.1212745 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0360266])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|117\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([2001.57749499, 1428.1779816 , 1032.12970391, 154.18966999,\n", + " 601.74563861, 506.03112651, 1175.35446875]),\n", + " 'y_turbines': array([1717.04383789, -256.62219332, 2040.29664742, 98.53446079,\n", + " 497.08721154, 1872.04447654, 1048.67662086])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03603687])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|118\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1983.21904608, 1413.69620056, 1051.24936305, 145.84135103,\n", + " 599.28778365, 498.51218915, 1166.80827168]),\n", + " 'y_turbines': array([1713.8404465 , -242.86340484, 2031.33560615, 88.48829601,\n", + " 518.85746593, 1867.45520604, 1051.24168967])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03603368])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|119\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1978.39254092, 1415.03737476, 1053.40931676, 165.66625181,\n", + " 585.80416765, 523.54372734, 1161.40545992]),\n", + " 'y_turbines': array([1709.69538566, -257.24224267, 2037.95460966, 95.28220611,\n", + " 521.56343375, 1873.50586783, 1071.42230246])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03615304])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|120\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1987.59556147, 1414.50055307, 1039.20113059, 158.52843175,\n", + " 603.21507573, 499.3753639 , 1177.0745279 ]),\n", + " 'y_turbines': array([1712.17843214, -242.32746702, 2025.22296338, 95.66444687,\n", + " 526.10167646, 1877.69692903, 1061.40190407])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598923])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|121\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1968.31471121, 1404.44194517, 1034.82645293, 135.40798348,\n", + " 595.07326384, 504.2644139 , 1174.27999211]),\n", + " 'y_turbines': array([1710.71371955, -244.94880106, 2022.18905102, 119.02732794,\n", + " 510.68658669, 1865.54451665, 1053.94705787])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03604055])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|122\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1978.18970847, 1421.08713329, 1044.21686282, 142.30115007,\n", + " 596.02155923, 505.07960987, 1179.08511496]),\n", + " 'y_turbines': array([1711.29839714, -252.76187259, 2029.64005082, 90.46514045,\n", + " 522.30895353, 1885.47432106, 1053.63854245])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602985])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|123\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1966.63929317, 1399.87751708, 1039.25902603, 155.7290915 ,\n", + " 597.68475036, 508.89287954, 1149.74945026]),\n", + " 'y_turbines': array([1711.52571388, -249.18604185, 2041.56533437, 84.51864317,\n", + " 499.91958482, 1882.57288896, 1057.07577953])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03606869])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|124\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1991.04962132, 1414.1682032 , 1041.63333177, 145.83811628,\n", + " 593.55848972, 506.55431258, 1162.07663336]),\n", + " 'y_turbines': array([1709.67049878, -244.63979877, 2017.57335652, 92.72677881,\n", + " 515.80143434, 1883.77771967, 1055.97774357])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03605114])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|125\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1983.88090715, 1408.11424474, 1025.31502689, 150.4449393 ,\n", + " 593.46705076, 502.28495751, 1191.33073447]),\n", + " 'y_turbines': array([1709.14412147, -227.88453989, 2038.95313595, 81.53860754,\n", + " 526.54207757, 1858.26204276, 1042.52938251])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03605139])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|126\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1994.95644173, 1412.13552846, 1041.83252357, 144.66480994,\n", + " 595.78057556, 507.36452062, 1165.64705389]),\n", + " 'y_turbines': array([1706.99511412, -239.28814943, 2018.12287698, 90.66221359,\n", + " 518.75261632, 1876.95024636, 1052.20079709])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03604332])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|127\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1981.45686419, 1415.18471259, 1038.21998632, 150.08136022,\n", + " 599.18167983, 509.39772158, 1170.78284814]),\n", + " 'y_turbines': array([1711.50762369, -243.13109632, 2028.7149455 , 90.60434479,\n", + " 519.79143977, 1876.29076921, 1052.596182 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602765])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|128\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.38829733, 1415.05971387, 1037.8130305 , 145.14078104,\n", + " 596.39052567, 506.62528095, 1172.22838319]),\n", + " 'y_turbines': array([1717.25490145, -242.66303317, 2027.76930696, 87.23537643,\n", + " 516.6174868 , 1874.23043254, 1060.65676342])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03603259])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|129\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1983.04954723, 1412.65255314, 1038.05201894, 149.13817803,\n", + " 596.54731627, 507.68206333, 1171.89556819]),\n", + " 'y_turbines': array([1713.05293156, -244.34628247, 2029.05416061, 89.80243773,\n", + " 519.36601987, 1876.42700585, 1054.3822125 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602954])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|130\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.11387376, 1413.82552361, 1036.76773127, 149.92967415,\n", + " 595.88374709, 506.82180945, 1173.5797893 ]),\n", + " 'y_turbines': array([1712.6213326 , -241.74443823, 2029.64523544, 89.2174899 ,\n", + " 519.44599749, 1874.95349881, 1053.28250894])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602786])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|131\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1980.51090088, 1412.26438929, 1036.02275854, 150.49049012,\n", + " 596.3858657 , 506.6919907 , 1172.19032485]),\n", + " 'y_turbines': array([1712.20175079, -241.08177341, 2031.35349724, 88.0498152 ,\n", + " 517.80027041, 1874.47588774, 1052.98097108])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0360272])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|132\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.13512371, 1411.39560688, 1035.56597301, 149.59506198,\n", + " 596.49740626, 506.36847026, 1171.42585147]),\n", + " 'y_turbines': array([1710.66932331, -239.03493301, 2030.48527327, 87.21651891,\n", + " 517.46002357, 1873.28564501, 1051.80767846])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602687])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|133\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.1111734 , 1411.02325215, 1034.46533679, 151.81660439,\n", + " 596.14746487, 505.97627891, 1171.65517693]),\n", + " 'y_turbines': array([1709.28157344, -238.13518767, 2031.47820649, 87.43240895,\n", + " 518.64747021, 1871.84274264, 1053.26553695])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0360267])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|134\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1980.63743997, 1411.385296 , 1034.01971197, 150.525075 ,\n", + " 596.07522876, 505.98719097, 1173.29436986]),\n", + " 'y_turbines': array([1707.31256466, -238.02023021, 2033.0230307 , 86.06012557,\n", + " 518.87338576, 1871.88289043, 1052.30345076])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602694])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|135\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1983.05897454, 1411.73907368, 1034.57208848, 152.49623954,\n", + " 596.26421446, 506.1190547 , 1171.55444035]),\n", + " 'y_turbines': array([1709.45992014, -238.38201975, 2031.96674152, 86.15576431,\n", + " 518.54438285, 1872.13347514, 1053.14129767])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602761])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|136\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.5084983 , 1411.28405801, 1033.34769422, 151.86711733,\n", + " 596.76454947, 505.49313754, 1172.4174066 ]),\n", + " 'y_turbines': array([1709.37501769, -238.87108037, 2032.08719292, 89.47177316,\n", + " 516.62003688, 1870.06545294, 1052.27667984])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602417])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|137\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1981.83438798, 1412.66845152, 1033.24624626, 152.4145237 ,\n", + " 597.40697406, 505.46159284, 1171.63368138]),\n", + " 'y_turbines': array([1707.87141203, -238.31021459, 2032.01893533, 91.79458314,\n", + " 514.59531738, 1869.94930375, 1051.82649165])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602286])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|138\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.8979447 , 1410.72073446, 1032.79320526, 151.92901226,\n", + " 597.67134898, 505.39464447, 1171.36132061]),\n", + " 'y_turbines': array([1706.63946486, -240.12395772, 2033.04541035, 93.73453797,\n", + " 513.72829635, 1869.7030006 , 1051.60536526])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602272])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|139\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1981.50642623, 1411.1096396 , 1031.53714565, 152.21064555,\n", + " 597.80567791, 504.7170884 , 1170.89969761]),\n", + " 'y_turbines': array([1707.42132408, -240.77695212, 2032.25585654, 94.54081882,\n", + " 513.49230484, 1867.2100775 , 1049.87803881])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602053])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|140\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1982.76819837, 1412.84133864, 1030.66796636, 153.68962139,\n", + " 598.27788969, 504.40368503, 1170.63696212]),\n", + " 'y_turbines': array([1707.78989793, -241.79968011, 2033.07967134, 93.77285427,\n", + " 511.99561972, 1866.05714598, 1048.44399043])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03602055])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|141\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1981.46676655, 1411.00021534, 1031.78399889, 153.00166689,\n", + " 596.6807193 , 504.83748002, 1170.18372205]),\n", + " 'y_turbines': array([1706.81840419, -241.32408576, 2031.55306457, 94.2432767 ,\n", + " 513.43999192, 1866.98765502, 1050.33589387])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0360229])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|142\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1981.05206683, 1410.80850874, 1030.73397518, 153.65829398,\n", + " 597.5245463 , 504.35977449, 1169.06434249]),\n", + " 'y_turbines': array([1708.29361581, -239.46305743, 2032.48990995, 96.61122585,\n", + " 514.37830175, 1865.89540152, 1049.66607078])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0360192])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|143\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1978.97779436, 1410.91261384, 1029.57072218, 154.6738845 ,\n", + " 597.42225719, 503.7585527 , 1169.07706153]),\n", + " 'y_turbines': array([1706.63550259, -239.37677496, 2031.86981283, 97.49172688,\n", + " 514.72529726, 1863.68341514, 1049.66373067])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601708])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|144\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1978.59930444, 1410.45082413, 1029.2336507 , 154.46813598,\n", + " 597.46675088, 503.29441223, 1167.14275919]),\n", + " 'y_turbines': array([1705.20654817, -238.56524369, 2029.89919821, 97.64989609,\n", + " 514.60971732, 1861.97580408, 1048.2528845 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601545])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|145\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1977.77379396, 1409.72113721, 1028.12033529, 155.36001394,\n", + " 597.44781159, 502.75589252, 1166.02489136]),\n", + " 'y_turbines': array([1703.08564546, -238.26971272, 2029.49737938, 99.2106319 ,\n", + " 514.64026603, 1859.99468616, 1047.93273087])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601377])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|146\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1978.12241527, 1411.09285071, 1028.00947307, 154.76891723,\n", + " 596.9687478 , 502.471015 , 1167.40963377]),\n", + " 'y_turbines': array([1702.68173544, -237.73309692, 2028.57528914, 101.03076172,\n", + " 516.18059358, 1858.94641396, 1046.11028628])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601312])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|147\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1975.335258 , 1411.48166178, 1027.83415335, 154.91405253,\n", + " 596.75713973, 502.46237994, 1166.24498582]),\n", + " 'y_turbines': array([1702.41751245, -238.13487288, 2028.83187461, 101.48349842,\n", + " 516.81950359, 1858.91458988, 1043.71941645])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601262])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|148\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1974.24750795, 1412.45499353, 1026.8661389 , 153.89152028,\n", + " 596.94564889, 501.82323333, 1165.62566453]),\n", + " 'y_turbines': array([1703.11366825, -238.01297772, 2027.24024995, 102.67198422,\n", + " 516.21334816, 1856.5630621 , 1044.56607563])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601126])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|149\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1973.64171542, 1412.26185365, 1025.54838733, 154.64842382,\n", + " 596.8857221 , 501.22811708, 1165.49643593]),\n", + " 'y_turbines': array([1701.43881087, -237.86130239, 2027.11736777, 104.9318121 ,\n", + " 516.40465392, 1854.3737699 , 1044.92968633])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600997])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|150\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1974.94326965, 1411.67246875, 1025.43690159, 153.74747335,\n", + " 596.97966705, 500.92690791, 1163.30774781]),\n", + " 'y_turbines': array([1700.60709855, -237.01219224, 2025.61112318, 106.09677764,\n", + " 516.10664137, 1853.26570349, 1043.55518303])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600993])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|151\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1974.91686797, 1410.34947214, 1024.28770388, 153.7587117 ,\n", + " 596.35296432, 500.31595186, 1163.62708158]),\n", + " 'y_turbines': array([1701.34359662, -237.26253697, 2025.43803344, 104.55451352,\n", + " 518.07580195, 1851.01804462, 1043.21313153])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601003])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|152\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1975.06105735, 1412.52502075, 1024.80288404, 153.22388278,\n", + " 596.51805056, 500.1635378 , 1162.77047714]),\n", + " 'y_turbines': array([1700.07387434, -236.51498131, 2026.15480866, 105.6646068 ,\n", + " 516.52283786, 1853.67543734, 1043.93420633])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600805])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|153\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1973.71345065, 1411.76088577, 1025.40016075, 155.41102262,\n", + " 597.27232664, 500.70735924, 1164.40468159]),\n", + " 'y_turbines': array([1700.63159035, -234.40383673, 2024.23104555, 105.94335214,\n", + " 515.18889645, 1852.45798673, 1043.17186521])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0360082])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|154\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1971.13829208, 1410.27734861, 1025.29196134, 156.82281994,\n", + " 597.71648336, 500.54560678, 1163.88283056]),\n", + " 'y_turbines': array([1701.21436528, -235.09624466, 2023.40575346, 106.57075722,\n", + " 513.82289286, 1851.86301257, 1042.42804408])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600688])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|155\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1968.79170231, 1411.55391228, 1025.01251912, 158.45657482,\n", + " 597.63285795, 500.3114602 , 1162.43032112]),\n", + " 'y_turbines': array([1700.34509241, -234.02738848, 2022.52389197, 106.15208343,\n", + " 514.05426341, 1851.00160348, 1042.97434342])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600574])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|156\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1966.48048568, 1410.59187252, 1024.76634544, 156.57696965,\n", + " 597.87378756, 500.16678198, 1163.25575423]),\n", + " 'y_turbines': array([1698.69949079, -232.74439622, 2022.50333327, 105.80466033,\n", + " 513.26722648, 1850.46916576, 1043.00271704])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600489])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|157\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1965.05301963, 1409.93998481, 1024.23715143, 156.67044629,\n", + " 597.78382533, 500.08527358, 1162.70549047]),\n", + " 'y_turbines': array([1700.35607646, -230.35259932, 2023.69342903, 107.48077037,\n", + " 513.52878339, 1850.16927725, 1043.28922273])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600592])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|158\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1966.47924666, 1410.58751493, 1025.17508862, 156.58669308,\n", + " 596.05901314, 500.49216824, 1163.2649652 ]),\n", + " 'y_turbines': array([1698.70021197, -232.7568552 , 2022.60409912, 105.82617802,\n", + " 512.69724028, 1850.15750716, 1043.02838456])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03601099])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|159\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1965.53545691, 1409.92417951, 1025.70355214, 156.88449232,\n", + " 597.57678903, 500.17665326, 1164.53879273]),\n", + " 'y_turbines': array([1697.93673784, -232.95598599, 2019.50864479, 106.6800541 ,\n", + " 514.22530907, 1850.50563118, 1043.82332606])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600271])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|160\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1964.33745057, 1410.29870995, 1025.74495356, 157.67835205,\n", + " 597.83000512, 499.83063779, 1166.2582205 ]),\n", + " 'y_turbines': array([1696.6878506 , -233.33970282, 2016.94991039, 106.87399493,\n", + " 513.42612005, 1849.23255801, 1043.50521865])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03600069])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|161\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1963.2927717 , 1410.35652878, 1026.57761363, 157.27753574,\n", + " 598.09088112, 499.84383467, 1165.33845961]),\n", + " 'y_turbines': array([1694.72987322, -234.15557447, 2014.51559226, 108.29935789,\n", + " 512.60308813, 1849.28123729, 1043.52754691])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03599902])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|162\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1962.49189672, 1409.68740054, 1027.20612395, 158.7016349 ,\n", + " 597.7149795 , 500.05686213, 1166.00905332]),\n", + " 'y_turbines': array([1692.57094755, -233.99877375, 2014.35795767, 108.68830973,\n", + " 513.78955306, 1850.06551148, 1041.2988835 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359981])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|163\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1960.59567186, 1409.24475958, 1027.59694902, 159.38788767,\n", + " 597.68401466, 499.93194335, 1166.94801439]),\n", + " 'y_turbines': array([1691.40652794, -233.51373702, 2011.80389704, 110.21303408,\n", + " 513.88682247, 1849.60497112, 1041.1382619 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03599628])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|164\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1958.66488305, 1409.24295771, 1027.27555815, 158.63996374,\n", + " 598.20019977, 499.68797577, 1167.45561733]),\n", + " 'y_turbines': array([1688.98759961, -233.21407345, 2011.2355511 , 110.0377812 ,\n", + " 512.25840505, 1848.70697871, 1040.01004909])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03599596])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|165\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1957.77504202, 1411.05602509, 1027.38897543, 161.11528172,\n", + " 598.03770729, 499.5323391 , 1165.98174674]),\n", + " 'y_turbines': array([1688.22626941, -233.48494421, 2009.89499754, 109.37030173,\n", + " 512.77130893, 1848.13414643, 1040.27682866])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03599381])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|166\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1957.74337284, 1409.5911677 , 1027.12765627, 161.1643774 ,\n", + " 597.51875804, 499.10007953, 1165.01087452]),\n", + " 'y_turbines': array([1687.69412617, -234.6350888 , 2007.95935404, 108.04848419,\n", + " 514.40937681, 1846.54309668, 1040.01394039])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03599199])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|167\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1956.56915075, 1409.72919791, 1027.24807505, 162.62880375,\n", + " 597.21232387, 498.78963709, 1164.38855215]),\n", + " 'y_turbines': array([1687.333024 , -234.9318064 , 2004.97397847, 108.29143081,\n", + " 515.37519706, 1845.40258773, 1040.67880692])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03599029])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|168\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1955.06287581, 1408.47514148, 1026.90570831, 161.88306665,\n", + " 597.25268199, 498.33775486, 1164.48842584]),\n", + " 'y_turbines': array([1685.48041594, -235.32499788, 2002.95833271, 107.79318995,\n", + " 515.24794247, 1843.74006587, 1039.90982202])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598818])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|169\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1951.00411812, 1406.56094619, 1027.49034036, 160.38635843,\n", + " 596.43223105, 498.45650512, 1159.97629943]),\n", + " 'y_turbines': array([1683.53985395, -232.52774331, 2003.68175306, 107.63897165,\n", + " 517.84072687, 1844.17722099, 1040.99734966])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03599004])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|170\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1954.92549651, 1408.2761687 , 1025.43475873, 161.9998309 ,\n", + " 597.65507111, 499.2996469 , 1164.22403144]),\n", + " 'y_turbines': array([1685.61541768, -235.45193403, 2002.61609117, 107.83640135,\n", + " 515.22555507, 1844.37903652, 1039.69761203])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598745])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|171\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1953.98861598, 1406.90252933, 1026.79265941, 163.40063918,\n", + " 597.6775239 , 498.15860227, 1163.46149985]),\n", + " 'y_turbines': array([1686.31492017, -237.01792328, 2002.68656581, 108.30880904,\n", + " 513.9089441 , 1843.08092414, 1038.27875223])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598741])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|172\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1955.64074207, 1406.75752871, 1027.73130208, 163.93993057,\n", + " 597.86010675, 497.71774538, 1163.06427681]),\n", + " 'y_turbines': array([1685.37707238, -235.98373773, 2000.84848992, 108.38403916,\n", + " 513.33245461, 1841.23208059, 1036.66374507])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598776])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|173\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1954.49217482, 1406.02992394, 1026.54987863, 164.08002413,\n", + " 597.52996116, 497.51013889, 1163.45503857]),\n", + " 'y_turbines': array([1685.62251972, -236.86562775, 2002.70370881, 107.87350563,\n", + " 513.33319301, 1843.74405206, 1039.02610585])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359857])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|174\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1952.79713351, 1407.08769552, 1026.51102092, 163.92233601,\n", + " 597.80143423, 497.71058432, 1164.57409313]),\n", + " 'y_turbines': array([1685.6602866 , -238.05506317, 1999.84613404, 108.64543882,\n", + " 513.516013 , 1841.43267053, 1037.84986272])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598477])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|175\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1952.65458862, 1405.23775963, 1025.2965604 , 166.73225808,\n", + " 597.98272796, 496.90463608, 1166.55953522]),\n", + " 'y_turbines': array([1681.58139152, -240.88847669, 1998.9974172 , 110.07575859,\n", + " 512.94029255, 1838.46747884, 1041.013227 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03598194])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|176\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1950.83301959, 1404.41678159, 1026.56898611, 168.31036204,\n", + " 598.4012046 , 496.80566683, 1168.98873361]),\n", + " 'y_turbines': array([1679.30395257, -243.45043088, 1993.70349956, 107.21912527,\n", + " 511.62271037, 1838.10336354, 1040.92592618])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03597931])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|177\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1950.27201362, 1405.36909732, 1025.19790351, 168.95059452,\n", + " 598.59160779, 495.49730942, 1170.30505601]),\n", + " 'y_turbines': array([1678.23682472, -242.25380525, 1988.94963852, 110.04807914,\n", + " 511.02299186, 1833.28983141, 1040.37343961])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03597691])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|178\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1947.67809821, 1405.0186406 , 1025.52352773, 174.7456522 ,\n", + " 598.92515668, 495.29910449, 1167.66350448]),\n", + " 'y_turbines': array([1678.99178891, -243.78089503, 1986.63801375, 112.57157873,\n", + " 509.97021756, 1832.56059477, 1040.09420751])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03597243])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|179\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1945.99573849, 1408.10242914, 1024.88977675, 178.23968404,\n", + " 598.52580446, 494.72887797, 1165.59726134]),\n", + " 'y_turbines': array([1676.78277144, -245.47511641, 1984.43348085, 114.90608235,\n", + " 511.23040355, 1830.46266543, 1036.89317315])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03596851])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|180\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1942.24573176, 1407.45176269, 1023.82149714, 180.9669588 ,\n", + " 599.43233971, 494.06069591, 1163.91765112]),\n", + " 'y_turbines': array([1674.91788392, -245.11759818, 1983.26335977, 117.24219047,\n", + " 508.37003732, 1828.00422941, 1033.40209051])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03596472])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|181\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1940.51215247, 1406.3206406 , 1023.47879193, 183.73991725,\n", + " 599.11133865, 493.37810801, 1161.51876821]),\n", + " 'y_turbines': array([1674.46256698, -244.49621042, 1979.60931565, 120.9401591 ,\n", + " 509.39468085, 1825.49302987, 1030.1450291 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.035961])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|182\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1940.81360911, 1410.39658537, 1025.35440091, 179.7663775 ,\n", + " 601.12236928, 493.06248634, 1152.25500379]),\n", + " 'y_turbines': array([1671.6722542 , -246.73593995, 1973.76367771, 127.42363233,\n", + " 503.17479344, 1824.3332728 , 1031.13825654])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359675])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|183\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1940.4989925 , 1406.32472006, 1023.57109149, 183.7405052 ,\n", + " 602.6272747 , 491.87876306, 1161.53241957]),\n", + " 'y_turbines': array([1674.47245144, -244.50003046, 1979.64257587, 120.93963179,\n", + " 510.51578287, 1825.84397003, 1030.14114722])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359497])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|184\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.82991313, 1406.01759053, 1021.38741245, 188.90899282,\n", + " 598.67509539, 492.33960089, 1161.94895998]),\n", + " 'y_turbines': array([1675.7051295 , -244.42039701, 1979.27035986, 119.23571389,\n", + " 510.82706377, 1821.672153 , 1028.42860331])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595749])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|185\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1934.99393706, 1406.04434588, 1022.26120216, 193.06177836,\n", + " 598.445568 , 492.7000852 , 1166.38875655]),\n", + " 'y_turbines': array([1675.02367759, -244.54039809, 1978.91327935, 122.71339373,\n", + " 511.6291301 , 1822.9981164 , 1026.71077548])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595787])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|186\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.39873234, 1406.09681312, 1022.3331665 , 189.15739048,\n", + " 598.43061062, 492.02773928, 1161.62714027]),\n", + " 'y_turbines': array([1674.80711938, -243.42079113, 1979.48456196, 119.01637583,\n", + " 511.1681083 , 1821.46957638, 1029.1594124 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595782])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|187\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1940.14850977, 1405.27846027, 1021.32161935, 191.01608326,\n", + " 598.88501575, 492.30177418, 1161.585308 ]),\n", + " 'y_turbines': array([1673.71118214, -243.37777059, 1979.3651417 , 118.86914876,\n", + " 510.35069046, 1821.53248787, 1028.485257 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595812])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|188\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.5023123 , 1406.17675211, 1020.9031714 , 188.92089942,\n", + " 599.28548522, 493.99119841, 1161.80786954]),\n", + " 'y_turbines': array([1675.52668398, -243.95572204, 1979.03203237, 119.14492337,\n", + " 511.175521 , 1821.65426352, 1028.70772062])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03596022])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|189\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1936.66549814, 1405.24410487, 1022.80605837, 188.98016268,\n", + " 598.39382694, 492.53379723, 1160.93894057]),\n", + " 'y_turbines': array([1674.41490592, -244.13378042, 1978.8704745 , 117.172425 ,\n", + " 511.79644913, 1822.38637949, 1026.61820275])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595844])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|190\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.45276378, 1406.18236274, 1020.27467548, 189.08016829,\n", + " 598.34224073, 491.7577499 , 1161.64031611]),\n", + " 'y_turbines': array([1675.63976207, -243.93316219, 1978.80729918, 119.09544903,\n", + " 510.82489647, 1822.87068476, 1028.75458927])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595471])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|191\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.89124937, 1406.60507707, 1020.52092552, 187.24175448,\n", + " 598.55907547, 491.79535919, 1163.66219917]),\n", + " 'y_turbines': array([1674.41428745, -243.32505828, 1978.49957642, 119.06721312,\n", + " 511.30878203, 1819.66974958, 1027.35829763])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595911])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|192\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.49950607, 1405.08696554, 1020.98150909, 188.7432989 ,\n", + " 598.57366975, 492.2904772 , 1162.03434266]),\n", + " 'y_turbines': array([1674.82189325, -245.5447618 , 1979.13900613, 119.30662166,\n", + " 511.18425553, 1821.47309848, 1029.18937461])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595796])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|193\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.54098857, 1405.87828489, 1020.43461299, 188.98008001,\n", + " 598.31977323, 492.27766088, 1160.46541944]),\n", + " 'y_turbines': array([1676.02722918, -244.00916856, 1982.11804795, 120.5474091 ,\n", + " 512.00071101, 1821.44432072, 1027.36975053])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595857])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|194\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1937.68784514, 1404.42708543, 1021.37802932, 188.6550283 ,\n", + " 598.76321009, 492.3395612 , 1162.31236834]),\n", + " 'y_turbines': array([1676.33324515, -243.54546162, 1979.32438605, 119.23563693,\n", + " 510.54721613, 1821.67255348, 1028.49508231])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595796])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|195\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1936.8835338 , 1407.15323823, 1021.47532822, 190.42525224,\n", + " 599.08885291, 492.14707752, 1160.31719355]),\n", + " 'y_turbines': array([1677.45699969, -244.8705926 , 1977.57673268, 119.24600105,\n", + " 509.45406757, 1820.9643673 , 1028.76130922])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595637])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|196\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1938.24161308, 1407.34520655, 1021.95769375, 191.01558336,\n", + " 598.20854581, 492.16863364, 1160.25237607]),\n", + " 'y_turbines': array([1679.17034706, -244.91145237, 1976.20101743, 119.23164673,\n", + " 512.20677555, 1821.04475721, 1029.34791293])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595696])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|197\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1936.87244368, 1407.16572598, 1021.52607344, 190.42042982,\n", + " 600.84896907, 491.39904272, 1160.33078904]),\n", + " 'y_turbines': array([1677.48435425, -244.88111521, 1977.60660694, 119.23427099,\n", + " 510.00548387, 1821.14437192, 1028.79328221])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595084])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|198\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1936.44225783, 1408.40779195, 1021.26599753, 191.50013629,\n", + " 599.32899753, 492.24025823, 1161.48302246]),\n", + " 'y_turbines': array([1678.71085578, -245.41691541, 1978.99387203, 116.77754212,\n", + " 508.69400461, 1821.30769967, 1029.73027588])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359591])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|199\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1936.00491044, 1406.50422475, 1020.58543295, 191.14140916,\n", + " 599.02329757, 492.0811205 , 1160.05582338]),\n", + " 'y_turbines': array([1677.24770664, -244.25521944, 1977.39553481, 118.87605956,\n", + " 509.90431325, 1820.24633669, 1029.09980558])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595526])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|200\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1935.30205776, 1406.44553824, 1021.9360317 , 190.74334791,\n", + " 599.2572948 , 492.13094403, 1158.26190074]),\n", + " 'y_turbines': array([1676.79940804, -243.51543688, 1975.89346111, 120.8188688 ,\n", + " 508.90952386, 1820.90480551, 1029.50665131])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595561])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|201\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1933.18444879, 1406.82599659, 1021.70848085, 192.53581645,\n", + " 599.54073483, 492.05844057, 1157.87341384]),\n", + " 'y_turbines': array([1677.5002144 , -242.74198039, 1976.14735451, 119.12239967,\n", + " 508.03335931, 1820.63807018, 1031.23844166])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595532])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|202\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1932.67850746, 1405.16526819, 1021.5154433 , 193.83403008,\n", + " 599.90340483, 491.8124235 , 1156.82819526]),\n", + " 'y_turbines': array([1678.41456598, -243.74367265, 1975.06472105, 118.76327605,\n", + " 506.88960046, 1819.7330484 , 1029.06793326])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595438])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|203\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1932.34800735, 1405.88872985, 1022.70050864, 194.09770911,\n", + " 600.68597904, 492.2173071 , 1155.57892304]),\n", + " 'y_turbines': array([1679.49989181, -244.2588778 , 1973.92084718, 119.21440977,\n", + " 504.40470857, 1821.2224921 , 1028.61190207])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595558])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|204\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1932.03226526, 1405.40080882, 1021.95040607, 194.78915932,\n", + " 599.80666963, 491.79591916, 1157.99457354]),\n", + " 'y_turbines': array([1678.26000297, -243.76933883, 1975.01977233, 119.62480479,\n", + " 507.07279027, 1819.97209705, 1028.62537777])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595431])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|205\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1931.92964476, 1406.4055997 , 1020.51945559, 193.35148177,\n", + " 599.98878644, 491.10485116, 1157.41341287]),\n", + " 'y_turbines': array([1678.04659049, -242.57431955, 1973.53060795, 118.61508211,\n", + " 506.7154458 , 1817.12981275, 1028.00018469])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595275])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|206\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1930.6149103 , 1406.41001753, 1019.73831992, 193.22279843,\n", + " 599.94035561, 490.5473659 , 1157.64317072]),\n", + " 'y_turbines': array([1676.66841666, -244.54532322, 1972.26357819, 119.04363805,\n", + " 506.89137948, 1815.07871986, 1029.21163817])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03595098])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|207\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1929.29464684, 1404.94436796, 1019.48899546, 193.81047575,\n", + " 599.43598881, 490.1431577 , 1157.06373562]),\n", + " 'y_turbines': array([1675.97668257, -243.6131017 , 1970.20080309, 119.86566435,\n", + " 508.44542069, 1813.59160057, 1029.41867439])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594913])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|208\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1927.60902705, 1404.77278997, 1019.04286921, 194.07682446,\n", + " 599.38854353, 489.57057776, 1156.76097163]),\n", + " 'y_turbines': array([1675.27459186, -243.645741 , 1967.57830578, 120.64950825,\n", + " 508.54282012, 1811.48494571, 1029.35440631])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594729])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|209\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1924.21159477, 1403.85537443, 1017.05785691, 197.23269839,\n", + " 598.81864675, 488.44500395, 1158.23118994]),\n", + " 'y_turbines': array([1675.63713017, -243.14159937, 1966.40012457, 117.47742041,\n", + " 510.46305442, 1807.34387832, 1030.49070025])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594782])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|210\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1927.98510494, 1404.0415018 , 1018.68243332, 193.88566603,\n", + " 599.95589813, 489.94768492, 1156.86430335]),\n", + " 'y_turbines': array([1675.29467597, -243.85635448, 1966.49234415, 119.76366082,\n", + " 508.26634204, 1812.16021345, 1029.7303353 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594607])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|211\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1927.4328439 , 1404.28330047, 1018.32053976, 193.39820229,\n", + " 599.37325248, 489.19931238, 1153.41148345]),\n", + " 'y_turbines': array([1675.16676771, -243.37677199, 1967.42465745, 121.76563628,\n", + " 508.66257929, 1810.11891027, 1028.95916752])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594665])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|212\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1926.68696201, 1405.06020559, 1018.72022936, 192.61208801,\n", + " 599.74532823, 488.98525301, 1153.54308866]),\n", + " 'y_turbines': array([1674.27945212, -243.80368449, 1964.54545681, 123.27568791,\n", + " 507.42146632, 1809.331494 , 1028.55823338])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594594])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|213\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.44662096, 1404.6722329 , 1019.10816777, 195.11137191,\n", + " 599.78379858, 489.19776179, 1153.37371799]),\n", + " 'y_turbines': array([1674.43483853, -243.59060068, 1964.79760975, 125.48092466,\n", + " 507.44184833, 1810.11376081, 1027.06483726])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594485])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|214\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.09690705, 1402.31990392, 1019.77236114, 194.21170209,\n", + " 600.17329809, 488.98128715, 1154.28262637]),\n", + " 'y_turbines': array([1676.10040121, -242.29827719, 1964.99839306, 126.70922827,\n", + " 506.34539885, 1809.3177757 , 1027.55470241])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594623])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|215\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1924.25302008, 1404.87945222, 1018.65008502, 194.27241211,\n", + " 599.87778497, 489.52722205, 1153.31424379]),\n", + " 'y_turbines': array([1675.28195722, -243.97643711, 1964.76149263, 125.40727687,\n", + " 507.90618195, 1810.67158508, 1026.75212789])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594437])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|216\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.83222646, 1403.73998331, 1019.00483829, 197.03749404,\n", + " 600.15675996, 488.98790445, 1150.83583973]),\n", + " 'y_turbines': array([1673.90823212, -243.07842011, 1963.5838155 , 125.55670945,\n", + " 506.09661155, 1809.34146503, 1026.60348765])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594391])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|217\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1924.83207955, 1404.16479585, 1019.07420945, 197.82983813,\n", + " 600.18475567, 489.06248961, 1149.81421161]),\n", + " 'y_turbines': array([1672.48535438, -243.3120582 , 1963.90736513, 127.00875115,\n", + " 506.15682748, 1809.61639734, 1029.56407158])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594356])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|218\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.42783479, 1402.7103959 , 1017.80565979, 196.29910736,\n", + " 598.87903051, 488.60803392, 1150.90874089]),\n", + " 'y_turbines': array([1671.46924116, -242.51324991, 1965.03249106, 127.59726691,\n", + " 505.55787953, 1807.94506001, 1029.3822695 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594555])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|219\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.17914565, 1404.61028688, 1017.94928603, 197.92290064,\n", + " 601.25075926, 488.30920643, 1150.00920496]),\n", + " 'y_turbines': array([1672.66244344, -242.65440474, 1963.84617541, 127.34958543,\n", + " 506.30955106, 1809.8424233 , 1029.64746749])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593847])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|220\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.17714798, 1402.86164048, 1019.63169235, 197.21868469,\n", + " 600.08511746, 489.30808371, 1149.12550827]),\n", + " 'y_turbines': array([1669.84712776, -242.59613924, 1963.74826164, 126.41121712,\n", + " 506.48076812, 1810.51981806, 1028.31591761])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594317])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|221\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.77962895, 1402.06942023, 1020.18935965, 197.99535401,\n", + " 599.35754699, 489.29690105, 1147.95809716]),\n", + " 'y_turbines': array([1669.61928194, -242.16066717, 1961.73676501, 128.12471911,\n", + " 508.66338324, 1810.47819159, 1027.85378748])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594284])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|222\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.12024054, 1402.90406084, 1019.472716 , 198.21897531,\n", + " 599.42623191, 488.96975078, 1146.24967187]),\n", + " 'y_turbines': array([1667.77060535, -242.61908391, 1961.80130546, 129.25073886,\n", + " 508.39404116, 1809.27445023, 1025.65079859])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594158])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|223\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.11061108, 1404.85419495, 1019.64246598, 197.60765946,\n", + " 599.569889 , 488.86331578, 1141.42770602]),\n", + " 'y_turbines': array([1665.48924216, -243.6905398 , 1960.51107751, 129.59765041,\n", + " 507.96665172, 1808.88274655, 1021.29425181])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594309])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|224\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.13016894, 1402.26390821, 1019.53191875, 198.22703891,\n", + " 599.4022573 , 487.54095948, 1146.25316218]),\n", + " 'y_turbines': array([1667.76150181, -243.80665811, 1961.81481661, 129.24549547,\n", + " 508.3866754 , 1809.64026695, 1025.64906826])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593839])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|225\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.25183429, 1401.97439846, 1019.01672853, 197.80193937,\n", + " 599.49706275, 488.7767418 , 1147.64328426]),\n", + " 'y_turbines': array([1665.16008868, -242.10830915, 1962.0769751 , 129.56888324,\n", + " 508.20191795, 1808.56444273, 1024.99364731])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594038])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|226\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.57411318, 1400.97138067, 1018.77660367, 198.78057044,\n", + " 599.10561252, 489.0604028 , 1147.90087521]),\n", + " 'y_turbines': array([1664.99806179, -241.55731809, 1964.97817687, 129.38389677,\n", + " 509.49874377, 1809.60827491, 1023.57157678])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03594025])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|227\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1925.869025 , 1401.7645662 , 1019.46785676, 197.53808445,\n", + " 599.93444055, 489.84116772, 1147.20443107]),\n", + " 'y_turbines': array([1665.22292235, -243.21986265, 1962.44207187, 130.13758063,\n", + " 508.01222511, 1808.68836774, 1025.18720226])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359428])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|228\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.90372627, 1401.60206433, 1017.94068152, 199.44811603,\n", + " 599.19936487, 488.17753805, 1149.05504876]),\n", + " 'y_turbines': array([1664.45033456, -241.90369347, 1961.61366229, 128.54477122,\n", + " 509.23310619, 1806.35976346, 1025.04270382])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593784])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|229\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1922.99708626, 1400.90336549, 1016.83875405, 200.56838334,\n", + " 598.95341687, 487.58006694, 1150.31769404]),\n", + " 'y_turbines': array([1662.68614357, -241.51983405, 1960.9972044 , 127.77614534,\n", + " 509.87909366, 1804.16176779, 1024.18839889])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593593])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|230\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.25513677, 1406.04249702, 1019.74589314, 202.42047442,\n", + " 598.20384717, 487.30628515, 1153.57871948]),\n", + " 'y_turbines': array([1660.15509527, -242.28920717, 1961.49065496, 127.09790602,\n", + " 512.2509977 , 1803.15800586, 1024.37502846])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359404])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|231\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.28322273, 1400.88866894, 1017.20751536, 199.82307826,\n", + " 599.59352289, 487.17951988, 1149.54209898]),\n", + " 'y_turbines': array([1662.6898459 , -241.26032672, 1961.39862973, 127.06329651,\n", + " 510.68927347, 1803.4051742 , 1024.48713842])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593482])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|232\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1922.50968819, 1399.72497588, 1015.49819742, 201.4081855 ,\n", + " 598.80920948, 486.88256587, 1150.47834386]),\n", + " 'y_turbines': array([1660.93658623, -240.87240207, 1960.60286646, 127.19802977,\n", + " 510.32840246, 1801.59555512, 1023.42603123])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593546])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|233\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1922.34139727, 1401.09268818, 1015.34081583, 199.14357488,\n", + " 598.02069687, 486.77868478, 1150.80190013]),\n", + " 'y_turbines': array([1660.20851407, -241.62363862, 1960.83987779, 126.25820563,\n", + " 512.78427911, 1801.21466257, 1023.4092843 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593629])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|234\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1923.07716015, 1400.00369912, 1014.85935775, 202.02002583,\n", + " 599.1048508 , 487.15839088, 1149.94676046]),\n", + " 'y_turbines': array([1660.57375464, -241.15940054, 1960.05325865, 126.0550517 ,\n", + " 510.44489718, 1802.32478855, 1023.36338026])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593419])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|235\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.72232808, 1399.26050714, 1016.19547926, 200.49496115,\n", + " 598.86276954, 487.04340923, 1152.63010083]),\n", + " 'y_turbines': array([1660.7292971 , -240.37211541, 1959.59618148, 127.93698774,\n", + " 510.15474648, 1802.18783707, 1021.33391477])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593406])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|236\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1921.41339973, 1397.35164922, 1016.96324842, 201.18502797,\n", + " 598.23108998, 487.17100998, 1153.57517569]),\n", + " 'y_turbines': array([1661.25570019, -239.56825815, 1957.94252772, 128.35315002,\n", + " 512.17565133, 1802.65773208, 1022.50380618])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593341])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|237\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.59808913, 1399.63711107, 1015.09244253, 200.57750561,\n", + " 599.923961 , 486.88910973, 1153.06337537]),\n", + " 'y_turbines': array([1660.83994568, -240.37592305, 1959.67033641, 128.82107242,\n", + " 510.63317436, 1802.50150908, 1021.72751659])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03592952])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|238\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.2090526 , 1397.90201832, 1015.98223257, 200.63653533,\n", + " 598.91682918, 486.78205462, 1152.91085244]),\n", + " 'y_turbines': array([1659.65302409, -237.73613058, 1958.26878453, 127.78554397,\n", + " 510.00982502, 1801.22575432, 1019.64951994])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593255])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|239\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1918.3983441 , 1395.56274079, 1015.67071699, 201.81778637,\n", + " 598.62967974, 486.62818059, 1153.05287693]),\n", + " 'y_turbines': array([1659.67005286, -238.54512612, 1958.27304662, 127.12918701,\n", + " 510.91627843, 1800.65953257, 1017.8049156 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593189])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|240\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.29455529, 1397.56142742, 1016.33981648, 200.54962601,\n", + " 599.11423083, 487.01496371, 1152.53940737]),\n", + " 'y_turbines': array([1658.39564298, -237.65442143, 1958.47976231, 127.84202139,\n", + " 509.94322756, 1801.75454902, 1020.52224183])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593277])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|241\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1921.66857051, 1396.35960141, 1015.90133784, 199.55950145,\n", + " 599.19307126, 486.47797348, 1153.98264349]),\n", + " 'y_turbines': array([1658.71732914, -238.90813787, 1956.44595887, 128.29769969,\n", + " 509.13391446, 1800.10668832, 1018.5757185 ])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593223])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|242\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.22995143, 1397.91454582, 1016.00911253, 200.62448403,\n", + " 599.26370192, 488.63884752, 1152.92410923]),\n", + " 'y_turbines': array([1659.75846692, -237.7145135 , 1958.32108254, 127.86263213,\n", + " 510.14831991, 1800.60137151, 1019.61689582])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593738])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|243\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.77552286, 1396.86780829, 1015.55947054, 200.37855202,\n", + " 599.21302825, 486.64534095, 1155.56596233]),\n", + " 'y_turbines': array([1660.39462937, -236.55818273, 1958.82143484, 125.93309559,\n", + " 509.02980133, 1800.72229817, 1020.32235276])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593528])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|244\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.33808074, 1398.37392507, 1016.19990055, 200.66798828,\n", + " 599.30983903, 486.50913915, 1152.60884097]),\n", + " 'y_turbines': array([1660.16723938, -237.98121487, 1957.08768866, 127.49524957,\n", + " 509.85563403, 1800.49637144, 1020.18866431])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593222])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|245\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.88320907, 1397.84959301, 1016.50000991, 199.8409003 ,\n", + " 598.39122984, 486.87892629, 1151.67737373]),\n", + " 'y_turbines': array([1659.59677475, -236.92709056, 1957.1749867 , 129.72394075,\n", + " 511.645701 , 1801.58199267, 1017.46586266])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593271])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|246\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.97111354, 1397.29524411, 1015.225915 , 200.35241761,\n", + " 597.99346719, 486.78055247, 1152.44115381]),\n", + " 'y_turbines': array([1660.09559367, -237.56947139, 1958.50381747, 128.5777347 ,\n", + " 509.45829976, 1800.6955567 , 1020.24744565])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.0359354])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|247\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.94015611, 1398.18602807, 1017.27903019, 201.25956914,\n", + " 598.46514882, 486.04979839, 1153.4191845 ]),\n", + " 'y_turbines': array([1658.61958113, -237.46401924, 1959.66348752, 128.05687037,\n", + " 511.3831829 , 1798.53140643, 1019.74886424])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593708])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|248\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1919.82895543, 1398.73445933, 1015.5077016 , 200.97394882,\n", + " 597.76085459, 487.07614592, 1153.76265916]),\n", + " 'y_turbines': array([1659.05342323, -237.97227557, 1957.78831729, 127.85187923,\n", + " 510.08285982, 1801.33261264, 1019.56057393])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593487])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|249\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1921.98137444, 1397.64513366, 1016.31679062, 202.60019041,\n", + " 598.84110278, 486.80175513, 1151.22664219]),\n", + " 'y_turbines': array([1658.69743889, -237.53010331, 1957.26581097, 125.89675877,\n", + " 510.2212483 , 1801.29792235, 1019.01441005])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593319])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|250\n", + "-----------------------------------------------------------------\n", + "Design Vars\n", + "{'x_turbines': array([1920.25639404, 1397.94855169, 1015.28689396, 199.3951951 ,\n", + " 598.70381218, 486.75165757, 1152.54628297]),\n", + " 'y_turbines': array([1659.45241091, -237.75409466, 1958.22828956, 126.94913127,\n", + " 511.02264863, 1801.08571894, 1019.71840381])}\n", + "\n", + "Objectives\n", + "{'financese.lcoe': array([0.03593191])}\n", + "\n", + "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", + "Number of function values = 250 Least value of F = 0.035932712962746666 Constraint violation = 0.0\n", + "The corresponding X is:\n", + "[ 0.9599416 0.6989248 0.50825 0.09992045 0.29919561 0.24343946\n", + " 0.57583869 0.82979839 -0.11846355 0.97858749 0.06486197 0.25582285\n", + " 0.900791 0.50873293]\n", + "The constraint value is:\n", + "[-1.00994160e+00 -7.48924797e-01 -5.58250005e-01 -1.49920450e-01\n", + " -3.49195615e-01 -2.93439463e-01 -6.25838687e-01 -1.07979839e+00\n", + " -1.31536455e-01 -1.22858749e+00 -3.14861970e-01 -5.05822850e-01\n", + " -1.15079100e+00 -7.58732931e-01 -9.00583955e-02 -3.51075203e-01\n", + " -5.41749995e-01 -9.50079550e-01 -7.50804385e-01 -8.06560537e-01\n", + " -4.74161313e-01 -3.20201613e-01 -1.26846355e+00 -1.71412507e-01\n", + " -1.08513803e+00 -8.94177150e-01 -2.49209004e-01 -6.41267069e-01\n", + " -2.05057853e-01 -1.71860267e-01 -3.51415085e-01 -3.23049414e-01\n", + " -8.91893451e-01 -6.10351563e-08 -1.33161916e+00 -1.05510047e+00\n", + " -4.46590978e-03 -1.15943699e-01 -1.01153422e+00 -5.77129280e-06\n", + " -5.24671960e-01 -7.66920401e-01 -1.41505919e+00 -3.99133007e-01\n", + " -1.74996795e+00 -1.19846643e+00 -8.88021207e-01 -4.49235394e-01\n", + " -1.67499606e+00 -7.00859851e-01 -5.43214545e-01 -1.68079798e+00\n", + " -7.26320164e-01 -1.44962670e+00 -9.52782332e-01 -3.32608307e-06\n", + " -3.97381987e-01 -2.35154839e-06 -1.14431960e+00 -7.49567667e-01\n", + " -7.42747323e-01 -1.97652982e-01 -4.76005390e-01]\n", + "\n", + "Optimization FAILED.\n", + "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", + "-----------------------------------\n", + "\n", + "\n", + "RESULTS (opt):\n", + "\n", + "{'AEP_val': 131.58546409516467,\n", + " 'BOS_val': 18.1388899364447,\n", + " 'CapEx_val': 30.939999999999998,\n", + " 'LCOE_val': 35.93190765975416,\n", + " 'OpEx_val': 1.0472000000000001,\n", + " 'coll_length': 5.253938224233925,\n", + " 'turbine_spacing': 0.5514012002235136}\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "optimize = True # set to False to skip optimization\n", + "if optimize:\n", + " # run the optimization\n", + " prob.run_driver()\n", + " prob.cleanup()\n", + "\n", + " # collapse the test result data\n", + " test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"landbosse.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"coll_length\": float(\n", + " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", + " ),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + " }\n", + "\n", + " # clean up the recorder\n", + " prob.cleanup()\n", + "\n", + " # print the results\n", + " print(\"\\n\\nRESULTS (opt):\\n\")\n", + " pp.pprint(test_data)\n", + " print(\"\\n\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f93a46df", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = plot_layout(\n", + " prob,\n", + " input_dict=input_dict,\n", + " show_image=False,\n", + " include_cable_routing=True,\n", + ")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d5fb8cca", + "metadata": {}, + "source": [ + "The result: a farm that fits in a stop-sign domain and minimzes the LCOE." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "05647c0f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-5.27950257e-01 -1.62553192e-03 -5.95473686e-02 -5.05387198e-01\n", + " 1.06862118e-04 -2.62092421e-01 -3.85234167e-01]\n" + ] + } + ], + "source": [ + "print(prob.get_val(\"exclusions.exclusion_distances\", units=\"km\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e356a5a0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HeterogeneousMap with 2 dimensions using interpolation method \"linear\".\n", + "Speed multipliers are defined for 5 points and 3 wind conditions.\n", + "\n", + " 0 1 2 3 4\n", + "0.0 1.0 1.0 1.0 1.0 1.125\n", + "157.5 1.0 1.0 1.0 1.0 1.125\n", + "270.0 1.0 1.0 1.0 1.0 1.125\n", + "{'interp_method': 'linear',\n", + " 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125],\n", " [1.0, 1.0, 1.0, 1.0, 1.125],\n", " [1.0, 1.0, 1.0, 1.0, 1.125],\n", " [1.0, 1.0, 1.0, 1.0, 1.125],\n", From b217690014eb06285e170772154c855977c08dd8 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Fri, 12 Dec 2025 17:04:05 -0700 Subject: [PATCH 15/17] make structured sampler --- ard/layout/gridfarm.py | 8 +- examples/01_onshore/optimization_demo.ipynb | 656 ++++++++------- examples/x07_exclusion/case_gen.ipynb | 761 ++++++++++++++++++ .../inputs/ard_frankenstein.yaml | 191 +++++ 4 files changed, 1281 insertions(+), 335 deletions(-) create mode 100644 examples/x07_exclusion/case_gen.ipynb create mode 100644 examples/x07_exclusion/inputs/ard_frankenstein.yaml diff --git a/ard/layout/gridfarm.py b/ard/layout/gridfarm.py index e76ac2a2..5b188705 100644 --- a/ard/layout/gridfarm.py +++ b/ard/layout/gridfarm.py @@ -85,12 +85,16 @@ def initialize(self): def setup(self): """Setup of OM component.""" super().setup() + x0 = self.modeling_options["layout"].get("x0", 0.0) + y0 = self.modeling_options["layout"].get("y0", 0.0) spacing_primary = self.modeling_options["layout"]["spacing_primary"] spacing_secondary = self.modeling_options["layout"]["spacing_secondary"] angle_orientation = self.modeling_options["layout"]["angle_orientation"] angle_skew = self.modeling_options["layout"]["angle_skew"] # add four-parameter grid farm layout DVs + self.add_input("x0", x0, units="m") + self.add_input("y0", y0, units="m") self.add_input("spacing_primary", spacing_primary, units="unitless") self.add_input("spacing_secondary", spacing_secondary, units="unitless") self.add_input("angle_orientation", angle_orientation, units="deg") @@ -158,8 +162,8 @@ def compute(self, inputs, outputs): ).squeeze() xyp = Amtx @ (Bmtx @ np.vstack([xi_positions, yi_positions])) - outputs["x_turbines"] = xyp[0, :].tolist() - outputs["y_turbines"] = xyp[1, :].tolist() + outputs["x_turbines"] = (xyp[0, :] + inputs["x0"]).tolist() + outputs["y_turbines"] = (xyp[1, :] + inputs["y0"]).tolist() outputs["spacing_effective_primary"] = inputs["spacing_primary"] outputs["spacing_effective_secondary"] = np.sqrt( diff --git a/examples/01_onshore/optimization_demo.ipynb b/examples/01_onshore/optimization_demo.ipynb index 7bb30089..a4c632a1 100644 --- a/examples/01_onshore/optimization_demo.ipynb +++ b/examples/01_onshore/optimization_demo.ipynb @@ -17,16 +17,7 @@ "execution_count": 1, "id": "d75b4457", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "RuntimeWarning: :488\n", - "numpy.ndarray size changed, may indicate binary incompatibility. Expected 16 from C header, got 96 from PyObject" - ] - } - ], + "outputs": [], "source": [ "from pathlib import Path # optional, for nice path specifications\n", "\n", @@ -139,10 +130,10 @@ "\n", "RESULTS:\n", "\n", - "{'AEP_val': 405.9510682648514,\n", + "{'AEP_val': 406.5372933434125,\n", " 'BOS_val': 41.68227106807093,\n", " 'CapEx_val': 110.5,\n", - " 'LCOE_val': 37.328810082644566,\n", + " 'LCOE_val': 37.274982094458494,\n", " 'OpEx_val': 3.7400000000000007,\n", " 'area_tight': 13.2496,\n", " 'coll_length': 21.89865877023397,\n", @@ -212,7 +203,7 @@ " 'spacing_secondary': array([7.])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03732881])}\n", + "{'financese.lcoe': array([0.03727498])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|1\n", "---------------------------------------------------------------\n", @@ -223,7 +214,7 @@ " 'spacing_secondary': array([7.])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03732881])}\n", + "{'financese.lcoe': array([0.03727498])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|2\n", "---------------------------------------------------------------\n", @@ -234,7 +225,7 @@ " 'spacing_secondary': array([7.])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03630168])}\n", + "{'financese.lcoe': array([0.03624933])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|3\n", "---------------------------------------------------------------\n", @@ -245,7 +236,7 @@ " 'spacing_secondary': array([9.])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.0362278])}\n", + "{'financese.lcoe': array([0.03617556])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|4\n", "---------------------------------------------------------------\n", @@ -256,7 +247,7 @@ " 'spacing_secondary': array([9.])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03589575])}\n", + "{'financese.lcoe': array([0.03584399])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|5\n", "---------------------------------------------------------------\n", @@ -267,7 +258,7 @@ " 'spacing_secondary': array([9.])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03576782])}\n", + "{'financese.lcoe': array([0.03571624])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|6\n", "---------------------------------------------------------------\n", @@ -278,581 +269,581 @@ " 'spacing_secondary': array([7.42956615])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03536145])}\n", + "{'financese.lcoe': array([0.03531047])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|7\n", "---------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([6.22501024]),\n", - " 'angle_skew': array([1.28476133]),\n", - " 'spacing_primary': array([11.09632739]),\n", - " 'spacing_secondary': array([6.10823591])}\n", + "{'angle_orientation': array([6.2249954]),\n", + " 'angle_skew': array([1.28482356]),\n", + " 'spacing_primary': array([11.09632306]),\n", + " 'spacing_secondary': array([6.10825176])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03371055])}\n", + "{'financese.lcoe': array([0.03366194])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|8\n", "---------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([12.81880541]),\n", - " 'angle_skew': array([5.39824365]),\n", - " 'spacing_primary': array([10.77915004]),\n", - " 'spacing_secondary': array([4.2372664])}\n", + "{'angle_orientation': array([12.81867001]),\n", + " 'angle_skew': array([5.39849156]),\n", + " 'spacing_primary': array([10.77914451]),\n", + " 'spacing_secondary': array([4.23726581])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03370005])}\n", + "{'financese.lcoe': array([0.03365148])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|9\n", "---------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.16585792]),\n", - " 'angle_skew': array([2.65542594]),\n", - " 'spacing_primary': array([10.5497108]),\n", - " 'spacing_secondary': array([5.94479478])}\n", + "{'angle_orientation': array([15.16579535]),\n", + " 'angle_skew': array([2.65570238]),\n", + " 'spacing_primary': array([10.54973372]),\n", + " 'spacing_secondary': array([5.94474374])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.0340762])}\n", + "{'financese.lcoe': array([0.03402733])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|10\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([12.83465457]),\n", - " 'angle_skew': array([5.67692701]),\n", - " 'spacing_primary': array([11.57777783]),\n", - " 'spacing_secondary': array([4.77044372])}\n", + "{'angle_orientation': array([12.8345144]),\n", + " 'angle_skew': array([5.67717329]),\n", + " 'spacing_primary': array([11.57777225]),\n", + " 'spacing_secondary': array([4.77044418])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03359523])}\n", + "{'financese.lcoe': array([0.03354686])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|11\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([12.6429642]),\n", - " 'angle_skew': array([3.438868]),\n", - " 'spacing_primary': array([11.13960364]),\n", - " 'spacing_secondary': array([4.23688239])}\n", + "{'angle_orientation': array([14.06069203]),\n", + " 'angle_skew': array([5.12173355]),\n", + " 'spacing_primary': array([10.41709128]),\n", + " 'spacing_secondary': array([4.22986599])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03371343])}\n", + "{'financese.lcoe': array([0.03363844])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|12\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([12.24139357]),\n", - " 'angle_skew': array([5.36934463]),\n", - " 'spacing_primary': array([10.34111174]),\n", - " 'spacing_secondary': array([4.92565789])}\n", + "{'angle_orientation': array([14.13995264]),\n", + " 'angle_skew': array([4.71319936]),\n", + " 'spacing_primary': array([11.01527995]),\n", + " 'spacing_secondary': array([3.54503909])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03416171])}\n", + "{'financese.lcoe': array([0.03458857])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|13\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([13.8356353]),\n", - " 'angle_skew': array([3.68880649]),\n", - " 'spacing_primary': array([10.56967736]),\n", - " 'spacing_secondary': array([4.23893248])}\n", + "{'angle_orientation': array([14.05906201]),\n", + " 'angle_skew': array([6.28573007]),\n", + " 'spacing_primary': array([9.42149182]),\n", + " 'spacing_secondary': array([5.51590298])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.0335507])}\n", + "{'financese.lcoe': array([0.03410492])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|14\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.70991104]),\n", - " 'angle_skew': array([7.5788889]),\n", - " 'spacing_primary': array([10.24996505]),\n", - " 'spacing_secondary': array([4.21276325])}\n", + "{'angle_orientation': array([14.06734214]),\n", + " 'angle_skew': array([5.12348552]),\n", + " 'spacing_primary': array([10.45650427]),\n", + " 'spacing_secondary': array([4.22920401])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03415205])}\n", + "{'financese.lcoe': array([0.03363728])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|15\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.06208503]),\n", - " 'angle_skew': array([2.11077728]),\n", - " 'spacing_primary': array([10.6442655]),\n", - " 'spacing_secondary': array([4.24795969])}\n", + "{'angle_orientation': array([14.25674804]),\n", + " 'angle_skew': array([5.05925836]),\n", + " 'spacing_primary': array([10.45623439]),\n", + " 'spacing_secondary': array([4.22965665])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.0335116])}\n", + "{'financese.lcoe': array([0.03365051])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|16\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.21946912]),\n", - " 'angle_skew': array([0.12236624]),\n", - " 'spacing_primary': array([10.79053035]),\n", - " 'spacing_secondary': array([4.25559863])}\n", + "{'angle_orientation': array([14.09076211]),\n", + " 'angle_skew': array([5.19210329]),\n", + " 'spacing_primary': array([10.44835385]),\n", + " 'spacing_secondary': array([4.16081777])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342836])}\n", + "{'financese.lcoe': array([0.03366734])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|17\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.53910097]),\n", - " 'angle_skew': array([-1.8468806]),\n", - " 'spacing_primary': array([10.93147621]),\n", - " 'spacing_secondary': array([4.24954482])}\n", + "{'angle_orientation': array([13.9731555]),\n", + " 'angle_skew': array([4.9478475]),\n", + " 'spacing_primary': array([10.47318285]),\n", + " 'spacing_secondary': array([4.23061394])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03345727])}\n", + "{'financese.lcoe': array([0.03361022])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|18\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.17781019]),\n", - " 'angle_skew': array([0.04441727]),\n", - " 'spacing_primary': array([9.79479339]),\n", - " 'spacing_secondary': array([4.2292092])}\n", + "{'angle_orientation': array([13.90496297]),\n", + " 'angle_skew': array([4.88172646]),\n", + " 'spacing_primary': array([10.42062958]),\n", + " 'spacing_secondary': array([4.39858995])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03367221])}\n", + "{'financese.lcoe': array([0.03363528])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|19\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([17.16723409]),\n", - " 'angle_skew': array([0.56670928]),\n", - " 'spacing_primary': array([10.69987251]),\n", - " 'spacing_secondary': array([4.27909373])}\n", + "{'angle_orientation': array([13.90080602]),\n", + " 'angle_skew': array([4.8790065]),\n", + " 'spacing_primary': array([10.47832507]),\n", + " 'spacing_secondary': array([4.23077813])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03388145])}\n", + "{'financese.lcoe': array([0.0335983])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|20\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.22395236]),\n", - " 'angle_skew': array([0.03304793]),\n", - " 'spacing_primary': array([10.82025668]),\n", - " 'spacing_secondary': array([4.24638046])}\n", + "{'angle_orientation': array([13.7163965]),\n", + " 'angle_skew': array([4.80229897]),\n", + " 'spacing_primary': array([10.4887581]),\n", + " 'spacing_secondary': array([4.23126246])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.0334782])}\n", + "{'financese.lcoe': array([0.03358231])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|21\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.22182979]),\n", - " 'angle_skew': array([0.12397559]),\n", - " 'spacing_primary': array([10.7969286]),\n", - " 'spacing_secondary': array([4.00569685])}\n", + "{'angle_orientation': array([13.71595893]),\n", + " 'angle_skew': array([4.8020453]),\n", + " 'spacing_primary': array([10.47930893]),\n", + " 'spacing_secondary': array([4.22802869])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03371083])}\n", + "{'financese.lcoe': array([0.03358327])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|22\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.23434311]),\n", - " 'angle_skew': array([0.120942]),\n", - " 'spacing_primary': array([10.65853269]),\n", - " 'spacing_secondary': array([4.73762908])}\n", + "{'angle_orientation': array([13.72023935]),\n", + " 'angle_skew': array([4.79306721]),\n", + " 'spacing_primary': array([10.48880396]),\n", + " 'spacing_secondary': array([4.23133267])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03372802])}\n", + "{'financese.lcoe': array([0.03358165])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|23\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.21035348]),\n", - " 'angle_skew': array([0.22166755]),\n", - " 'spacing_primary': array([10.78317629]),\n", - " 'spacing_secondary': array([4.2541595])}\n", + "{'angle_orientation': array([13.7203938]),\n", + " 'angle_skew': array([4.79307559]),\n", + " 'spacing_primary': array([10.49203488]),\n", + " 'spacing_secondary': array([4.22187026])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03343025])}\n", + "{'financese.lcoe': array([0.03358269])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|24\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.40671439]),\n", - " 'angle_skew': array([0.05281825]),\n", - " 'spacing_primary': array([10.79416768]),\n", - " 'spacing_secondary': array([4.24616164])}\n", + "{'angle_orientation': array([13.71380913]),\n", + " 'angle_skew': array([4.78035069]),\n", + " 'spacing_primary': array([10.48610853]),\n", + " 'spacing_secondary': array([4.245105])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03344789])}\n", + "{'financese.lcoe': array([0.03357842])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|25\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.21714695]),\n", - " 'angle_skew': array([0.11465166]),\n", - " 'spacing_primary': array([10.69438227]),\n", - " 'spacing_secondary': array([4.22931861])}\n", + "{'angle_orientation': array([13.69777685]),\n", + " 'angle_skew': array([4.75473775]),\n", + " 'spacing_primary': array([10.48011045]),\n", + " 'spacing_secondary': array([4.27061904])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03343125])}\n", + "{'financese.lcoe': array([0.03357623])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|26\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.02666262]),\n", - " 'angle_skew': array([0.07126481]),\n", - " 'spacing_primary': array([10.80172336]),\n", - " 'spacing_secondary': array([4.24616385])}\n", + "{'angle_orientation': array([13.73063005]),\n", + " 'angle_skew': array([4.7487034]),\n", + " 'spacing_primary': array([10.47275106]),\n", + " 'spacing_secondary': array([4.29135773])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342604])}\n", + "{'financese.lcoe': array([0.03357785])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|27\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.09792225]),\n", - " 'angle_skew': array([0.0767797]),\n", - " 'spacing_primary': array([10.79977814]),\n", - " 'spacing_secondary': array([4.24615115])}\n", + "{'angle_orientation': array([13.68202514]),\n", + " 'angle_skew': array([4.74561956]),\n", + " 'spacing_primary': array([10.47859155]),\n", + " 'spacing_secondary': array([4.27876983])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342782])}\n", + "{'financese.lcoe': array([0.03357592])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|28\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.02655602]),\n", - " 'angle_skew': array([0.07885828]),\n", - " 'spacing_primary': array([10.8199866]),\n", - " 'spacing_secondary': array([4.14813946])}\n", + "{'angle_orientation': array([13.68461032]),\n", + " 'angle_skew': array([4.72946958]),\n", + " 'spacing_primary': array([10.4831355]),\n", + " 'spacing_secondary': array([4.26819404])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03351115])}\n", + "{'financese.lcoe': array([0.03357384])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|29\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([15.02060397]),\n", - " 'angle_skew': array([0.05568614]),\n", - " 'spacing_primary': array([10.75111355]),\n", - " 'spacing_secondary': array([4.43893119])}\n", + "{'angle_orientation': array([13.68237896]),\n", + " 'angle_skew': array([4.71506942]),\n", + " 'spacing_primary': array([10.48846385]),\n", + " 'spacing_secondary': array([4.25557401])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342975])}\n", + "{'financese.lcoe': array([0.0335716])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|30\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.92797156]),\n", - " 'angle_skew': array([0.08734545]),\n", - " 'spacing_primary': array([10.80294266]),\n", - " 'spacing_secondary': array([4.24614656])}\n", + "{'angle_orientation': array([13.67778694]),\n", + " 'angle_skew': array([4.68473807]),\n", + " 'spacing_primary': array([10.49855396]),\n", + " 'spacing_secondary': array([4.23197078])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342526])}\n", + "{'financese.lcoe': array([0.03357104])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|31\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.86981881]),\n", - " 'angle_skew': array([0.00632905]),\n", - " 'spacing_primary': array([10.81033196]),\n", - " 'spacing_secondary': array([4.24616379])}\n", + "{'angle_orientation': array([13.66787709]),\n", + " 'angle_skew': array([4.67538831]),\n", + " 'spacing_primary': array([10.46094591]),\n", + " 'spacing_secondary': array([4.23207544])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342577])}\n", + "{'financese.lcoe': array([0.03357297])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|32\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.92738582]),\n", - " 'angle_skew': array([0.08556891]),\n", - " 'spacing_primary': array([10.77887019]),\n", - " 'spacing_secondary': array([4.23966451])}\n", + "{'angle_orientation': array([13.67618262]),\n", + " 'angle_skew': array([4.67931398]),\n", + " 'spacing_primary': array([10.5003476]),\n", + " 'spacing_secondary': array([4.2400199])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342597])}\n", + "{'financese.lcoe': array([0.03356904])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|33\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.90283527]),\n", - " 'angle_skew': array([0.13049087]),\n", - " 'spacing_primary': array([10.80036587]),\n", - " 'spacing_secondary': array([4.24614595])}\n", + "{'angle_orientation': array([13.66831202]),\n", + " 'angle_skew': array([4.68726302]),\n", + " 'spacing_primary': array([10.50042123]),\n", + " 'spacing_secondary': array([4.23136768])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03342536])}\n", + "{'financese.lcoe': array([0.03357112])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|34\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.92803267]),\n", - " 'angle_skew': array([0.08753531]),\n", - " 'spacing_primary': array([10.80552779]),\n", - " 'spacing_secondary': array([4.23648855])}\n", + "{'angle_orientation': array([13.67790999]),\n", + " 'angle_skew': array([4.68550449]),\n", + " 'spacing_primary': array([10.49833264]),\n", + " 'spacing_secondary': array([4.2325611])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03343041])}\n", + "{'financese.lcoe': array([0.03357096])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|35\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.92810045]),\n", - " 'angle_skew': array([0.08702987]),\n", - " 'spacing_primary': array([10.79781286]),\n", - " 'spacing_secondary': array([4.26547449])}\n", + "{'angle_orientation': array([13.67785364]),\n", + " 'angle_skew': array([4.68505868]),\n", + " 'spacing_primary': array([10.49771257]),\n", + " 'spacing_secondary': array([4.23440869])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.0334167])}\n", + "{'financese.lcoe': array([0.03357061])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|36\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.92845818]),\n", - " 'angle_skew': array([0.08641889]),\n", - " 'spacing_primary': array([10.78749079]),\n", - " 'spacing_secondary': array([4.30411325])}\n", + "{'angle_orientation': array([13.67793918]),\n", + " 'angle_skew': array([4.68426311]),\n", + " 'spacing_primary': array([10.49655202]),\n", + " 'spacing_secondary': array([4.23815206])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340622])}\n", + "{'financese.lcoe': array([0.03356994])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|37\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.94217233]),\n", - " 'angle_skew': array([0.0824659]),\n", - " 'spacing_primary': array([10.77778138]),\n", - " 'spacing_secondary': array([4.34019681])}\n", + "{'angle_orientation': array([13.6786557]),\n", + " 'angle_skew': array([4.68354482]),\n", + " 'spacing_primary': array([10.4941268]),\n", + " 'spacing_secondary': array([4.24570779])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340422])}\n", + "{'financese.lcoe': array([0.03356983])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|38\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.91356443]),\n", - " 'angle_skew': array([0.10531276]),\n", - " 'spacing_primary': array([10.77270093]),\n", - " 'spacing_secondary': array([4.35548728])}\n", + "{'angle_orientation': array([13.67771374]),\n", + " 'angle_skew': array([4.68100995]),\n", + " 'spacing_primary': array([10.49135862]),\n", + " 'spacing_secondary': array([4.24469571])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340665])}\n", + "{'financese.lcoe': array([0.03356977])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|39\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.9477178]),\n", - " 'angle_skew': array([0.09035203]),\n", - " 'spacing_primary': array([10.78038152]),\n", - " 'spacing_secondary': array([4.33965274])}\n", + "{'angle_orientation': array([13.67869541]),\n", + " 'angle_skew': array([4.67945733]),\n", + " 'spacing_primary': array([10.49213494]),\n", + " 'spacing_secondary': array([4.24484747])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340391])}\n", + "{'financese.lcoe': array([0.03356946])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|40\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.93818479]),\n", - " 'angle_skew': array([0.06351475]),\n", - " 'spacing_primary': array([10.77796562]),\n", - " 'spacing_secondary': array([4.34518874])}\n", + "{'angle_orientation': array([13.67969515]),\n", + " 'angle_skew': array([4.67611596]),\n", + " 'spacing_primary': array([10.49401504]),\n", + " 'spacing_secondary': array([4.24539613])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340462])}\n", + "{'financese.lcoe': array([0.03356848])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|41\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95705748]),\n", - " 'angle_skew': array([0.08226704]),\n", - " 'spacing_primary': array([10.76444516]),\n", - " 'spacing_secondary': array([4.33946325])}\n", + "{'angle_orientation': array([13.68607364]),\n", + " 'angle_skew': array([4.67140637]),\n", + " 'spacing_primary': array([10.49503139]),\n", + " 'spacing_secondary': array([4.24507744])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340513])}\n", + "{'financese.lcoe': array([0.03356819])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|42\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95200085]),\n", - " 'angle_skew': array([0.08291186]),\n", - " 'spacing_primary': array([10.77704376]),\n", - " 'spacing_secondary': array([4.34182695])}\n", + "{'angle_orientation': array([13.68279844]),\n", + " 'angle_skew': array([4.66437621]),\n", + " 'spacing_primary': array([10.49312488]),\n", + " 'spacing_secondary': array([4.24461354])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340416])}\n", + "{'financese.lcoe': array([0.03356762])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|43\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95152501]),\n", - " 'angle_skew': array([0.08554555]),\n", - " 'spacing_primary': array([10.77577613]),\n", - " 'spacing_secondary': array([4.34585564])}\n", + "{'angle_orientation': array([13.68151852]),\n", + " 'angle_skew': array([4.65942861]),\n", + " 'spacing_primary': array([10.49423132]),\n", + " 'spacing_secondary': array([4.25066819])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340455])}\n", + "{'financese.lcoe': array([0.03356681])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|44\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95205494]),\n", - " 'angle_skew': array([0.08375887]),\n", - " 'spacing_primary': array([10.77712029]),\n", - " 'spacing_secondary': array([4.3413037])}\n", + "{'angle_orientation': array([13.68063247]),\n", + " 'angle_skew': array([4.65313933]),\n", + " 'spacing_primary': array([10.49318479]),\n", + " 'spacing_secondary': array([4.25541842])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340407])}\n", + "{'financese.lcoe': array([0.03356564])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|45\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95245597]),\n", - " 'angle_skew': array([0.08436608]),\n", - " 'spacing_primary': array([10.77754822]),\n", - " 'spacing_secondary': array([4.33949059])}\n", + "{'angle_orientation': array([13.68340248]),\n", + " 'angle_skew': array([4.64975998]),\n", + " 'spacing_primary': array([10.48035301]),\n", + " 'spacing_secondary': array([4.26391856])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340402])}\n", + "{'financese.lcoe': array([0.03356829])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|46\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95242605]),\n", - " 'angle_skew': array([0.08635071]),\n", - " 'spacing_primary': array([10.77735636]),\n", - " 'spacing_secondary': array([4.339644])}\n", + "{'angle_orientation': array([13.67644609]),\n", + " 'angle_skew': array([4.6465506]),\n", + " 'spacing_primary': array([10.49424633]),\n", + " 'spacing_secondary': array([4.25402704])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340403])}\n", + "{'financese.lcoe': array([0.03356515])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|47\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.9524819]),\n", - " 'angle_skew': array([0.08443966]),\n", - " 'spacing_primary': array([10.77851129]),\n", - " 'spacing_secondary': array([4.33974827])}\n", + "{'angle_orientation': array([13.68003839]),\n", + " 'angle_skew': array([4.63941709]),\n", + " 'spacing_primary': array([10.4945764]),\n", + " 'spacing_secondary': array([4.25434244])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340394])}\n", + "{'financese.lcoe': array([0.03356464])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|48\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.9536984]),\n", - " 'angle_skew': array([0.08417389]),\n", - " 'spacing_primary': array([10.77793669]),\n", - " 'spacing_secondary': array([4.33798443])}\n", + "{'angle_orientation': array([13.67914659]),\n", + " 'angle_skew': array([4.63196963]),\n", + " 'spacing_primary': array([10.49426086]),\n", + " 'spacing_secondary': array([4.25710659])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340397])}\n", + "{'financese.lcoe': array([0.03356389])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|49\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95421381]),\n", - " 'angle_skew': array([0.08376363]),\n", - " 'spacing_primary': array([10.77897705]),\n", - " 'spacing_secondary': array([4.33417869])}\n", + "{'angle_orientation': array([13.67651851]),\n", + " 'angle_skew': array([4.61920423]),\n", + " 'spacing_primary': array([10.49234585]),\n", + " 'spacing_secondary': array([4.26618791])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340392])}\n", + "{'financese.lcoe': array([0.0335648])}\n", "\n", "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|50\n", "----------------------------------------------------------------\n", "Design Vars\n", - "{'angle_orientation': array([14.95773338]),\n", - " 'angle_skew': array([0.08312907]),\n", - " 'spacing_primary': array([10.7794027]),\n", - " 'spacing_secondary': array([4.33243834])}\n", + "{'angle_orientation': array([13.67643722]),\n", + " 'angle_skew': array([4.62963738]),\n", + " 'spacing_primary': array([10.48993342]),\n", + " 'spacing_secondary': array([4.25140631])}\n", "\n", "Objectives\n", - "{'financese.lcoe': array([0.03340391])}\n", + "{'financese.lcoe': array([0.03356462])}\n", "\n", "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", - "Number of function values = 50 Least value of F = 0.033403907974277725 Constraint violation = 2e-15\n", + "Number of function values = 50 Least value of F = 0.033563887643952524 Constraint violation = 0.0\n", "The corresponding X is:\n", - "[10.7794027 4.33243834 14.95773338 0.08312907]\n", + "[10.49426086 4.25710659 13.67914659 4.63196963]\n", "The constraint value is:\n", - "[-7.77940270e+00 -1.33243834e+00 -1.94957733e+02 -4.50831291e+01\n", - " -9.22059730e+00 -1.56675617e+01 -1.65042267e+02 -4.49168709e+01\n", - " -3.86663113e-01 -2.81279050e+00 -3.82431079e+00 -2.70768115e+00\n", - " 2.00000000e-15 -8.76956055e-01 -3.37531216e+00 -4.91215540e+00\n", - " -3.00000000e+00 -2.92318848e-01 -5.84637695e-01 -3.29231885e+00\n", - " -5.99999604e+00 -3.29231885e+00 -5.84637695e-01 -2.92318848e-01\n", - " -3.00000000e+00 -4.91215540e+00 -3.37531216e+00 -8.76956055e-01\n", - " -2.00000000e-15 -2.70768115e+00 -3.82431079e+00 -2.81279050e+00\n", - " -3.86663113e-01 -8.49322351e-01 -2.25064470e+00 -3.65196705e+00\n", - " -5.05328940e+00 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", - " -3.68871720e+00 -5.08070117e+00 -5.74435155e-01 -1.24465803e+00\n", - " -2.46702512e+00 -3.79868430e+00 -5.16375050e+00 -1.13765273e+00\n", - " -1.64157245e+00 -2.71847435e+00 -3.97653768e+00 -5.30006914e+00\n", - " -1.70087031e+00 -2.09940871e+00 -3.04131606e+00 -4.21468450e+00\n", - " -5.48605024e+00 -8.49322351e-01 -2.25064470e+00 -3.65196705e+00\n", - " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", - " -3.68871720e+00 -1.24720563e+00 -5.74435155e-01 -1.24465803e+00\n", - " -2.46702512e+00 -3.79868430e+00 -1.64470237e+00 -1.13765273e+00\n", - " -1.64157245e+00 -2.71847435e+00 -3.97653768e+00 -2.10286154e+00\n", - " -1.70087031e+00 -2.09940871e+00 -3.04131606e+00 -4.21468450e+00\n", - " -8.49322351e-01 -2.25064470e+00 -2.30747754e+00 -9.59028979e-01\n", - " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -2.47005796e+00\n", - " -1.24720563e+00 -5.74435155e-01 -1.24465803e+00 -2.46702512e+00\n", - " -2.72267325e+00 -1.64470237e+00 -1.13765273e+00 -1.64157245e+00\n", - " -2.71847435e+00 -3.04641126e+00 -2.10286154e+00 -1.70087031e+00\n", - " -2.09940871e+00 -3.04131606e+00 -8.49322351e-01 -3.69033705e+00\n", - " -2.30747754e+00 -9.59028979e-01 -1.12175776e-02 -9.57512559e-01\n", - " -3.80184156e+00 -2.47005796e+00 -1.24720563e+00 -5.74435155e-01\n", - " -1.24465803e+00 -3.98108694e+00 -2.72267325e+00 -1.64470237e+00\n", - " -1.13765273e+00 -1.64157245e+00 -4.22044655e+00 -3.04641126e+00\n", - " -2.10286154e+00 -1.70087031e+00 -2.09940871e+00 -5.08232730e+00\n", - " -3.69033705e+00 -2.30747754e+00 -9.59028979e-01 -1.12175776e-02\n", - " -5.16695507e+00 -3.80184156e+00 -2.47005796e+00 -1.24720563e+00\n", - " -5.74435155e-01 -5.30476345e+00 -3.98108694e+00 -2.72267325e+00\n", - " -1.64470237e+00 -1.13765273e+00 -5.49211592e+00 -4.22044655e+00\n", - " -3.04641126e+00 -2.10286154e+00 -1.70087031e+00 -8.49322351e-01\n", - " -2.25064470e+00 -3.65196705e+00 -5.05328940e+00 -1.12175776e-02\n", - " -9.57512559e-01 -2.30587525e+00 -3.68871720e+00 -5.08070117e+00\n", - " -5.74435155e-01 -1.24465803e+00 -2.46702512e+00 -3.79868430e+00\n", - " -5.16375050e+00 -1.13765273e+00 -1.64157245e+00 -2.71847435e+00\n", - " -3.97653768e+00 -5.30006914e+00 -8.49322351e-01 -2.25064470e+00\n", - " -3.65196705e+00 -9.59028979e-01 -1.12175776e-02 -9.57512559e-01\n", - " -2.30587525e+00 -3.68871720e+00 -1.24720563e+00 -5.74435155e-01\n", - " -1.24465803e+00 -2.46702512e+00 -3.79868430e+00 -1.64470237e+00\n", - " -1.13765273e+00 -1.64157245e+00 -2.71847435e+00 -3.97653768e+00\n", - " -8.49322351e-01 -2.25064470e+00 -2.30747754e+00 -9.59028979e-01\n", - " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -2.47005796e+00\n", - " -1.24720563e+00 -5.74435155e-01 -1.24465803e+00 -2.46702512e+00\n", - " -2.72267325e+00 -1.64470237e+00 -1.13765273e+00 -1.64157245e+00\n", - " -2.71847435e+00 -8.49322351e-01 -3.69033705e+00 -2.30747754e+00\n", - " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -3.80184156e+00\n", - " -2.47005796e+00 -1.24720563e+00 -5.74435155e-01 -1.24465803e+00\n", - " -3.98108694e+00 -2.72267325e+00 -1.64470237e+00 -1.13765273e+00\n", - " -1.64157245e+00 -5.08232730e+00 -3.69033705e+00 -2.30747754e+00\n", - " -9.59028979e-01 -1.12175776e-02 -5.16695507e+00 -3.80184156e+00\n", - " -2.47005796e+00 -1.24720563e+00 -5.74435155e-01 -5.30476345e+00\n", - " -3.98108694e+00 -2.72267325e+00 -1.64470237e+00 -1.13765273e+00\n", - " -8.49322351e-01 -2.25064470e+00 -3.65196705e+00 -5.05328940e+00\n", - " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -3.68871720e+00\n", - " -5.08070117e+00 -5.74435155e-01 -1.24465803e+00 -2.46702512e+00\n", - " -3.79868430e+00 -5.16375050e+00 -8.49322351e-01 -2.25064470e+00\n", - " -3.65196705e+00 -9.59028979e-01 -1.12175776e-02 -9.57512559e-01\n", - " -2.30587525e+00 -3.68871720e+00 -1.24720563e+00 -5.74435155e-01\n", - " -1.24465803e+00 -2.46702512e+00 -3.79868430e+00 -8.49322351e-01\n", - " -2.25064470e+00 -2.30747754e+00 -9.59028979e-01 -1.12175776e-02\n", - " -9.57512559e-01 -2.30587525e+00 -2.47005796e+00 -1.24720563e+00\n", - " -5.74435155e-01 -1.24465803e+00 -2.46702512e+00 -8.49322351e-01\n", - " -3.69033705e+00 -2.30747754e+00 -9.59028979e-01 -1.12175776e-02\n", - " -9.57512559e-01 -3.80184156e+00 -2.47005796e+00 -1.24720563e+00\n", - " -5.74435155e-01 -1.24465803e+00 -5.08232730e+00 -3.69033705e+00\n", - " -2.30747754e+00 -9.59028979e-01 -1.12175776e-02 -5.16695507e+00\n", - " -3.80184156e+00 -2.47005796e+00 -1.24720563e+00 -5.74435155e-01\n", - " -8.49322351e-01 -2.25064470e+00 -3.65196705e+00 -5.05328940e+00\n", - " -1.12175776e-02 -9.57512559e-01 -2.30587525e+00 -3.68871720e+00\n", - " -5.08070117e+00 -8.49322351e-01 -2.25064470e+00 -3.65196705e+00\n", - " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", - " -3.68871720e+00 -8.49322351e-01 -2.25064470e+00 -2.30747754e+00\n", - " -9.59028979e-01 -1.12175776e-02 -9.57512559e-01 -2.30587525e+00\n", - " -8.49322351e-01 -3.69033705e+00 -2.30747754e+00 -9.59028979e-01\n", - " -1.12175776e-02 -9.57512559e-01 -5.08232730e+00 -3.69033705e+00\n", - " -2.30747754e+00 -9.59028979e-01 -1.12175776e-02 -8.49322351e-01\n", - " -2.25064470e+00 -3.65196705e+00 -5.05328940e+00 -8.49322351e-01\n", - " -2.25064470e+00 -3.65196705e+00 -8.49322351e-01 -2.25064470e+00\n", - " -8.49322351e-01]\n", + "[-7.49426086e+00 -1.25710659e+00 -1.93679147e+02 -4.96319696e+01\n", + " -9.50573914e+00 -1.57428934e+01 -1.66320853e+02 -4.03680304e+01\n", + " -7.04668506e-01 -3.03554985e+00 -3.89150977e+00 -2.65111523e+00\n", + " -9.76562500e-07 -1.04665625e+00 -3.53431468e+00 -4.94575488e+00\n", + " -3.00000049e+00 -3.48886230e-01 -6.97770996e-01 -3.34888550e+00\n", + " -5.99999604e+00 -3.34888550e+00 -6.97770996e-01 -3.48886230e-01\n", + " -3.00000049e+00 -4.94575488e+00 -3.53431468e+00 -1.04665625e+00\n", + " -9.76562500e-07 -2.65111523e+00 -3.89150977e+00 -3.03554985e+00\n", + " -7.04668506e-01 -8.12253911e-01 -2.17650782e+00 -3.54076173e+00\n", + " -4.90501565e+00 -3.23727596e-03 -8.78781496e-01 -2.18813876e+00\n", + " -3.53357984e+00 -4.88839909e+00 -5.58474552e-01 -1.13609345e+00\n", + " -2.30956299e+00 -3.60128827e+00 -4.92827752e+00 -1.11371183e+00\n", + " -1.51409782e+00 -2.52782174e+00 -3.74034449e+00 -5.02343881e+00\n", + " -1.66894910e+00 -1.95886394e+00 -2.82418691e+00 -3.94413343e+00\n", + " -5.17112598e+00 -8.12253911e-01 -2.17650782e+00 -3.54076173e+00\n", + " -9.61875373e-01 -3.23727596e-03 -8.78781496e-01 -2.18813876e+00\n", + " -3.53357984e+00 -1.27530004e+00 -5.58474552e-01 -1.13609345e+00\n", + " -2.30956299e+00 -3.60128827e+00 -1.68469601e+00 -1.11371183e+00\n", + " -1.51409782e+00 -2.52782174e+00 -3.74034449e+00 -2.14673481e+00\n", + " -1.66894910e+00 -1.95886394e+00 -2.82418691e+00 -3.94413343e+00\n", + " -8.12253911e-01 -2.17650782e+00 -2.27602516e+00 -9.61875373e-01\n", + " -3.23727596e-03 -8.78781496e-01 -2.18813876e+00 -2.47575075e+00\n", + " -1.27530004e+00 -5.58474552e-01 -1.13609345e+00 -2.30956299e+00\n", + " -2.75759207e+00 -1.68469601e+00 -1.11371183e+00 -1.51409782e+00\n", + " -2.52782174e+00 -3.10260007e+00 -2.14673481e+00 -1.66894910e+00\n", + " -1.95886394e+00 -2.82418691e+00 -8.12253911e-01 -3.62244745e+00\n", + " -2.27602516e+00 -9.61875373e-01 -3.23727596e-03 -8.78781496e-01\n", + " -3.77441898e+00 -2.47575075e+00 -1.27530004e+00 -5.58474552e-01\n", + " -1.13609345e+00 -3.98962612e+00 -2.75759207e+00 -1.68469601e+00\n", + " -1.11371183e+00 -1.51409782e+00 -4.25959134e+00 -3.10260007e+00\n", + " -2.14673481e+00 -1.66894910e+00 -1.95886394e+00 -4.97761790e+00\n", + " -3.62244745e+00 -2.27602516e+00 -9.61875373e-01 -3.23727596e-03\n", + " -5.10405033e+00 -3.77441898e+00 -2.47575075e+00 -1.27530004e+00\n", + " -5.58474552e-01 -5.28081350e+00 -3.98962612e+00 -2.75759207e+00\n", + " -1.68469601e+00 -1.11371183e+00 -5.50350149e+00 -4.25959134e+00\n", + " -3.10260007e+00 -2.14673481e+00 -1.66894910e+00 -8.12253911e-01\n", + " -2.17650782e+00 -3.54076173e+00 -4.90501565e+00 -3.23727596e-03\n", + " -8.78781496e-01 -2.18813876e+00 -3.53357984e+00 -4.88839909e+00\n", + " -5.58474552e-01 -1.13609345e+00 -2.30956299e+00 -3.60128827e+00\n", + " -4.92827752e+00 -1.11371183e+00 -1.51409782e+00 -2.52782174e+00\n", + " -3.74034449e+00 -5.02343881e+00 -8.12253911e-01 -2.17650782e+00\n", + " -3.54076173e+00 -9.61875373e-01 -3.23727596e-03 -8.78781496e-01\n", + " -2.18813876e+00 -3.53357984e+00 -1.27530004e+00 -5.58474552e-01\n", + " -1.13609345e+00 -2.30956299e+00 -3.60128827e+00 -1.68469601e+00\n", + " -1.11371183e+00 -1.51409782e+00 -2.52782174e+00 -3.74034449e+00\n", + " -8.12253911e-01 -2.17650782e+00 -2.27602516e+00 -9.61875373e-01\n", + " -3.23727596e-03 -8.78781496e-01 -2.18813876e+00 -2.47575075e+00\n", + " -1.27530004e+00 -5.58474552e-01 -1.13609345e+00 -2.30956299e+00\n", + " -2.75759207e+00 -1.68469601e+00 -1.11371183e+00 -1.51409782e+00\n", + " -2.52782174e+00 -8.12253911e-01 -3.62244745e+00 -2.27602516e+00\n", + " -9.61875373e-01 -3.23727596e-03 -8.78781496e-01 -3.77441898e+00\n", + " -2.47575075e+00 -1.27530004e+00 -5.58474552e-01 -1.13609345e+00\n", + " -3.98962612e+00 -2.75759207e+00 -1.68469601e+00 -1.11371183e+00\n", + " -1.51409782e+00 -4.97761790e+00 -3.62244745e+00 -2.27602516e+00\n", + " -9.61875373e-01 -3.23727596e-03 -5.10405033e+00 -3.77441898e+00\n", + " -2.47575075e+00 -1.27530004e+00 -5.58474552e-01 -5.28081350e+00\n", + " -3.98962612e+00 -2.75759207e+00 -1.68469601e+00 -1.11371183e+00\n", + " -8.12253911e-01 -2.17650782e+00 -3.54076173e+00 -4.90501565e+00\n", + " -3.23727596e-03 -8.78781496e-01 -2.18813876e+00 -3.53357984e+00\n", + " -4.88839909e+00 -5.58474552e-01 -1.13609345e+00 -2.30956299e+00\n", + " -3.60128827e+00 -4.92827752e+00 -8.12253911e-01 -2.17650782e+00\n", + " -3.54076173e+00 -9.61875373e-01 -3.23727596e-03 -8.78781496e-01\n", + " -2.18813876e+00 -3.53357984e+00 -1.27530004e+00 -5.58474552e-01\n", + " -1.13609345e+00 -2.30956299e+00 -3.60128827e+00 -8.12253911e-01\n", + " -2.17650782e+00 -2.27602516e+00 -9.61875373e-01 -3.23727596e-03\n", + " -8.78781496e-01 -2.18813876e+00 -2.47575075e+00 -1.27530004e+00\n", + " -5.58474552e-01 -1.13609345e+00 -2.30956299e+00 -8.12253911e-01\n", + " -3.62244745e+00 -2.27602516e+00 -9.61875373e-01 -3.23727596e-03\n", + " -8.78781496e-01 -3.77441898e+00 -2.47575075e+00 -1.27530004e+00\n", + " -5.58474552e-01 -1.13609345e+00 -4.97761790e+00 -3.62244745e+00\n", + " -2.27602516e+00 -9.61875373e-01 -3.23727596e-03 -5.10405033e+00\n", + " -3.77441898e+00 -2.47575075e+00 -1.27530004e+00 -5.58474552e-01\n", + " -8.12253911e-01 -2.17650782e+00 -3.54076173e+00 -4.90501565e+00\n", + " -3.23727596e-03 -8.78781496e-01 -2.18813876e+00 -3.53357984e+00\n", + " -4.88839909e+00 -8.12253911e-01 -2.17650782e+00 -3.54076173e+00\n", + " -9.61875373e-01 -3.23727596e-03 -8.78781496e-01 -2.18813876e+00\n", + " -3.53357984e+00 -8.12253911e-01 -2.17650782e+00 -2.27602516e+00\n", + " -9.61875373e-01 -3.23727596e-03 -8.78781496e-01 -2.18813876e+00\n", + " -8.12253911e-01 -3.62244745e+00 -2.27602516e+00 -9.61875373e-01\n", + " -3.23727596e-03 -8.78781496e-01 -4.97761790e+00 -3.62244745e+00\n", + " -2.27602516e+00 -9.61875373e-01 -3.23727596e-03 -8.12253911e-01\n", + " -2.17650782e+00 -3.54076173e+00 -4.90501565e+00 -8.12253911e-01\n", + " -2.17650782e+00 -3.54076173e+00 -8.12253911e-01 -2.17650782e+00\n", + " -8.12253911e-01]\n", "\n", "Optimization FAILED.\n", "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", @@ -861,14 +852,14 @@ "\n", "RESULTS (opt):\n", "\n", - "{'AEP_val': 452.0229798955795,\n", - " 'BOS_val': 40.95778696920967,\n", + "{'AEP_val': 449.67167461051525,\n", + " 'BOS_val': 40.87410354289458,\n", " 'CapEx_val': 110.5,\n", - " 'LCOE_val': 33.40390797427772,\n", + " 'LCOE_val': 33.56461751519039,\n", " 'OpEx_val': 3.7400000000000007,\n", - " 'area_tight': 12.627976787759488,\n", - " 'coll_length': 18.479531905326184,\n", - " 'turbine_spacing': 0.5632175775670184}\n", + " 'area_tight': 12.059020447125771,\n", + " 'coll_length': 18.064954745483238,\n", + " 'turbine_spacing': 0.5544919826485551}\n", "\n", "\n", "\n" @@ -880,7 +871,6 @@ "if optimize:\n", " # run the optimization\n", " prob.run_driver()\n", - " prob.cleanup()\n", "\n", " # collapse the test result data\n", " test_data = {\n", @@ -915,7 +905,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVHpJREFUeJzt3Qd0VNXWB/ANpIcQIHTpvXfpUhVBeGCBJ2J7NrpSBEREEaV8FpQqCtJ7L4KAPkrovfcaSGhJIKT35Fv/w5uYTsrMvTNz/7+1sgYymeRkMnPvvufss3eexMTERCEiIiLDyqv3AIiIiEhfDAaIiIgMjsEAERGRwTEYICIiMjgGA0RERAbHYICIiMjgGAwQEREZHIMBIiIig2MwQEREZHAMBoiIiAyOwQAREZHBMRggIiIyOAYDREREBsdggIiIyOAYDBARERkcgwEiIiKDYzBARERkcAwGiIiIDI7BABERkcExGCAiIjI4BgNEREQGx2CAiIjI4Bz0HgARZU1iYqLs3bdfVq/dKDEx0fLSix2ka9euki9fPr2HRkQ2jjMDRDbg7t278sZ/+snOk3el3eufSpvXBsuKLQekeu0GsnbtWr2HR0Q2Lk8iLjeIyGrhLdrr3X7Ss+/YNLMAVy+clO8/f19mz5ohr776qm5jJCLbxmCAyMpt3faXnPaNlWp1Gqd7/49j+sjtyyfEx8eHSwZElCPMGSCbExMTI9euXZOaNWuq/8+aNUsSEhJSfE3v3r2lUKFCsmPHDrl06VKK+xo3bixNmzYVPz8/2bhxY4r7PDw85J133lH/XrBggYSHh6e4/5VXXpFSpUrJgQMH5OTJkynuw3jatWsnDx8+lBUrVqS4z8HBQfr27av+vXLlSgkMDExxf6dOnaRSpUrqe+J7J7d73xHpPfj7DJ+PmvWayoEdm2TSpEnqd06uTZs2Urt2bfUc4LlIrmTJkmo2Ac8dnsPU3n77bSlQoID89ddfcvXq1RT3NWnSRJ599lm5deuWbN68OcV9BQsWlDfffFP9e+7cuRIVFZXi/h49ekjx4sVl7969cubMmRT31alTR1q3bi3+/v6yevXqFPc5OzvLhx9+qP69bNkyCQoKSnF/ly5dpHz58nLs2DE5fPhwivuqVKkiHTt2lNDQUFm0aFGa37V///6SN29eWbdundy7dy/Ffe3bt5caNWrI+fPnZffu3SnuK126tHTv3l1iY2Nl9uzZ6nO1atWSFi1aiJOTU5qfQ2StGAyQzQUCOBHggF22bFnJnz+/VKxYUU2lJ+fo6KhuixUrpg7UyRUuXFjdurq6qhNwcvicSbly5SQ6OjrF/S4uLurWy8srzWOLFi2qbnESSH1f8it2nEA8PT1T3O/u7p50Ik392F17D0p8XJzkc0j/7RoZEaZucbLCyR0BjQlO5oDPpf6+psAhT548ae4zBTCAE3fqYMv0HLq5uaV5rOl3AZycUz//OKlDkSJF0jwWnzN9Ter7TH9TKFOmTNIYTDAW0++V+rH4HUy/U3q/q8kzzzyT9H1MTM8nnsvUj8XrABBI4D4EGwgYMEuDgJQBAdkKLhOQzQUCSKZ76623VDBgBAsXLZJjVx9L+y6vp3v/uMG95PSR3UknpUaNGskLL7ygPpo3b5508iVt3L59W5YsWaJmkBgQkK1gMEA2waiBAMTHx0udhs1k6DezpUjxUinu27T8V1n1+2Tx8ioo3t7esnPnTvn777/VkgCWInCVi2l3U3CAJQPMBJBlMSAgW8NggGwC1p2x1o41eSMFAiZYPx8yfJTUafScNGzeQYIePZCje/+Si6cPS2R4qKxZsybFbgJM658+fVoFBvjA+jyWPEqUKCHPP/+8Cgxwi5NVVty/f19+mz1XQkJDpF2b56Rz585MVsxCQLBv3z6VI8FggKwdgwGy+hmByMhItcaOl6qRr2qnTJkiQ4cOTfE5rJ3j80/bVojncP/+/UnBgSn5EUmPplkDJBsiByM5rPf3HThUYh08pU2nnpKQEC/b1y2Uc8e9ZeI3X8lrr71mgd/U/jx69Eg9twwKyFoxGCCrXxqIiIiQfv36qfVwI5s6daqMHDlSNm3apE4u2A3w3HPP5egKPSAgIGlJAR+4ikVyHXIMTMEBdl181H+wtOreVwoXeZKAZ+Lrc0UmjXhXZk79kfUNngKzNDNnzlSJiFwyIGvFYICskpFzBDKC0sO4wk+9RTC3cAjAVk1TYIAgISQkRF3Jvvz2J/LqO5+k+7g5P34uZw79pbYXcskgc8whIGtn7EstskoMBNLCdD22rGGd39yw9IJ9+AMGDJD169erOgmoddCiVWtp3/WNDB+H+5BLgHwEyhxew3gt4zWN1zZe40TWhMEAWR2cYFB0hoHAPw4dOqQKIGH63tJMywU1atSUhPj4THc5YF4RswmpCwtRxgEBdnlgmYbImnCZgKzq6hcnIlypIvOd++P/MXbsWJk+fbo6iWg1JY/qjMs27ZFeH41M9/5Z/zdc/t64JKkYE/IXTPkGdevWNXyOR2avcxRQQi4BAqrkxZSI9MJ3K1kFTJsuXbpUlb4FBgIp/fe//5UOHTpoujaPHIXTh3fK/Ts+ae67cv6EnD7irXYzYGfChAkT1NgQtDRo0EBtYcTa+Lx588TX11ezMdsC08n/zz//VK95LhmQNeDMAOmOOQKZCw4OVmVvkZFu6m+gFdQvGPzpKGnU4nlp37WXxMXGqtmAU4d3i/+926p9cvLdBJjROXjwYFIyIvoE4BBTrVq1pNoGqBVhKpOcldfG/Pnz1dIR+knge9hLsiKTCsmaMBggXTEQeDpsJUQzHGT8Z1ZX31LQvOfjjz+WgICHkiiJEhcbk+X6BtgCid0JmNlAcHDjxg11Mjed2PGBpkfpTZWPHDVGTl64Ic91fE2cXd1l71/r5Oq5IzL+6y+kZ8+eYg8YEJC1YDBAutqzZ4+q0sZAIGM4EW/ZskWdSPWCtW3sGkCDqNzUN8DvkHwLIzoPYv9927Ztk4IDzCKMGv2VOBapJo1apkyY9L97WyYMf1um/DjRbuobmAICPAfodkikBwYDpCskUSG7Gt0FKX1on4uTr6lFrr1AgHHixImk4AAVEpFch6vkynWay5CvZ6b7uA1LZsp/189VJ1F7WTLAewBLQUieNXqlTdIHEwhJt6UBFKtBxjkDgYz5+fnJpUuXNNlSqDWcyJ999lkZPXq07Nq1S80SbN26VerUqSMtO3TP8HEvvvKuREY/mamwF2jdjADg+vXrrENAumAwQLoEAuj3zqufp8NaO54nJN3ZO3d3d+nUqZP6XR2dM147d3B0VEEkZhIws2RPkDuBIJkBAWmNwQBphsmCOQsGsFUPV45G0ahRIzmw448M79+9dbU8CrwvY8aMkaJFi8q///1vmTNnjgowbR0rFZJeGAyQZlDEhoFA1mHtGMGAPS4RZAYzAz6XT4vPtQtp7osMD5O/Ny2RZ555Ri0tDBw4UNUxQCOrChUqSOXKlaV///5qB8Tjx4/F1gOCP/7IOCgiMicmEJJmUGIY+9CxLY2e7uzZs6qSH5LrLNGTwJqhfsEnQ0dK8/b/kpd6fiBOTs7ivX2t7P5zlVy7eCpNfQOc+NG7wZSMePXqVbWUgJwEPHcIqFBiOatb95DciB0cmG1Am2cEKFonKyLIwdJJ4cKFNf25ZEwMBsiiMM3p7e2ttk2x7Gr2/Pzzz/L555+rxDpXV1cxGlN9g9DwKMmbL58EPwrIcn0DrLubahvgFs2XcGJt06ZNUnBQq1atdPNWfvp5iqxYu0Wq1WsqXkVLyoVTh8TnyhmZMG6MLvUNEEBjFqR9+/asQ0AWw2CANMkReO+999T+dMq6l156SW21wwnNqMxR3wBJhqdOnUoKDvD9cILF9zMFBrjF/6dMnSZ7jl+VtweMSfE9Hgbcl4nD35YfJ32teX0DvH8WLFjAwkRkUQwGyCKYLJj7569QoULy1VdfyWeffab3cOxKZGSkKnRlCg7QWwGwHJDXpaB8M3Nduo87tGuzLJn5tdy+5aP5kgErFZKlMYGQLHI1x0Agd1DfPyIiwnDJg1rAkgue1++++04VPUIuy/Lly9USRIVqdTN8XJM2L4mDc35d6huk3mVgb1sqSX8Oeg+A7A+umpDVjTVOBgI5g6tWJI7Vr19f76HYPWxP7NWrl1o62OJ9JsOvQ0Kig6OTmklA7oHWdTJMAQGWTNgemsyNrygy69T2lStX1L9btWrFQMAMLYt50NdOuXLl5NaNixnef/f2dQm47yfDhg2TihUrSp8+fWTVqlUqOVEreE+hyRNcuHCBdQjIbHikIbPmCGDLF6a3KeewTe7IkSNcItAYkhMD/K7LxdNH0tyH1KrFv0wQD3cXWb9+vXTr1k3lHbz++utqZqFx48Zq5weaL0VFRVl8rGFhYapuBwsTkbkwgZByjcmC5rVhwwZ55ZVXVIc/FNIhbbczDhw8XDp06SVdXv9QXFzdVV2DVfN+klOHd8vKFctT7CZA74jkWxiRf4CcBAQWpi6M6LWQ1Rke5NugkydqDCCHoXXr1hkmKzKpkMyJwQDlCgMB80NVve3bt8u1a9f0HophA4JBgwZJbHxecXRxluCHAVK4kKdMnTo1022FOJSiUJSp8BFO6ti5gEZcWPIxBQelS5dO9/GLFy+WiT9MkWcqVJdChYuJ/z1fuXvrsoz/eoyagUgPAwIyFwYDlCtYEkAmNg5yDATMo1q1aqri3a+//qr3UAzLHPUNkJB44MCBpODg+PHjKmCoXr16Um0DFOMqUKCALF26VCbPmCuf/d98cXJ2Sfoejx8FyKQR78iErz/PsOARAgIUJULA4OLyz2OJsoPBAOV4RgAHOw8PD/ZfNyMc2JHItnr1aunRo4fewyEzQqIhcgpMywo3b94UBwcHadKkifjeC5RJc7aIm7tHmsehR8PPX3wgN29czTAgMb0Hg4OD1TIFZwgou5hASDleGsAHAwHLtCzGtkyyL15eXurq/rffflP5IFgGmj59ujrBl6lQLd1AAMpXrikeXiUyrW+A1wxqD2CGgUmFlBMMBijHOQKdO3dmIGCBYAAtfNmcxv5VqlRJdVtEl0UXt/yZfi0SGbFkkRkkKXbt2pXtjylHGAxQljFZ0LJwZWfElsVGh5yEB3dvZXh/XFysBNzzzVJvj9SVChkQUFYxGKAswzaq+/fvMxCwEGSiBwQEGK5dsdEhOTE44K4c3bs93fs3Lp0l8dGh6uuywhQQYJsj3q9EWcEEQnqquLg4ta6JJQEUVGHGsmVMnjxZxowZo1oW8zk23nbG/oOGSuee78tLr70njk7OEhEeKmvmT5Fdf66Ueb//lu1uiUjwdXZ2Vnk9eA+zhThlhsEAZWlpAFcbTGqzrE6dOqkDN2oMkEELHg0cKHkc3SS/h6c8DgoUxzzxKskwN22T8XpCvgHrEFBmGAxQhpgjoB1cxaFl8bhx42TEiBF6D4dsuL5BaixMRFnBYIDSxUBAW7t371aFhtARj50KydwYENDTMIGQ0rV//34GAhpCEZoiRYpI3bp19R4K2aHkuwwOHz6s93DICnFmgNKFhCNUTCtevLjeQzEEtKVFU6IVK1boPRSyY9itguJHbI1NqfEVQSmWBnAywtUDyqQyENAGdg8cO3aM9QXI4tBuGYHArVu3WIeAUmAwQClyBFAmFbMCpB00mUHBIdYXIK1gm7CPjw8DAkrCYICYLKgzVB2sUqWKalBEpAVWKqTUGAyQ2t/MQEDf5EHOCpCeAcHGjRv1Hg7pjAmEpA4GWBpgIKA9TNUicXDt2rW5KixDlJtth6h4WaxYMb2HQjrizIBBYVoQa9UIArD3mIGAfksESOhCjQEiPeC9j0AgNjZWvR65ZGBMDAYMnCNw8OBBtX2Q9IODb+PGjVX1QSI9BQYGypEjR5hDYFAMBgyeLMjtg/rBDoIdO3ZwSyFZBZQ/ZlKhcTEYMBAsCXDXgPU4ffq0uhpj8iBZ6y4D9EogY3DQewCkHTQ8MXUfZCBgHUsEbm5u0rx5c72HQpQmIEBiYW6bJJHt4G4CA8B0n5+fn1SsWFHvoVAyHTt2VAfbrVu36j0UogxduXJFypcvz+ZGdo7LBAbJEVi1apVERUXpPRz6H/wt0KqWSwRkzSIiItS2V+YQ2D8GAwZJFkTbUuwlJutw4MABFRAweZCsGZax3nzzTSYVGgCDATvFEsPWX3UQe7tr166t91CIMsXSxcbAYMBORUdHqw8GAtabPNihQwe2kiWbCgiwu4CNzOwTEwjtDKJ2VBJzd3cX/GnRnYysCwo9oZXs3Llz5b333tN7OERZZjqmhIaGirOzM5MK7QgvS+xwaWDFihUMBKwYykDj78PkQbI1OKbgtYvjDJcM7AuDATvMEUBSGgMB614iqFatmpQpU0bvoRBlG44tnTt3Zg6BnWEwYAeYLGhb2LKYbB2TCu0PgwE7aYN77949BgI24MaNG+qDwQDZS0Bw//59VdSMbBsTCG0YMntN5UJRHAR7gsm6zZkzR/r16yePHj0ST09PvYdDlGuol4EaJjiV4Jjk4MAq97aIMwM2CtNyixcvVlXsgIGA7SwRNGnShIEA2Q1TMTMkxi5ZsoRLBjaKwYCN5wiUK1dO7+FQFrFlMdmzypUrM4fAhjEYsDFMFrRdJ0+eVMsDzBcge8SkQtvGYMDG7Nmzh4GADW8pRDGoZs2a6T0UIosHBPv379d7OJQNTCC0MaguGBgYKCVLltR7KJRNWB5AxbYtW7boPRQii3rw4IF4eXkxmdCGcGbABmC6DS2I/f39xdHRkYGADYqMjGTLYjKM4sWLq0AAMwSoiMolA+vHYMBGcgSuXbumGg+RbcKUKf5+TB4kI0FTI9TVYA6B9WMwYEPJgixfa9tbCnG1VKtWLb2HQqQZJhXaDgYDVmzNmjVMFrRxJ06clM8+HyMrVq2VmjVrqu2FREYNCNatW6f3cCgDTCC0Yrdv31a3DARsD0q0Dv1srJSp3kTqN20nIY8fyqblv8rl0wfkh/+bIK+++qreQyTS/HiGPIJSpUrpPRRKB4MBK4NptEOHDkmrVq0kb15O3NgilGTt/d4A6dnnK8mXKpv68J5t8svEYbJg3hwGBGTYPAIk07Zs2VLtriHrwLONFeYI7Nu3T20fJNu08Y8t0vT5nmkCAWjaupNUqdVAhgwZooIGIqN5+PChHDx4kDkEVobBgJUmCxYrVkzvIVEO7di1VypUrZPh/RWr1hFfX9+kvhJERoJEWiYVWh8GA1ZSSIglhu1HeESE6uCWkfi4OHW7c+dOHgjJkFLvMsDSAemLwYAVQFINCgkxELAPjerVkrPHMr7qv3bplLr99ttvpXDhwtKlSxf5+eef5dy5c5kGEUT2GBDg1tSKnfTDBEId4arw3r177DxoZ3CV06hZWxn53QJxc/dIcd/mlXNk+ezvpIhXIVm7dq2aHUDPAiwZoCgRgkJUKTR9MPOajALFiUqXLs2kQp0wGNA5RwAlhgcPHizOzs56D4nMaPny5TJ67AR5tlVHadKmswQ+uCO7t6yScycPSERYiKohkXw3AcoVI3EUxYnwcerUk9kDFClC1UJ8tG7dWvLnz5+ln4/uiPPnL5CQ0BBp1bKltG/fnldfZLWioqJkypQpUqJECenduzcDAh0wGNAB2xAbAwqsfPzxx3Lv/n1J/F+xIVSRxEHvadsKESRi1sAUHCDhEH0pmjdvnhQcNGrUKE0jGMxK9Bs0VEJiHKTVC69IdFSU/LVhkdy8dEK+nzSe2xnJqusQLFmyRM2GMSDQHoMBjTEQMBZsH8QSAJaDsATw3HPPZfsKHW/RK1euqKAASwq7du2SkJAQ8fT0VFf8puCgUqVK8t5HA6VV977iVbREiu9x9vg+mfbNJzJ71nQGBGS1GBDoh8GAxoKDg2Xp0qXStWtXBgKUI7j6P3LkSNKsAYpUIejAAfTFnv3kX736pPu4KV8PlBvnD4uPjw+XDMiqA4KtW7eqYMDDI2XODVkOgwEdoD49qwuSuWCWwNvbW7774WcZ8PXv4urmnu7XHT+wQyZ8+qaaWWjbtq3m4yTKKpyW8uTJo/cwDIVnJI3gam7u3LmqFTEDATKnAgUKyL/+9S+pWatmpq+tfA5PZgNQ/Y0Nk8iaIRDA0tivv/7KGgQa4VlJQ0gCi4iI0HsYZKfatWklO7eszPD+vX+tV7ejR49OytqeP3++el0SWeMOAzT8Im0wGCCyE//u2VMO/HedhIU8TnPftYsn5dzx/Wof919//SUffPCBuvLCLXJXqlevrnY+bNq0SS07EJGxpO2kQkQ2CUmBX44aJp9/3ENaPt9d2nbqKTEx0bJ1zTw5une7BNz3U4WOTLsPJk2apJrGmLYwbt68WWbMmKG+T7NmzVTRI3xdkyZN1LbGrMCU7sqVK9UVXf369VVuApMViawfEwg1goPk+PFP9nnXrVtX7+GQndc3GDRokISGR0pCfIJEhIdkub7B9evXk3YpIEh4/Pixyuhu166dCgwQIFSrVi3d5K7Pvxgrh05ekIYtnheHfI5yeM9W8b1xQb6f+I289tprFvyNyR6dOXNGvZbHjBmTpp4GmR+DAY0gYevs2bNqSrZQoUJ6D4fsnDnqG+B7HD9+PCk4OHDggGqqhcDCNGvQoUMH1WHzs8/HSL7C1eTZ5zqm+B5Xzp+QKWMHyMxpk1nfgLIFgeidO3ekRo0aTLrWAIMBIsqS8PBw2bNnT1JwgMZKgJkur9LV5eMvp6X7uAXTx8lx701y69YtLhkQWSmGWxrODBw9elSt0RLZInd3d+ncubP89NNPapYLVTQXL14sbu7u0r7rGxk+rkvPD+RxSJiaqSDKqoCAAG6D1RCDAY3gBb1lyxY17UVkD0xttzu+0FHc8hfI8OucXVwln4OjWrIgyiq8XrZv385gQCMMBogoV5o2bSJ7tq/N8P69f2+QkKBAFTwQkXViMEBEufLiiy/K5dMH5VHggzT3RUaEi/fW1SrpEEmMRGSduF+DiHIFSYHjvhwlnw19Q57v9qa80P0tyZs3n+z5a61sW7dQrl08peobWDJ5EDsfduzYoaopVqxYUVq3bs1kRaJsYDCgEezLRovZ/Pnz6z0UIrP797//rfaCv/POO7JhyUzJkyevPAy4J888U0oFApbcVjh9yk+yedmv0qCilxTK7yJ/Lb4vH98Jk3H/N4X1DWy850ZGNS3I/Li1kIjMBpULEfCizHFO6xtkx7Qpk8XvwGr5vk+7FJ8/e9Nfen67QSZOmcP6BkRZwGBAI3iaY2Ji1NUTpy/JHuH1jau57777TgYPHmzxn4elgS4tasi2Celf/U/fcEz+b/15uX3bl+85G63aGh0dLW5ubpwd0AATCDWCAxdqwZ8/f17voRBZBIoQ4eD97LPPavLz0HCpadViGd7ft0sDcUmMZH0DG3XhwgX54Ycf1LGTLI/BABGZBYpq4Qq8QYMGmvw8VDQsWtAtw/udHPOJq5ODXL16VZPxENkyBgNEZBZHjhyROnXqiKurqyY/r2rVqnLk0t0M7z97M0DuPAyVPn36qNmK0aNHy65du9TsBRGlxGCAiMw2M6DVEgG0adNGTt8Klmt3HqWbo/PVgj3ikr+Q/P7771KlShV12759e9UorFOnTjJ58mTVGY9pU0QMBojITE2MkA/TpEkTzX4mliQGDv9SXv56nSzYfkbi45+Urb3k+1BeHbde/jx6Q2bOnKl2Nixbtkzu378vJ0+elG+++UYFAGiNW69evaSyygsWLMh2uXCsZ+/evVuWL1+ubrm+TbaKuwk0gqcZB0xnZ2dxdHTUezhEZoUkPRT6OXXqlDrBagEnXrRRxs90dnIUT6c4cXFyEF//EHHzLCJTp07NdFthVFSU7N+/P6kLIwIFvE/RMhffF22a27ZtKx4eHuk+fsmSJTJlwhdSs7SHFMzvIr4BoXL5Xrh8+/1U1jcw098XOwqcnJy4m0ADDAaIKNcw5f7ll19KSEiI2j6rBezO+eKLL1TlQQQiCEjQ3Can9Q0CAwNl586dScEBEhTxu6B2gik4wMwHPodAYMmUr2Td16+Km8s/wf2l2w+l57fr5esff2VAQDaFwYCGUe7q1avVgaV8+fJ6D4fIrHr16iV+fn6yb98+TX7eoUOHpFWrVjJq1CgZP3682b8/DovXr19PCgwQJAQHB6s6CpgtuHHuiBya0lvcXZ3SPHb70RvS55e9csOH9Q1y48aNG2rmpnfv3nweNcCcAY3g4HLp0iV15URkj8mDWuUL4KT8xhtvqJ83duxYi/wMTEtXrlxZ+vfvL+vWrVOzBgcPHpThw4eLj4+P1C1fON1AADo2riDF3BJZ3yCXwsLCVEDG61VtsDcBEeUKTpS4itNiJwFODH379pWgoCC1TVCr/BvTcgE+ECTsW/5DpoGEp7uzWrIgshUMBogoV44dO6ZutZgZmD9/vqxcuVJWrVql23IbchJu+Wc8wxcVEyd3HoapryOyFVwmIKJcFxsqXLiwah1sSVhm+/jjj+XDDz+Unj17il6QnHj1QaQcv5L+lf8Pqw5LcKyT+joiW8FgQCN58+aVjh078mqB7DJfoHHjxhbd/oVtgEhSLFu2rEyZMkX0hGS2iT9Ok7e/2yyrvS9KQsKTNe3I6Fj5etFembHxuMyYMYNJb7lUqlQp6dKlizp2kuVxmUAjeEG3aNFC72EQmX0NHzMDKPlrSdg1cPHiRfWz3N3dRW/YNojgZ/CggTJx+UHxdHeRe4/CJCzBRWbNXcy2yWZQpEgR9UHa4NZCjSQkJKhpTkS7BQsW1Hs4RGZx+/ZtKVeunGzcuFG6detmkZ+xefNm+de//iXTpk1TywTWtmU4t/UNKH1IEsXrC/0uODtgeZwZ0DAYQNITrhgYDJC9wJU6WGonwd27d+U///mPCgYGDRok1gYnftQdIPPz9fWV9evXS61atRgMaIDPMBHlKl+gdOnSFsmFwVU3egaghPe8efNYkpbIgjgzQERWWWzo+++/V81/UG6Ya8dElsWZASLK8dIXagxYYokA5YbR62D06NHSrl07s39/IkqJwYCGSpQoIS4uLnoPg8gsLl++LKGhoWafGdCi3DBZPzc3NylTpozewzAM7iYgohxZuHChSu57/PixeHp6muV74nCEQGDbtm2qNTGbehFpgzkDRJTjfIFq1aqZLRCwlnLDZB2SX6cyedTyuEygkbi4ONVq9ezZs3oPhchs2wrNuURgLeWGyTrgWDlu3Di1q4Qsj8GAxgEBV2XIHkRHR8vp06fNljxoTeWGiYyIywRElG1nzpyRmJgYs80MWFu5YSKjYTBARDnKF3BwcJB69eqZpdzw1KlTVblhc3w/Iso+LhMQUY6CAZy4c7tV1trLDRMZBbcWagRPc0BAgBQoUIC1BsjmoV5869atZdasWTn+HkgMe+GFF1S9AuQfsMogpc5LCQ8Pl0KFCnE3gQY4M6ARvJiLFSvGQIBsHgoNYX0/t8mDpnLDS5YsYSBAaaAnReHChRkIaITBgEZwFbRp0ybx8/PTeyhEuXL8+HE105Wb5EGWG6anQfvidevWcWuhRhgMaAQHzxMnTsijR4/0HgpRrvMFkPFfo0aNHD0eFQtZbpiy8jrBrhWuZGuDuwmIKFuw/a9Ro0aSL1++bD8WB/Z+/fpJUFCQ7Nq1SxwdHS0yRiLKHs4MEFG2ZwZymi9gKjc8Z84clhsmsiIMBogoy/z9/eXWrVs5yhdguWEi68VgQCPIiG3ZsqUULVpU76EQ5WpWALI7M8Byw5RdxYsXl7Zt20revDxNaYE5AxrB+ir2VBPZejCAbYDZneL/7LPP1MzA4cOHWW6YshwM4IO0wZBLI0icwvRqWFiY3kMhylXyIGYFsrP3+48//lClhn/88UeWG6Zs1bO4du2aJCQk6D0UQ2AwoBHslUXy1I0bN/QeClGOA9rsJg+i3PB7772nyg0PHDjQouMj+3Lz5k1VkIrBgDYYDBBRlvj4+EhgYGCWkwcRAL/11luqkty8efNYSY7IijFngIgskjxoKje8Y8cOlhsmsnKcGSCiLOcLlCtXTvXYeJqDBw+y3DCRDWEwoCEPDw/VA57IFmU1XyB5ueGvv/5ak7GR/XFyclKNikgbbGFMRFla//f09FS9BEaMGJHh1+FwgkBg27ZtcurUKVYZJLIRvEwloqdCy2L0ln/azICp3PCqVasYCBDZEC4TaCQuLk5+/vlndVAlssUlAuwGQIOijLDcMJnT+fPnVRIqjp1keQwGNBQcHCyxsbF6D4MoR8mDaFmMvJf0sNwwWWJpKiIiQu9hGAaXCYgo18mDLDdMZNsYDBAlc/HSZVm0fJXkTYiTDu3aSJs2bVRfCSPDVf/p06fl/fffz7Tc8PTp01lumMhGcZmASEQePHggzbq9Ja0/nSWLA8rI3Jse0u3jb6VE2Uqybt06MTIEAli3TW9mgOWGiewDtxZqBPW10agILYzz58+v93AoGZzoGnV5Sx7XfUPy5Es5WRZyYos89l4ga5YvkVdffVWMaMaMGfLpp59KSEiIKi2cfE0XnTgvX76sAgZWGSRzwu6VoKAgeeaZZ1jKWgOcGdAIenJXqFCBgYAVWrh8jQSUbZsmEIACDbuIU/FKMmTIEHXyM2ryIKb/kwcC8N1336lyw2gmw0CAzA25J6VLl2YgoBEGAxrBiQQ12u/du6f3UCiVtX/vFSevMhne71Ssgvj6+srevXvFqMmDqZsTodzwV199JV988QXLDZNFYAkKxauMGoRrjcGARrAag5NJQECA3kOhVKIiozL/gv+tpOGkaLRVNWyHxS6B5PkCycsNoyIhkSWgQ+ahQ4cM957TC4MBMrymtSpITMCtDO+P8fdRtyNHjlTTlu+++64sXrzYELM8x48fV7emYAAH5n79+qmAYNmyZey1QWQnGAyQ4X39+QgJ37dQEuPTFoQKObZJYh5cU0HAn3/+Kb1791bJcu+8846UKlVK6tSpI8OGDZOtW7eqhCd7zBdAoaFq1aqlKDc8Z84clhsmsiMM68nwkBg3ZVR/6f/lF+Jes624VGwoccEBEnZqq0T5nBCJi5apU6dK586d1YdpKyJyQP773//K6tWrValpR0dHadGihcqwxwdK92a1RkFoaKi60kbGfuPGjaV169ZWUd8ASyOm3wOltFlumMg+cWuhRpAEs3nzZmnYsKGUKZNxshrpZ/z48fLll19KHidXSYyLEUmIV38rlNfNbFsh3kLYXvf333+r4GDXrl3q5F6wYEFp3759UnBQqVKldF8Xr703QPZcCRCnSs0kISpUws7vEvewO/LbtMm6b2fE74/ZkHHjxkmzZs0kOjpajh07xiqDZHF37txRnS87depkFYGxvWMwQPQ/CARmzpwpa9asUVf+JUuWlOeeey7bByL0n8D0OoIDfKBEL0762FqKoOD555+XDh06qF7tL/T8j1wo2kYcCxRL8T3Czu2UoJ1zZPWSBboFBPfv31fPAWY+kPz622+/qd+FVQaJ7A+DAY3gaUZ2LNZfXVxc9B4OpaN58+bqShjtd80JU//Yj28KDjCLgL3TNWvVlnulnhOPBi+l+zj/td+KV9Qd8fHx0eTKCK/R5Nu4EACg2NCYMWPUrMnw4cPVLgLu+yYtREZGqkTVEiVK8DWnASYQagQHWVx1XrlyRe+hUAZb6HA1jyt3cytQoIB069ZN1e7HNr3bt2/L3LlzJTKPi+Svm/HPc630rPj5+WlW3wCvUSRGYssgPhAIAAIBwDIX93yTVq5evapmo/ia0wYTCIlE1Do/SkZjCt/SMPuAev7r/94np/Nm/BZE7oKpr3vbtm1FCwhWTp48qcnPIiLrwZkBIhGV+FexYkW1rq+VF1s3kYirhzK8P+r6UXU7aNAgqVmzpgwePFhdnSM5kYjInBgMEImotXxLLBFkpt9HH0rMmT+f7FxIJfr+VYnyO6+atCxfvlxatmwpGzduVN0BkXiIxMZvvvlGlQVGoyUiotxgMKAhJIExEcb6YA0fuRxaLBGkfj3MGDtUHqz4Qu0eQFAQHxEsQXsWS+Cm7yU+JECmTZsmvXr1UkV+bt68qdZR8Tl0v/zpp59UXQMvLy95+eWXk3JSspMTjEBiw4YNam3WVG2QyFqau6VujkWWw90EZHioqvfBBx+o3R646tbaunXrZMDAQRIYFiOJCXGSEBGcpfoGOJHjBG7apYBZAmxrLFu2bIotjAgc0jP4szGycMteyVPiSXVBh4c3JX/UA/G5dDbdr2/QoIGMHj1aBR4sQ0xkXxgMkOGhqA6uuFFtTy/ImMauAfQ7yGl9g7CwMPH29lb5DwgOkHhoOombCh9hucHV1VX6DB4pG3ydxK1q8xTfI+r6YQnYNlMSwh6l+f74PhATEyM//PCDKgbDmS4i+8BgQCO4isN2MlSkq1Klit7Dof/BDgLsY8bMwKRJk8TeWsCaAgPcoogQalygnsLxICcp9OLH6T4ufOdvUjrWN82Jvnr16vL555+rhMY9e/aomQcEBfXr19foNyIjQT0OvG779u3LmSgNMGdAQ7jqQyENsh5nz55VbaW1Th7UAhopoW4AOiwiMMDvOnHiRLnzwF/c6j3psZAex5odJDQiWmbNmqVqL5g+Fi1aJLVr11YFlJDM6Ovrq8prY5sk6iEQmRNKX7Plu3YYDJCh4coDV8tIxLNnuMrHiXzo0KHS8cWXJJ+rR4Zfm9fVQ274+MiNGzfUFVnyD3wffKCIEoKLGTNmqO2OVatWVeWcue2RyDYxGCAxejCA9XkjlYhu06KJhF/an+H94Zf2SWJMpMpdyAy6NA4YMECuXbsmQ4YMkR9//FEqV66sdiZwuyORbWEwQIaehkTCnT0uEWTmlVdekcRbRyUhJu2SFT4XcWmv2s2AICkrPD091fID1nhffPFF6devn9StW1e2bNmSrW2ORKQfBgMa7pnt0aOH2vZF1gFb8ZDDoXV9Ab1hl8Iv40eJ/8ovJfzKQXXCxgf+jc/F3L+mtjVmdzcDXtvIK8B2RyRldu3aVW1tPHHiRLq7J1ACetmyZSoHgfXnKbVy5cqpxlg4dpLlcTcBGdYXX3whs2fPVu2KjXjAQX2D/gM/lkfRT3YNxIU8kDKlSj61vkFW4LCCmYERI0aofgdvv/22TJgwQc04zJz2s6yd/pXULBgtLg4iFwIT5Fqkp/zftDm6tWsmMjoGAxpuYUNGdqVKlTIsAkPaatq0qepFsGLFCjEqc9Q3yAxyB37//XcZO3asauXctlVzqRm+X358wTnF1sXt1+Kk7+ZI+WneGgYEpPj7+6ulJ9TGMGKwrjU+wxoGA9u2bVMHXdJfUFCQHDt2zHBLBKnhxI+OiJiOxa05AwHADgTkECDJcNiwYRJ9bU+aQABerOwgb9V1lE8++YRLBqSgLsaOHTvUsZMsj8EAGbplsdGSB/Xi4eEhzz77rLxU5cn2xPSMaOEsCcF31UwFEWmLwQAZdkshtsEhSYm0gboF5QtmfMjxdMkjbo5PGkcRkbYYDJAh6dGy2OhQ9Mj7Vsb1B47djRP/8ETp06ePdO7cWXVlRGEjpjURWR6DAY1gahRV2jBdSvry8fFRa9hGzxfQGrYZHvJ3kUeRaU/uOOF/6x0jrgWLybhx41TeAHZ7oF4BEhvfeustWbhwody5c0eXsZP2UL+iVq1abIalEe4mIMNBwyhcfaJlcaFChfQejqGsXLlSJg97UyZ1cJb2FfKpA/3t4HgZ8Xe0bLgUJ8tXrU3aTRAVFSX79+9PatF88uRJFTTUrFlTBXKY2WnTpk22AmxL754gslUMBjSCpxkFbpycnNiBS2e9evWSmzdvyuHDh/UeiiGtXbtWhn3cT4rII3HKJ3IjKEGcCpWWqVOnZrqtEMEbsstNnRhv3bql3kvowmhq0dy4ceMM319Lly6VHz4fIFU9IqSAcx65FZwgN6M85fvprG9gjdAqG8fMAgUKcHZAAwwGNIL91uPHj1cHHUx9kj6wg6B48eJqZgBFcEgfub1Cx2ELSz2mWYOdO3eqOgaYWm7Xrl1ScIAkUZxIlixZIovH/kdW/9tNBQImO2/ESd8tUfLdnNUMCKzMmTNnVGGsMWPG8AJKA3yGyXAHGFxhMnnQOuob5BRO8FWqVFEfaJaEYBt1I0zBweDBg9XnsFukffv2cvKvFbL/XTdxc0x5hdm+ooOMbOEknwwaIN27d+eSARkWEwjJUHCicHV1VVPLZD9w5disWTPVRnnPnj3y6NEj1Vr55ZdfVrMGdb3i0gQCJu81cJSCcQGsb0CGxpkBMhSsN7du3VqcnZ31HgpZEJIKu3Tpoj5QdvrotHcz/FqHvHmkoIuwOigZGmcGyDCQnY6rRi4RGAtyEu6EZpwaFRGbKA/CEtXXERkVEwg1gqc5OjpaHB0duS6pE0wXY6/7qVOnpF69enoPhzRMVqxf3kv+7BEnZTzTvve+2hUlc68VUZUP+d60rmRfHDfRpIi7CSyPMwMawYvZxcWFBxudlwiKFSsmderU0XsopCG85776aY50XxEph/z+qYAYE58o/7cvSmYfj5Xp06fzvWllEATgb8JAQBvMGdDw6mT58uWqHSfa5pI+yYOYGWA7VOPp2bOnOql0/+hdqewRprYX+gYnSpBDMfll0UxuK7RC169fV8t6b7/9NrcWaoBHRY2Y9kWHhobqPRRDQnb58ePHWYLYwHr06CGVa9aXfOVbyjvfLJYZq3bIbV8/BgJWKjw8XBWWIm0w3CLD5AsgIGMwYFwoSoSqkzNmzJA33nhD7+EQWRXODJBh8gXQKKps2bJ6D4V04u3trZbrGBASpcVggAwTDHBLobHhNVC+fHmpVKmS3kMhsjoMBjSCpLWXXnpJSpUqpfdQDAdNiZCMxCtCY0MCKV4DzE63DaVLl5Zu3box4VcjfJY1ghd0kyZNpEiRInoPxZBXhHj+c1MLn2zbnTt35OLFiwwIbUjhwoWlYcOGDAY0wmdZwwIaaJITFBSk91AMeUWIQKxgwYJ6D4V0gtbHgK2lZDs7gE6cOKGOnWR5DAY0ghc02nH6+vrqPRTDPe84EfCK0NgQEDZo0IAzczbEz89PNm3axGBAIwwGyK6h9DCuMJg8aFzYUsoEUqLMMRggu78idHNzU+1tyZjOnz8v9+/f5+wQUSYYDJBdwxVhmzZtxMnJSe+hkI6vAbSsbtWqld5DIbJaDAY09Mwzz4irq6vewzCMyMhI2bt3L6eHDQ7BAAIBvvdsi7u7u6oLwa2g2mALY7JbpnVi7OJgp0JjiomJUVvUxowZI6NGjdJ7OERWizMDZNfBQPHixaV27dp6D4V0gl4EaHjDfAHbg10EcXFxKgGULI/BgEbwoh43bpy6SiVtsOIc4TWAmQFsKyTbcu7cORk/frzqJ0GWx2BAQ4xwtRMYGCgnT57kFaHBYXaoffv2ki9fPr2HQmTVGAyQXWLLYgoODpYjR44wgZQoCxgMkN1eEVavXl01OyFj2r17N1sWE2URgwGyS6w4R3gNVKhQQSpWrKj3UIisHrcWagRPM8ri5s+fXxVAIctBu+LKlSvLxo0bVQtUMibMDKHg1G+//ab3UCiH20KjoqLEw8ODScAa4MyARvBi9vLyYiCg0RUhEsZwIiBjQkOwy5cvc4nAhqFqaIECBRgIaITBgEawdrl+/Xq5ffu23kMxRDDQtGlT8fT01HsopBN0qsRJBDsJyDbdunVLVq1axa2FGmEwoOEywenTp+Xx48d6D8Wu4cDBlsWE+gINGzZUs3Fku7tBLly4wC3ZGmEwQHYFtQWCgoKYPGhgppbFDAiJso7BANndFSGSNLFMQMZ09uxZ8ff3Z0BIlA0MBsguWxY7OjrqPRTS8TXg4uIiLVu21HsoRDaDwYBGkMyEk1SxYsX0HordioiIkH379vGK0OAQDDz33HMqICDbVaJECbXUkzcvT1NacNDkp5Da6tauXTu9h2HXEAhgbzLXio0rOjpavL29ZezYsXoPhXIJF068eNIOQy4N23GiGE5oaKjeQ7HrK8KSJUtKzZo19R4K6eTQoUNqhogBoX3sJrh06ZI6dpLlMRjQCF7Qixcvlps3b+o9FLvFlsWE1wC2E9avX1/voZAZ6gysWLGCwYBGGAyQXQgICJBTp07xitDgMDvUoUMHrjMTZRPfMWQ3LYuBwYBxoaDX0aNHmUBKlAMMBshupoeRK1CqVCm9h0I62bVrl5pSZkBIlH0MBjRUqFAh1XyDzNuQ5sfJP8uaNWtUlzrWMTf2EkGlSpWkfPnyeg+FzABN3YoWLar3MAyDLYzJZnMEXvlomFyKcBOnMnUl9qGfhJ/bIR4R92TWjKny6quv6j1E0ljVqlVVvsCsWbP0HgqRzWEwQDYHtQQa/+sdCa7bS/LkS1lpMMh7oYQcXS9rV61kQGCwzHPMCGCG6LXXXtN7OEQ2h8sEGomLi5MffvhBdeGi3Pl98Qp5WP6FNIEAFGz9tjgVrSBDhgzhkoGBsGWx/Tl37pxMmjRJHTvJ8hgMaCg8PJwvbDPYsPOQOBYqke59efLkFcdiFVQuwd69ezUfG+mXQNq4cWOVl0P2AcmgqChJ2mAwQDYn8ikHCAQEgOplZIyTBmYGuIuAKOcYDJDNqVW2qMSHB6V7H1JgYgJ81L/79+8vdevWlU8//VS2bdumytSS/Tlz5oxKKGV9AaKcYzBANuf7r0dLqPc8deJPLfT4ZokN8FH1BlD+uVGjRrJy5Urp3LmzmkJGs6iJEyeq4jTMKbCfLYWurq7SvHlzvYdCZLO4m0AjeJr9/PykcOHC4u7urvdwbN6Mmb/IiB9/F4+GXcWlTC2JDfZXuwiibhyTxKgwlVVu2k2A5x5LBjhpYG0ZxWnCwsJUcICtaJhexlVlxYoVs/zzo6KiZO3atRISEiI1atRQLXPRmZK016lTJ/U33r59u95DITOKjIxUVSXRypj9RiyPwQDZrHXr1kn/gR9LYEiEJMZGSmJstJQpU0amTJmS6bbC2NhYOXz4sAoM8HHkyBE1S4BgAEEBggNkpSNwSw1f9/qHg2THWV/J90wtSQh/LJE3jotHtL/8Oj3zn0vmh6AMf6dvvvlGhg8frvdwiGwWgwGN4CSCK9M6deqwZK6Zn1fsGrh3755qX5yTK3S0St29e3dScHDlyhV1JYLsdFNw0KJFC1UR7fme78rFIm3F0TNln/XHB1dLyKFVsmb5EgYEGsIsDwK3kydPslOhnblz545qPoaZH866WR6DAY1gS+H48ePViQJJbWS9bt++nbSkgNvAwEBxc3OTBg0byWXPxuJeu0O6j3uwcowUjX+o2lTz4KWN0aNHy++//y73799np0I7TAzF7N+YMWPEwcFB7+HYPb57iFIpW7asvP/++7J8+XJ58OCBnDhxQsaOHSs3A0LFrWbbDB/nXLo26xtojC2LicyD7yCiTOAk06BBAxk5cqTUa9BQ8uTN+Io/r7Obur1x44aGIzSuoKAgOXbsGOsLEJkBgwGiLGpWt5pE37ua4f3Rdy6q248++khat26tktoOHjzIqpMWsnPnTrWLgPUFiHKPwYBGTAlp6WWok234fPhQiTi8UhITE9LcF33/mgoGkMQ4depU8fLyksmTJ6vEwyJFisgrr7wiv/zyi1y9ejXd+giUsyWCKlWqqGUdsj9436B2BLcVaoMJhETZ8OvsOTJ00iwp0LynuJSpI4lx0RJy7A8JP/e3xD26q2oPmHYTYEYAxY1MyYimWQKcvHA1iw+sd+Ogl53dE7giRsIctlEaub5B5cqV5cUXX5SZM2fqPRQim8dgQCN4mpGM5unpqaqlke3CCb//oMESFJUgifGxEh8amKX6BqGhoeLt7Z0UHJg6WCInwRQctGrVSlxcXNJ9/PDRY+X3DTtECpaWxIR4ibl/VTxiHxmyvgF2bKAuBLLNMetC9tnY7dGjR1K6dGnODmiAwYBGuLXQvpijvgH2USMwMAUHCBYRCOB7meob1KtXTyUx9hk8Utbfzifu1Vql+B4hx/+Q4H1LZfXShYYKCLCdsG/fvvLw4UMpWLCg3sMhC+DWQm0xGNAIgwHKDN6G6N9uKny0Z88e1VipaNGiKhnxvz7RUvD5fuk+NmDDJCkcfkt8fHwMs2Tw+uuvy61bt+TQoUN6D4UshMGAtphASGQFMA2K6pTDhg2TrVu3qulRVNfDzoSDx06JW8OuGT7Wvc7zqu+FUeobsGUxkfkx3CKyQih93LZtW/XhGxgiu1wzngp38CgikjefKnhkBChRi+UBbikkMh/ODGjIycmJldIo29o0aySR149meH/E1UMiCfFqDb1bt24yffp0uXjxot1uYUSOBcpDN2vWTO+hkAVhyYsdXrXDnAEiG0hW9KreVDxf/lLy5Es5mZcQEykPln0uhSRUBg0apLYd7t+/X2JiYlQWtqk9M26LFUvZXMlWdezYUZ0osJxCRObBYIDIBsybN18GfjtNCrZ5V5xLVFFX/VG3z0rw3sWq2FHy+gbYkoX8AVMy4tmzZ9Xnkbhq2sKIHQu4utZy94S5WhYXKlRIJkyYoPIriMg8GAxouJtg9uzZqshMtWrV9B4O2aA1a9ZI/0+GSnC8E7YfSGzQHSldopiqeJjZtkIUKELCnSk4uHv3rlqyQk0D08wBah1kdHKfPvMX+WryrxLrUVL1ZogNvC0F4oPl1xmZ/1xLMCUOnj59mrty7NylS5dk+/btMnDgQO4m0ACfYQ35+/tLdHS03sMgG9WjRw9VYCe7V+glSpSQN998U30g9kc+gam2wcSJE1UbYJTJRqBqWlKoUKGCeuwPk6fIt8t3S6GeEyRPnn/yXULP/CU93/lAVotoGhBg3FjuwM4Lsm9Y6kIzKtIGgwEiG4ITP3YY5GYLY82aNdXHJ598og64hw8fTpo16Nevn9q6V6lSJRUcLN91Ugq98lWaCnAedTtKzL0rMnjwYOnevbtmSwYYI4IVVqQjMi+mthMZGJYLMLtg6rCILXvr169XNf83btwojhWbZHjiLdC0h9wNfKxZfQOM7cSJE6wvQGQBnBnQCA6oOPCiOAzXOslaobTvyy+/rD6eeeYZmXY+40OEQ4GiIo4uaslCy5bFDAaMAa8rHDM5C6QNBgMawTTqu+++yxbGZDOwLh/15wpxKVMr3fuj/S5KQmSoyl3QKl8AybdoCkX2D8theA0apcS23rhMoCFcaaFj4ePHj2XDhg0SGxur95CIMvTSSy+J3D0nCbFpk15xhR5yZJ2ULlFULTNoFQyw6qB9wzER22SxJIQqnKVKldJ7SIbBYEAHISEhqn3tsmXLGBCQ1cIV2fRxw8V/zTiJCfyn1HF8RLA83DxZIn1Oqm2NlrxyQ32D3bt3q/bQN27ckHbt2lnsZ5G+cCzEMfHy5cuqVgZpi3UGdIKOa0uXLlWzBb179xZHR0e9h0SUrtWrV0v/wcMlNF9+yZPXQeIe3ZESni4ybdo0i24rXL58uUwY2V8qu4eJu1MeuRGUIH6xhWTqL7MN1a7ZSIEA2nq/9dZbUrZsWb2HZDgMBqwgIMALH3vAmShD1krrCoRLliyRhWP/IytecxUvtycTmDhULT4TK1/sjJGp81czILAjCATQgpuBgH4YDFhBQIASq6xKSPRP4NGiciHZ1VvEzTFtgPyNd5T8dqWI3L59m8lldgJLQKgyyEBAP8wZ0Fm5cuVUIICY7MiRI8whIMPz9vaWuoWi0g0E4NPmzuIScU+z+gZkGTjWHThwQBW5qlixIgMBnTEYsBKPHj1S2dJMKiSjw2xZWc+Ml8yQP1DINY9m9Q3IcjkCSA7FzgHSH4MBK+Hl5aXyBpBAw4CAjKx8+fJy83HGq5ch0YnyMCJRs/oGZLlkQRzzihYtqveQiMGA9S0ZMCAgo2vdurWcDXJRJ/30TNobLTHuT5IYybYDARzzyDowGLDSgMDT01Py5uWfh4wHSYHDJv0mXZdFyK3H8Umfj09IlGmHomXB6ViZPn06kwdtEP5mRYoUYSBghbibwMqhFz2WEFiHgIxm5cqVMnLAf6R6oVhxd8wjPo8TJCBvUZk6/RduK7TBGYEHDx5I6dKl9R4KZYDBgJW/gVDYBZE0CxORETVo0EC9/t9//31N6huQ5ZYG/P39VctrNB8i68NgwMqxUiEZVWBgoEouW7BggWryRbaHlQVtBxelrRyTCsmoduzYoW7Zstg2MRCwLQwGbCggCAoKkuDgYL2HQ6QJ1N2oUaOGmhUj2xMWFqaasjEQsA1cJrCxMq1YLzXNDnDJgOwVDksVKlSQbt26qbwZsh04PqGqIFoQ45a7omwD/0o2xJQ4tW7dOi4ZkF27fv26ypd54YUX9B4K5WBpAJ0ugYGA7eBfygY1a9aMOQRk90sECH7btGmj91AoBzkCLAhlexgM2CAmFZK9+/vvv1XQW6BAAb2HQlnAyoK2j8GAHQQE58+f13s4RGbNjdm5cyd3EdiQy5cvMxCwcUwgtHGPHz9WpYvz5Mmjkq5wS2TLjh49Kk2aNFEtilu1aqX3cCgTyRMEsXOAMzm2izMDNq5gwYIqADhz5owsXryYSwZkF0sE+fPnl6ZNm+o9FMoEjjVLliyR48ePq/8zELBtDAbsBGYH/Pz8mENAdpE82LZtW26dtYEcARxz2ILYPjAYsBNMKiR7EBERIfv37+eWQivGyoL2icGAnQYE27dv13s4RNmGPIGYmBgmD1r5zA0DAfvDBEI7hKm7QoUKibu7u95DIcqWESNGJE0/MxnWOkVGRsqjR49YJtrOcGbADqFnOAKB0NBQ2bRpE5cMyKaSBzErwEDAuuAYsmHDBrV7ydXVlYGAHWIwYMfwxj137hxzCMgmoN/96dOnuURgpTkCFy5cUNsHyT4xGLBjZcqUYVIh2Qy2LLb+yoLMEbBfDAYMlFS4YsUKVZiIyFoT02rVqiUlS5bUeyj0v86RK1euZGVBg2ACoUGgAxxyCGrXrq33UIjSwGEIJ5tXX31VpkyZovdwKFmZYRcXFwYCBsCZAYPAmxmBAA66J06c4JIBWZWrV6+Kr68v6wtYARwbjhw5oo4V1apVYyBgEAwGDJhUuG3bNuYQkNUtETg4OEjr1q31HoqhmXIE8PfA9kEyDgYDBoP6A0wqJGvcUti8eXPx8PDQeyiGlbqyoJeXl95DIg0xGDAgli4maxIXFye7du3iLgIdscQwMRgweEDg5ubGAi+kK3S9Cw4OZjCgI7QhRrMzBgLGxd0EpAQEBKh2yOwUR1obP368fP/992qNGnkDpO2MwMOHD6VEiRJ6D4V0xpkBUtO06EvOJQPSA5LV2rVrx0BAp6WBpUuX8n1PDAZI1EEY+7uZQ0BaCwsLkwMHDnBLoY45Aj169OCMIDEYoCeYVEh6tSzGa435AvqVGGYdAQIGA5QmIMAaIvcYk1ZLBOiAh+I2pA0kawYFBTEQoBSYQEjp5hBg6SA+Pl4SEhI4hUgWU7duXWnUqJHMnz9f76HYPdNsH97PeG/ny5dP7yGRFeHMAKVhSuRC/3IuGZCl3L9/X86ePcslAg2XBtatW6f+z0CAUmMwQBlq3LgxcwjIYtiyWPscAVR5JEoPlwnoqd0OsfUI67q9e/fO9ZJBYGCgmnHAUkT16tXlueee41WKQb333nuq4NCZM2f0HordYmVByirODFCWdxmcPn06x98HCYlDerSSX18vK+X3fCKRG4bI1/95XsqXfSZp6pKMA9cgSB7krIBlnT9/noEAZQlnBijLJ3M0OULpYrxkslPCOCoqSka+2lB+bOQnTvn+eRy+z/ubomThqVhZs3atqnVAxnDp0iWpUaOG/Pnnn9K5c2e9h2N3TO9R3GL3AKqLEmWGMwOUJYULF1YHl4sXL6pqhdnJIVg9b4aMrO6bIhAAfL9fu7hIjaJ5ZciQISrDmYwBswJYcmLLYvPDe3Px4sVq+QXvMQYClBUMBihb0NjI19c3W0mFV/ZvkNIF0n+pOTvkkXrF86rviQI0ZJyWxS1atBB3d3e9h2KXOQJ+fn6q8RBRVjEYIItXKoyPicr0fuf/zRj4+PiYbZxkvdiy2DJYWZByg8EA5SogwJrvU3lVkvCY9FNTsKZ5IeDJ8sBHH30k7du3l0mTJsmxY8e4bGCnjh49KqGhoQwGzGz79u0MBCjHmEBIOYapfUxFFihQINOvu3fvnnz/WiX5uWPabYlTD0XLqB3RUrBICRk5cqTae757924JDw9XeQodOnRQJw00sqlQoYIFfxvSyjfffCM//fST2mbKToXmbfr0+PFjKV26tN5DIRvEYIByLSIiQk37duzYMcM6BD9/N14OLBono1s5Sf0S+eRmUIJM2hcjGy7HycNIkTVr1iTtJoiJiZHDhw+rdWV8HDlyRJVFrlSpkgoK8IGWt9jdkJ0pVMxi4GCJqybWN9APkga9vLxk/fr1eg/F5uF1vXXrVvV+8PDw0Hs4ZMMYDFCuIVlp0aJFTy1MtHr1ahk5uJ8kRARJWHSiPIoSKVOmjEyZMiXTbYU4gWO2wBQcXL16VfLmzasqJJqCA1RWc3JySvNYBBGj+vaSwBObpV7RBHkQnih7b8fLrTgvmTJ9Frcz6nD1iiBu6tSpMmDAAL2HYzc5Am+//bZ6LxHlFIMB0rRSIfIAsGsASwclS5bM0RU6fha2piEwwC26LGKXQ5s2bZKCg1q1aqltVYP+3V6GlTgiFQv/8zPwkv9kW5T8djxWVqxifQMtbdmyRbp27SqXL1+WqlWr6j0cm8XKgmRuDAbI7AEB1ixxpZKdwkQ5hSv/U6dOJQUHCDSio6OlRIkS8myjevKm6155vVbadWm87FvOixC/PKXk5s2bXDLQyNChQ2Xt2rXqtaLF68Me4bWLWh/I2WEgQObCYIDMCgd59EqvX7++Lj8/MjJS9u3bp4KDvetmy77e8ZI3g5POkG2RMvVwrMp3aNu2reZjNaLatWtL06ZNZe7cuXoPxaadO3dOJe4yECBz4dZCMisk55kCAVRA07rboaurq1om+O6776RZo/oZBgJQ0OXJfZhqJcvD0hBq5XNLYc7gvXTixAk1M4CgioEAmRODAbII1EPfvHmzru2PC5evK7ceZ1yr4OyDBHXbt29flTcwa9YsuXbtmjrYkuVaFmO7KOUsR2Dbtm0qoZbI3BgMkEWg/kB2KxWa27CvJskY7ycn/NRO3IuTQ3fipVixYjJ8+HAJCAiQTz75RKpUqSIVK1aUPn36yKpVq1RyIpkHcjrq1aunnnPKeWXB7GypJcoq5gyQVewysJTpP/8g3nNGy8QOzlLVK5/ExCfK7GMxMv1orFx5mKCS2Uy7CVAVD1sYTcmIaMqEJLeGDRsm7VJo2bKlODs7Z/nnm2P3hD3AYQaJpW+88Yb8+OOPeg/HZrDEMGmFwQBpEhDs379fevTokW4tAEvDFf7oof3ELS5YImIT5XpQYpbqG6B+QvItjP7+/ionASd0U3BQp04dVfMgPZPGjpIDq2dIRY8YiYkXOXk/Xu4lFpGfDVjf4MKFC2q7J6a5X3zxRb2HY1N9HFCcqUmTJgwEyKIYDJCmHj16pCqlaT1DkNsrdLxNzp49m1T4aM+ePWrnAqa8kRBnKplsKgX75ZAPpbbfUnm9tlOK7zF6Z7RMOxwji1cYq77BtGnTZMSIEervz06FWZsRQG5A0aJF9R4KGQSDAdL0hDxz5kyVT6DHkoE5RUVFycGDB5OCg+PHj6uTffXq1VW5Xdezi2RKx/RnQTovDZfz0caqb9CtWze1DINtnJS1pQEETshjMcprhPTFBELSDA5q3bt31zWp0FxcXFxUPfiJEyeqLnxIQMRyBAKBvzeukJHNM27A82p1R1UwBjMVRoC/M3IxMHNCWc8ReO211xgIkGYYDJBu7Y9tPSBIDo13evbsKb/99pu81LG9FHfPuL5BFa8n9929e1eMAI2m2LL46VhimPTEYIB0CwhwNY0Pe1OjYQvVDCkjf19/ct+QIUPkgw8+kOXLl9vl82CCZZSCBQtKo0aN9B6KVcOyALayMhAgPTBngHS9EkLeAPoLIJ/AlnMIUmeA96jnKet75EtTfz8sJlFazw8X37jCKiBCIR6UlgVUbsRUOq6gkeCInQv2oFWrVlK8eHG1jZPSfx9gRwqWBPDacXDIeImJyFI4M0C6MZ389a5UaG44mHfsN0n+vSZSfIP/mSE4eidOOi+NkJP3E9RyArY2YocClgsWL14sdevWVQ1osPUOhWUQFKCsMpITETBlB4IrrNNj1gG3+L8eQkJC5NChQ1wieMrSwIYNG9T/GQiQXjgzQGL0wkSWsmLFCvl6eH8pkjdEYhNELgYkiGex0jJ16tQMtxXi7Yg9+ab6BjiRh4eHq5wElPE1zRyUL18+w587+7dfZf53I6RS/ijJl0fknH+C+OcpIlNnaF/f4I8//lA7Ca5evSqVK1fW9GdbOxYUImvCYICsgr0GBLmtbxATE6OurE3BAZLxMEuAE6up8BF2NWBNHqb99L1cXTlGfuroIo6IBNDmOTFRvvWOlp8Oxcj8ZdrWNxg8eLBs3LhRbaNky+J/MBAga8NggKwuIGjfvr00a9ZM7+FYJRSiwV59U1VEXHFjvfnZZ59VMwdn1/8sG3s6pHvifX1NhBwILiE+Pj6abVmrWbOmKuE8Z84cTX6erTh27Jj89ddfDATIajAYIKsSGBiopsRxMsNLk1eTTw+gTIWPtmzZInM6xcsbyaoeJnfIL07aL4yQP//eJW3btrX42HDVi4qMWC55/fXXLf7zbIHpNY3boKAgKVy4sN5DIlKYQEhWpUiRIupgiVbC9pRUaCm4qvzwww9l5cqVMvTjAVK3WMZX/GjU5OEsaslCy5bFmOmhJ0sDSBA1NcBiIEDWhMEAWSXkDOCqlwFB1tWu3yjT+gZH7sRJcJTI6NGjZdiwYfLnn3+q5ERLwWxFgwYNWF8/WY4AKk+yNwNZIwYDZJXstVKhJaEr5Pqr+SQ+Ie3KH6alZxyJFXfPwmqJYM2aNdKlSxe1hRH/nzBhgkpONNcWRPw85DRwSyErC5JtYDBANhEQYIsaZQ5JgT0+nSw9V0dKYMQ/dQlCohPlg01R8t+bcSqRb/78+WrW5dKlS/LTTz+pxlGoZ9C0aVO1TIOa+L/++qtcv349x2M5f/683L9/n/0IRNQMDAMBsnZMICSrd/v2bcmfPz/XWLMIOzImjhooZZzDJG+ePHIpMF6i3UrK9OnTM9xWiMp3mBkwJSNiOyNmCSpUqJBU2wC7FTL7G6CT4+p50+Xqvg0ScO+2HLx0TxZtPSZ169cXIwsODlbFl8qUKaP3UIgyxGCAbAZONijCg5OSvdQhsNb6Bjh5eXt7JwUHmEVA0hv6C5jqG7Ro0UKcnZ2Tvv7zXi3l8+o+UrrAkwnHuIRE+fFQvMQ36SdfjJ8sRlsawNZB1IBwc3PTezhET8VggGwGploXLlxod4WJbAES30yFj3CLxkronYCWzQgMLu5aLdPqXRA3x7RbQQdsiZRWQxeov5nRcgTeeecdtb2SyNoxGCCbrVSIBDiscQP2bKdOfitQoIA4OTlJRESE+kgOn8f9eAwem5qp1gGK/GAKPTksWbi4uKiZirCwsBT3IUDBGjzeVuhAlxoS9nCFjitpVBdMDleQ+IiOjlYtf5PDY/BYUy2G1FCBEHXtMR6MKzmctJHBjpMUpqyTw++I39XUNS91DwTTc4hdB5GRkepz+BqUTN6/f7/s2bNHzdb0rZ8o0zqn31jJPzxBWi/LJ94nLifNTpieQ3zP1DsaTM8hfg7GlBqWKlBoCb9L6sRS/J74fdN7DvH8mCo1ZvYc4nF4fHrPIf5m+Nslh7GYlk/wN0evDVYWJFvDrhhkk0mFCAh+//13GTVqlPo8/p/6AI8r0apVq6pqbzt37kxxX+3atVX2PQ78M2bMSPNzvvzyS3XiWr9+vQpAkuvevbvaMockudSJjVhjf/fdd1UAkd73/fTTT8XDw0O2bt2q9psnhytsVOu7ceOGqhuQXLFixWTAgAHq37Nnz04TSPTr109KlCihTsz4fZPDdH7Hjh3VksG8efNS3IeT8vDhw9W/Fy1apIKf5N5++22pVKmSyifAskFy9erVky+++EKNJ37T4DS/a9LY3fOKQ2yofPbZZ0k9FZCkWKdOHTlz5ox6LpKrUqWK+hvjhJzeczhy5EgVNKHI0pUrV1Lc16lTJ1W9EpUZsWMiuVKlSkmfPn3Uv3/55Zc0gc+gQYNUcIn6CKdOnUpxH5ZZsDxlmp1KDoHL0KFD1b8XLFigxs1AgGwNZwbIJuFqHleUpilYnOhSXyVifzuu6HAFmfqKGCcTHPhx0kbXwNSQ7IWr5gcPHqS5SsRVIE6iuApPfeWKq12cuHGi8fPzS/N9MaOBIAOBS+rZClyZ4kocn08d2OBqGWv/pin71G9bBAK4gsd4Us9WIPjArAJ+D/w+yWEsGBPgeUg9C4LfBb9Tes8hrpQxqzB37ly58Ht/mfxi+jMDjyITpc6sMBk1YaoKpACPw+MRjKWemcHfDH+7pz2HWKowzVaY4PfE74vXRuqZGTw/eJ4yeg7x/OJ5xuNSz1bg74K/D2Zd/P39U9yH2QQEGoBgAa8t0ywOka1gMEBEuYLZiE97d5CDH7iL0/+aIyU3/K9ImXwwVvVU0KIMMhFlH4MBIsoV5F2UKVNaGnkEypJXXMXT5UlAgEPL7OOx8rV3tDgWKq06F2rVIImIsoc5A0SUKzjBz5gxU+UBNPgtTOqXyCvujnnk8sMEOeufINHxeWTNwikMBIisGGcGiMgs1q1bJ4MHD06xzo/ciylTpmRY7IiIrAODASKymmJHRKQPBgNEREQGx0ZFREREBsdggIiIyOAYDBARERkcgwEiIiKDYzBARERkcAwGiIiIDI7BABERkcExGCAiIjI4BgNEREQGx2CAiIjI4BgMEBERGRyDASIiIoNjMEBERGRwDAaIiIgMjsEAERGRwTEYICIiMjgGA0RERAbHYICIiMjgGAwQEREZHIMBIiIig2MwQEREJMb2/2fBnR6irIbkAAAAAElFTkSuQmCC", + "image/png": "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", "text/plain": [ "
" ] diff --git a/examples/x07_exclusion/case_gen.ipynb b/examples/x07_exclusion/case_gen.ipynb new file mode 100644 index 00000000..3aefe73b --- /dev/null +++ b/examples/x07_exclusion/case_gen.ipynb @@ -0,0 +1,761 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "4617a6f4", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path # optional, for nice path specifications\n", + "\n", + "import pprint as pp # optional, for nice printing\n", + "import numpy as np # numerics library\n", + "import matplotlib.pyplot as plt # plotting capabilities\n", + "import pandas as pd\n", + "\n", + "import ard # technically we only really need this\n", + "from ard.utils.io import load_yaml # we grab a yaml loader here\n", + "from ard.api import set_up_ard_model # the secret sauce\n", + "from ard.viz.layout import plot_layout # a plotting tool!\n", + "\n", + "import openmdao.api as om # for N2 diagrams from the OpenMDAO backend\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "30567b24", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding top_level\n", + "Adding gridfarm\n", + "Adding boundary\n", + "Adding exclusions\n", + "Adding spacing_constraint\n" + ] + } + ], + "source": [ + "# load input\n", + "path_inputs = Path.cwd().absolute() / \"inputs\"\n", + "input_dict = load_yaml(path_inputs / \"ard_frankenstein.yaml\")\n", + "\n", + "# create and setup system\n", + "prob = set_up_ard_model(input_dict=input_dict, root_data_path=path_inputs)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2f906546", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Problem: problem\n", + "Driver: DOEDriver\n", + " success : True\n", + " iterations : 50000\n", + " runtime : 5.7779E+01 s\n", + " model_evals : 50000\n", + " model_time : 2.1103E+01 s\n", + " deriv_evals : 0\n", + " deriv_time : 0.0000E+00 s\n", + " exit_status : SUCCESS" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "prob.run_driver()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "de4c7484", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
case_idangle_orientationspacing_primaryangle_skewspacing_secondarymax_boundary_distanceboundary_satisfyingmax_exclusion_distanceexclusion_satisfyingturbine_spacing_satisfyingx_turbinesy_turbines
0rank0:DOEDriver_LatinHypercube|043.1174207.362764-29.7999766.251130628.199667False-29.306325TrueTrue[-535.1264437847808, 119.08784828972239, 773.3...[436.5933692140518, 1135.2760989250046, 1833.9...
1rank0:DOEDriver_LatinHypercube|163.49873413.79977841.08056712.3178182213.367716False-232.506532TrueTrue[-40.337800630846004, 1565.1309430943984, 3170...[2175.0193952812915, 2975.5208737514145, 3776....
2rank0:DOEDriver_LatinHypercube|2153.92322114.229969-44.9728524.2368721085.654123False-11.039665TrueTrue[470.0583414137956, 1283.2266821104065, 2096.3...[3317.5208095966454, 1655.9335593629257, -5.65...
3rank0:DOEDriver_LatinHypercube|3119.0633377.879951-22.6360184.688219339.533492False-118.337343TrueTrue[208.90107421518348, 1104.3063617722169, 1999....[2073.371868789938, 1575.7458759912429, 1078.1...
4rank0:DOEDriver_LatinHypercube|4172.48310210.4737151.6008907.814066728.462950False-177.667193TrueTrue[1863.079161172218, 2041.1995059544563, 2219.3...[2374.185913574902, 1024.304005544126, -325.57...
.......................................
49995rank0:DOEDriver_LatinHypercube|49995127.8650853.8279957.4916566.451292128.273109False130.060015FalseFalse[1239.367170679271, 1632.2327025869909, 2025.0...[1819.4121745429509, 1513.959007204571, 1208.5...
49996rank0:DOEDriver_LatinHypercube|49996102.4637143.6144251.45133312.500468469.784583False122.857292FalseFalse[962.5098669716621, 1421.3114959891698, 1880.1...[2598.847210119348, 2497.4381355499627, 2396.0...
49997rank0:DOEDriver_LatinHypercube|49997177.9473145.33434114.7553559.235750697.437087False150.384131FalseTrue[2216.751525033408, 2241.5903553373555, 2266.4...[1339.564793221956, 646.545390882799, -46.4740...
49998rank0:DOEDriver_LatinHypercube|4999870.8926806.37882614.21070211.884311785.000504False-232.506532TrueTrue[110.78720674561703, 894.3489213793423, 1677.9...[2236.0292577233186, 2507.473941144228, 2778.9...
49999rank0:DOEDriver_LatinHypercube|49999147.82354110.840745-4.46086511.3049041191.983639False-232.506532TrueTrue[1462.7587405128606, 2213.2495733581154, 2963....[2992.074738864023, 1799.2288935474107, 606.38...
\n", + "

50000 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " case_id angle_orientation \\\n", + "0 rank0:DOEDriver_LatinHypercube|0 43.117420 \n", + "1 rank0:DOEDriver_LatinHypercube|1 63.498734 \n", + "2 rank0:DOEDriver_LatinHypercube|2 153.923221 \n", + "3 rank0:DOEDriver_LatinHypercube|3 119.063337 \n", + "4 rank0:DOEDriver_LatinHypercube|4 172.483102 \n", + "... ... ... \n", + "49995 rank0:DOEDriver_LatinHypercube|49995 127.865085 \n", + "49996 rank0:DOEDriver_LatinHypercube|49996 102.463714 \n", + "49997 rank0:DOEDriver_LatinHypercube|49997 177.947314 \n", + "49998 rank0:DOEDriver_LatinHypercube|49998 70.892680 \n", + "49999 rank0:DOEDriver_LatinHypercube|49999 147.823541 \n", + "\n", + " spacing_primary angle_skew spacing_secondary max_boundary_distance \\\n", + "0 7.362764 -29.799976 6.251130 628.199667 \n", + "1 13.799778 41.080567 12.317818 2213.367716 \n", + "2 14.229969 -44.972852 4.236872 1085.654123 \n", + "3 7.879951 -22.636018 4.688219 339.533492 \n", + "4 10.473715 1.600890 7.814066 728.462950 \n", + "... ... ... ... ... \n", + "49995 3.827995 7.491656 6.451292 128.273109 \n", + "49996 3.614425 1.451333 12.500468 469.784583 \n", + "49997 5.334341 14.755355 9.235750 697.437087 \n", + "49998 6.378826 14.210702 11.884311 785.000504 \n", + "49999 10.840745 -4.460865 11.304904 1191.983639 \n", + "\n", + " boundary_satisfying max_exclusion_distance exclusion_satisfying \\\n", + "0 False -29.306325 True \n", + "1 False -232.506532 True \n", + "2 False -11.039665 True \n", + "3 False -118.337343 True \n", + "4 False -177.667193 True \n", + "... ... ... ... \n", + "49995 False 130.060015 False \n", + "49996 False 122.857292 False \n", + "49997 False 150.384131 False \n", + "49998 False -232.506532 True \n", + "49999 False -232.506532 True \n", + "\n", + " turbine_spacing_satisfying \\\n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", + "... ... \n", + "49995 False \n", + "49996 False \n", + "49997 True \n", + "49998 True \n", + "49999 True \n", + "\n", + " x_turbines \\\n", + "0 [-535.1264437847808, 119.08784828972239, 773.3... \n", + "1 [-40.337800630846004, 1565.1309430943984, 3170... \n", + "2 [470.0583414137956, 1283.2266821104065, 2096.3... \n", + "3 [208.90107421518348, 1104.3063617722169, 1999.... \n", + "4 [1863.079161172218, 2041.1995059544563, 2219.3... \n", + "... ... \n", + "49995 [1239.367170679271, 1632.2327025869909, 2025.0... \n", + "49996 [962.5098669716621, 1421.3114959891698, 1880.1... \n", + "49997 [2216.751525033408, 2241.5903553373555, 2266.4... \n", + "49998 [110.78720674561703, 894.3489213793423, 1677.9... \n", + "49999 [1462.7587405128606, 2213.2495733581154, 2963.... \n", + "\n", + " y_turbines \n", + "0 [436.5933692140518, 1135.2760989250046, 1833.9... \n", + "1 [2175.0193952812915, 2975.5208737514145, 3776.... \n", + "2 [3317.5208095966454, 1655.9335593629257, -5.65... \n", + "3 [2073.371868789938, 1575.7458759912429, 1078.1... \n", + "4 [2374.185913574902, 1024.304005544126, -325.57... \n", + "... ... \n", + "49995 [1819.4121745429509, 1513.959007204571, 1208.5... \n", + "49996 [2598.847210119348, 2497.4381355499627, 2396.0... \n", + "49997 [1339.564793221956, 646.545390882799, -46.4740... \n", + "49998 [2236.0292577233186, 2507.473941144228, 2778.9... \n", + "49999 [2992.074738864023, 1799.2288935474107, 606.38... \n", + "\n", + "[50000 rows x 12 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Access the recorder data\n", + "case_reader = om.CaseReader(prob.get_outputs_dir() / \"cases.sql\")\n", + "\n", + "# Get all driver cases\n", + "driver_cases = case_reader.list_cases(\"driver\", out_stream=None)\n", + "\n", + "# Extract data from all cases\n", + "results = []\n", + "for index_case, case_id in enumerate(driver_cases):\n", + "\n", + " case = case_reader.get_case(case_id)\n", + "\n", + " result = {\n", + " \"case_id\": case_id,\n", + " \"angle_orientation\": float(case.get_val(\"angle_orientation\")[0]),\n", + " \"spacing_primary\": float(case.get_val(\"spacing_primary\")[0]),\n", + " \"angle_skew\": float(case.get_val(\"angle_skew\")[0]),\n", + " \"spacing_secondary\": float(case.get_val(\"spacing_secondary\")[0]),\n", + " \"max_boundary_distance\": float(np.max(case.get_val(\"boundary_distances\"))),\n", + " \"boundary_satisfying\": np.all(np.max(case.get_val(\"boundary_distances\")) <= 0.0),\n", + " \"max_exclusion_distance\": float(np.max(case.get_val(\"exclusion_distances\"))),\n", + " \"exclusion_satisfying\": np.all(np.max(case.get_val(\"exclusion_distances\")) <= 0.0),\n", + " \"turbine_spacing_satisfying\": np.all(case.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\") >= 0.552),\n", + " \"x_turbines\": case.get_val(\"x_turbines\"),\n", + " \"y_turbines\": case.get_val(\"y_turbines\"),\n", + " }\n", + " results.append(result)\n", + "\n", + "\n", + "\n", + "results = pd.DataFrame(results)\n", + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b8a07f8f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
case_idangle_orientationspacing_primaryangle_skewspacing_secondarymax_boundary_distanceboundary_satisfyingmax_exclusion_distanceexclusion_satisfyingturbine_spacing_satisfyingx_turbinesy_turbines
98rank0:DOEDriver_LatinHypercube|984.3223426.33117417.9025564.165854-25.262635True176.099645FalseTrue[441.51967987703097, 503.55116224157007, 565.5...[314.1141575334741, 1134.8259136079837, 1955.5...
102rank0:DOEDriver_LatinHypercube|102103.5199705.0080058.5206146.657907-0.916619True96.351983FalseTrue[725.8131015447784, 1358.8123878103113, 1991.8...[1882.9916881909248, 1730.7886434496586, 1578....
643rank0:DOEDriver_LatinHypercube|64317.4609494.99025612.8858284.162992-194.401586True145.334875FalseTrue[356.6278586693903, 551.2840041949662, 745.940...[581.2103615891912, 1200.0511573938718, 1818.8...
905rank0:DOEDriver_LatinHypercube|90599.7535984.7472965.0238136.729700-134.898735True97.025110FalseTrue[646.1653027692987, 1254.3932226800246, 1862.6...[1873.2995714739131, 1768.7475745644056, 1664....
1211rank0:DOEDriver_LatinHypercube|121194.4979604.246709-1.7808684.424870-88.911211True60.245027FalseTrue[507.2965264437157, 1057.668412925124, 1608.04...[1537.720726755957, 1494.425238518314, 1451.12...
.......................................
49580rank0:DOEDriver_LatinHypercube|495805.9990557.446525-12.5548724.214911-14.436132True72.146455FalseTrue[371.5230880114243, 472.695799938102, 573.8685...[-107.27690369887091, 855.4699589051128, 1818....
49601rank0:DOEDriver_LatinHypercube|4960128.1620436.080311-31.4899683.901676-14.640468True106.502169FalseTrue[63.51263663021041, 436.57429941032126, 809.63...[188.16663844106597, 885.0318289604253, 1581.8...
49714rank0:DOEDriver_LatinHypercube|49714104.9080124.7802468.8964104.750243-40.951536True125.182784FalseTrue[682.1525448032633, 1282.6672432652922, 1883.1...[1651.312904270587, 1491.4383758073525, 1331.5...
49828rank0:DOEDriver_LatinHypercube|4982897.4327394.7679364.6017165.759782-100.128158True52.984766FalseTrue[572.3868605058601, 1187.0102990466494, 1801.6...[1734.4277066401223, 1654.2449074880121, 1574....
49857rank0:DOEDriver_LatinHypercube|4985773.3227295.49166932.2836353.595511-145.756898True147.941201FalseTrue[495.2403309799397, 1179.1273365021418, 1863.0...[1247.1819308457302, 1452.0621917860651, 1656....
\n", + "

343 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " case_id angle_orientation \\\n", + "98 rank0:DOEDriver_LatinHypercube|98 4.322342 \n", + "102 rank0:DOEDriver_LatinHypercube|102 103.519970 \n", + "643 rank0:DOEDriver_LatinHypercube|643 17.460949 \n", + "905 rank0:DOEDriver_LatinHypercube|905 99.753598 \n", + "1211 rank0:DOEDriver_LatinHypercube|1211 94.497960 \n", + "... ... ... \n", + "49580 rank0:DOEDriver_LatinHypercube|49580 5.999055 \n", + "49601 rank0:DOEDriver_LatinHypercube|49601 28.162043 \n", + "49714 rank0:DOEDriver_LatinHypercube|49714 104.908012 \n", + "49828 rank0:DOEDriver_LatinHypercube|49828 97.432739 \n", + "49857 rank0:DOEDriver_LatinHypercube|49857 73.322729 \n", + "\n", + " spacing_primary angle_skew spacing_secondary max_boundary_distance \\\n", + "98 6.331174 17.902556 4.165854 -25.262635 \n", + "102 5.008005 8.520614 6.657907 -0.916619 \n", + "643 4.990256 12.885828 4.162992 -194.401586 \n", + "905 4.747296 5.023813 6.729700 -134.898735 \n", + "1211 4.246709 -1.780868 4.424870 -88.911211 \n", + "... ... ... ... ... \n", + "49580 7.446525 -12.554872 4.214911 -14.436132 \n", + "49601 6.080311 -31.489968 3.901676 -14.640468 \n", + "49714 4.780246 8.896410 4.750243 -40.951536 \n", + "49828 4.767936 4.601716 5.759782 -100.128158 \n", + "49857 5.491669 32.283635 3.595511 -145.756898 \n", + "\n", + " boundary_satisfying max_exclusion_distance exclusion_satisfying \\\n", + "98 True 176.099645 False \n", + "102 True 96.351983 False \n", + "643 True 145.334875 False \n", + "905 True 97.025110 False \n", + "1211 True 60.245027 False \n", + "... ... ... ... \n", + "49580 True 72.146455 False \n", + "49601 True 106.502169 False \n", + "49714 True 125.182784 False \n", + "49828 True 52.984766 False \n", + "49857 True 147.941201 False \n", + "\n", + " turbine_spacing_satisfying \\\n", + "98 True \n", + "102 True \n", + "643 True \n", + "905 True \n", + "1211 True \n", + "... ... \n", + "49580 True \n", + "49601 True \n", + "49714 True \n", + "49828 True \n", + "49857 True \n", + "\n", + " x_turbines \\\n", + "98 [441.51967987703097, 503.55116224157007, 565.5... \n", + "102 [725.8131015447784, 1358.8123878103113, 1991.8... \n", + "643 [356.6278586693903, 551.2840041949662, 745.940... \n", + "905 [646.1653027692987, 1254.3932226800246, 1862.6... \n", + "1211 [507.2965264437157, 1057.668412925124, 1608.04... \n", + "... ... \n", + "49580 [371.5230880114243, 472.695799938102, 573.8685... \n", + "49601 [63.51263663021041, 436.57429941032126, 809.63... \n", + "49714 [682.1525448032633, 1282.6672432652922, 1883.1... \n", + "49828 [572.3868605058601, 1187.0102990466494, 1801.6... \n", + "49857 [495.2403309799397, 1179.1273365021418, 1863.0... \n", + "\n", + " y_turbines \n", + "98 [314.1141575334741, 1134.8259136079837, 1955.5... \n", + "102 [1882.9916881909248, 1730.7886434496586, 1578.... \n", + "643 [581.2103615891912, 1200.0511573938718, 1818.8... \n", + "905 [1873.2995714739131, 1768.7475745644056, 1664.... \n", + "1211 [1537.720726755957, 1494.425238518314, 1451.12... \n", + "... ... \n", + "49580 [-107.27690369887091, 855.4699589051128, 1818.... \n", + "49601 [188.16663844106597, 885.0318289604253, 1581.8... \n", + "49714 [1651.312904270587, 1491.4383758073525, 1331.5... \n", + "49828 [1734.4277066401223, 1654.2449074880121, 1574.... \n", + "49857 [1247.1819308457302, 1452.0621917860651, 1656.... \n", + "\n", + "[343 rows x 12 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[results.boundary_satisfying & results.turbine_spacing_satisfying]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "49d6fe3a", + "metadata": {}, + "outputs": [], + "source": [ + "results.to_csv(\"structured_layout_samples.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d4a97e38", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ard-dev-env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/x07_exclusion/inputs/ard_frankenstein.yaml b/examples/x07_exclusion/inputs/ard_frankenstein.yaml new file mode 100644 index 00000000..fdad384c --- /dev/null +++ b/examples/x07_exclusion/inputs/ard_frankenstein.yaml @@ -0,0 +1,191 @@ +modeling_options: &modeling_options + windIO_plant: !include windio.yaml + heterogeneous_map: + x: [-100.0, -100.0, 1500.0, 1500.0, 1030.39] + y: [-100.0, 1500.0, 1500.0, -100.0, 919.56] + speed_multipliers: [ + [1.0, 1.0, 1.0, 1.0, 1.125], + [1.0, 1.0, 1.0, 1.0, 1.125], + [1.0, 1.0, 1.0, 1.0, 1.125], + ] + wind_directions: [0.0, 157.5, 270.0] + wind_speeds: [6.0, 7.5, 12.0] + interp_method: linear + layout: + type: gridfarm + N_turbines: 7 + N_substations: 1 + x0: 1030.3866383200511 # m + y0: 919.5612218388537 # m + angle_orientation: 0.0 + spacing_primary: 7.0 + angle_skew: 0.0 + spacing_secondary: 7.0 + aero: + return_turbine_output: True + floris: + peak_shaving_fraction: 0.2 + peak_shaving_TI_threshold: 0.0 + collection: + max_turbines_per_string: 8 + solver_name: highs + solver_options: + time_limit: 60 + mip_gap: 0.02 + model_options: + topology: radial # radial, branched + feeder_route: segmented + feeder_limit: unlimited + offshore: false + floating: false + costs: + rated_power: 3400000.0 # W + num_blades: 3 + rated_thrust_N: 645645.83964671 + gust_velocity_m_per_s: 52.5 + blade_surface_area: 69.7974979 + tower_mass: 620.4407337521 + nacelle_mass: 101.98582836439 + hub_mass: 8.38407517646 + blade_mass: 14.56341339641 + foundation_height: 0.0 + commissioning_cost_kW: 44.0 + decommissioning_cost_kW: 58.0 + trench_len_to_substation_km: 50.0 + distance_to_interconnect_mi: 4.97096954 + interconnect_voltage_kV: 130.0 + tcc_per_kW: 1300.00 # (USD/kW) + opex_per_kW: 44.00 # (USD/kWh) + +system: + type: group + systems: + gridfarm: + type: component + module: ard.layout.gridfarm + object: GridFarmLayout + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + # aepFLORIS: + # type: component + # module: ard.farm_aero.floris + # object: FLORISAEP + # promotes: ["x_turbines", "y_turbines", "AEP_farm"] + # kwargs: + # modeling_options: *modeling_options + # data_path: + # case_title: "default" + boundary: + type: component + module: ard.layout.boundary + object: FarmBoundaryDistancePolygon + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + exclusions: + type: component + module: ard.layout.exclusions + object: FarmExclusionDistancePolygon + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + # collection: + # type: component + # module: ard.collection.optiwindnet_wrap + # object: OptiwindnetCollection + # promotes: ["*"] + # kwargs: + # modeling_options: *modeling_options + spacing_constraint: + type: component + module: ard.layout.spacing + object: TurbineSpacing + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + # tcc: + # type: component + # module: ard.cost.wisdem_wrap + # object: TurbineCapitalCosts + # promotes: [ + # "turbine_number", + # "machine_rating", + # "tcc_per_kW", + # "offset_tcc_per_kW", + # ] + # landbosse: + # type: component + # module: ard.cost.wisdem_wrap + # object: LandBOSSEWithSpacingApproximations + # promotes: [ + # "total_length_cables", + # ] + # kwargs: + # modeling_options: *modeling_options + # opex: + # type: component + # module: ard.cost.wisdem_wrap + # object: OperatingExpenses + # promotes: [ + # "turbine_number", + # "machine_rating", + # "opex_per_kW" + # ] + # financese: + # type: component + # module: ard.cost.wisdem_wrap + # object: FinanceSEGroup + # promotes: [ + # "turbine_number", + # "machine_rating", + # "tcc_per_kW", + # "offset_tcc_per_kW", + # "opex_per_kW", + # ] + # kwargs: + # modeling_options: *modeling_options + # connections: + # - ["AEP_farm", "financese.plant_aep_in"] + # - ["landbosse.total_capex_kW", "financese.bos_per_kW"] + +analysis_options: + driver: + # design-of-experiments + name: DOEDriver + generator: + name: LatinHypercubeGenerator + args: + samples: 50000 + design_variables: + angle_orientation: + lower: 0.0 + upper: 180.0 + angle_skew: + lower: -45.0 + upper: 45.0 + spacing_primary: + lower: 2.0 + upper: 15.0 + spacing_secondary: + lower: 2.0 + upper: 15.0 + constraints: + boundary_distances: + units: km + upper: 0.0 + scaler: 2.0 + exclusion_distances: + units: km + upper: 0.0 + scaler: 2.0 + spacing_constraint.turbine_spacing: + units: km + lower: 0.552 + objectives: + x_turbines: + scaler: 1.0 + y_turbines: + scaler: 1.0 + recorder: + filepath: cases.sql From 8baef3e3f42d568fd290b9a46f6ce9e49c54dd17 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Fri, 19 Dec 2025 15:13:18 -0500 Subject: [PATCH 16/17] wip eagle component --- ard/eco/eagle_density.py | 84 + examples/x07_exclusion/inputs/ard_system.yaml | 18 +- .../x07_exclusion/optimization_demo.ipynb | 3215 +---------------- 3 files changed, 138 insertions(+), 3179 deletions(-) create mode 100644 ard/eco/eagle_density.py diff --git a/ard/eco/eagle_density.py b/ard/eco/eagle_density.py new file mode 100644 index 00000000..3cd45e9f --- /dev/null +++ b/ard/eco/eagle_density.py @@ -0,0 +1,84 @@ +import numpy as np + +import openmdao.api as om + + +class EagleDensityFunction(om.ExplicitComponent): + """ + _summary_ + + _extended_summary_ + + Options + ------- + modeling_options : dict + a modeling options dictionary (inherited from + `templates.LanduseTemplate`) + + Inputs + ------ + x_turbines : np.ndarray + a 1-D numpy array that represents that x (i.e. Easting) coordinate of + the location of each of the turbines in the farm in meters + y_turbines : np.ndarray + a 1-D numpy array that represents that y (i.e. Northing) coordinate of + the location of each of the turbines in the farm in meters + + Outputs + ------- + area_tight : float + the area in square kilometers that the farm occupies based on the + circumscribing geometry with a specified (default zero) layback buffer + (inherited from `templates.LayoutTemplate`) + """ + + def initialize(self): + """Initialization of OM component.""" + self.options.declare("modeling_options") + + def setup(self): + """Setup of OM component.""" + + # load modeling options and turbine count + modeling_options = self.modeling_options = self.options["modeling_options"] + self.windIO = self.modeling_options["windIO_plant"] + self.N_turbines = modeling_options["layout"]["N_turbines"] + + # self.eagle_density_function = lambda x, y: ??? + + # add the full layout inputs + self.add_input( + "x_turbines", + np.zeros((self.N_turbines,)), + units="m", + desc="turbine location in x-direction", + ) + self.add_input( + "y_turbines", + np.zeros((self.N_turbines,)), + units="m", + desc="turbine location in y-direction", + ) + + # add outputs that are universal + self.add_output( + "eagle_normalized_density", + np.zeros((self.N_turbines,)), + units="unitless", + desc="normalized eagle presence density", + ) + + + def compute(self, inputs, outputs): + """ + Computation for the OM component. + """ + + x_turbines = inputs["x_turbines"] # m + y_turbines = inputs["y_turbines"] # m + + raise NotImplementedError( + "@Eliot, you need to implement this!!!" + ) + + outputs["eagle_normalized_density"] = y # on [0, 1] diff --git a/examples/x07_exclusion/inputs/ard_system.yaml b/examples/x07_exclusion/inputs/ard_system.yaml index a1eee9f3..cd6307d1 100644 --- a/examples/x07_exclusion/inputs/ard_system.yaml +++ b/examples/x07_exclusion/inputs/ard_system.yaml @@ -91,6 +91,13 @@ system: promotes: ["*"] kwargs: modeling_options: *modeling_options + eagles: + type: component + module: ard.eco.eagle_density + object: EagleDensityFunction + promotes: ["*"] + kwargs: + modeling_options: *modeling_options tcc: type: component module: ard.cost.wisdem_wrap @@ -163,13 +170,16 @@ analysis_options: units: km upper: 0.0 scaler: 2.0 - exclusion_distances: - units: km - upper: 0.0 - scaler: 2.0 + # exclusion_distances: + # units: km + # upper: 0.0 + # scaler: 2.0 spacing_constraint.turbine_spacing: units: km lower: 0.552 + eagle_normalized_density: + units: unitless + upper: 0.8 objectives: financese.lcoe: scaler: 1.0 diff --git a/examples/x07_exclusion/optimization_demo.ipynb b/examples/x07_exclusion/optimization_demo.ipynb index cfb2179b..17b59695 100644 --- a/examples/x07_exclusion/optimization_demo.ipynb +++ b/examples/x07_exclusion/optimization_demo.ipynb @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "d75b4457", "metadata": {}, "outputs": [], @@ -35,43 +35,12 @@ "%matplotlib inline" ] }, - { - "cell_type": "markdown", - "id": "cf2ceef4", - "metadata": {}, - "source": [] - }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "29850609", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adding top_level\n", - "Adding aepFLORIS\n", - "Adding boundary\n", - "Adding exclusions\n", - "Adding collection\n", - "Adding spacing_constraint\n", - "Adding tcc\n", - "Adding landbosse\n", - "Adding opex\n", - "Adding financese\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/group.py:368: PromotionWarning: : Setting input defaults for input 'x_turbines' which override previously set defaults for ['auto', 'prom', 'units'].\n", - "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/group.py:368: PromotionWarning: : Setting input defaults for input 'y_turbines' which override previously set defaults for ['auto', 'prom', 'units'].\n" - ] - } - ], + "outputs": [], "source": [ "# load input\n", "path_inputs = Path.cwd().absolute() / \"inputs\"\n", @@ -98,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "aa48878e", "metadata": {}, "outputs": [], @@ -110,28 +79,38 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "id": "b74f9d45", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "RESULTS:\n", - "\n", - "{'AEP_val': 122.7865872459762,\n", - " 'BOS_val': 17.92663778128289,\n", - " 'CapEx_val': 30.939999999999998,\n", - " 'LCOE_val': 38.37713824683762,\n", - " 'OpEx_val': 1.0472000000000001,\n", - " 'coll_length': 3.3736578876389562,\n", - " 'turbine_spacing': 0.4338766778705673}\n", - "\n", - "\n", - "\n" + "ename": "NotImplementedError", + "evalue": "'eagles' : Error calling compute(), @Eliot, you need to implement this!!!", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNotImplementedError\u001b[39m Traceback (most recent call last)", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/system.py:2992\u001b[39m, in \u001b[36mSystem._call_user_function\u001b[39m\u001b[34m(self, fname, protect_inputs, protect_outputs, protect_residuals)\u001b[39m\n\u001b[32m 2991\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m2992\u001b[39m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[32m 2993\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/explicitcomponent.py:302\u001b[39m, in \u001b[36mExplicitComponent._compute_wrapper\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 301\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m302\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcompute\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_inputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_outputs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/codes/Ard/ard/eco/eagle_density.py:80\u001b[39m, in \u001b[36mEagleDensityFunction.compute\u001b[39m\u001b[34m(self, inputs, outputs)\u001b[39m\n\u001b[32m 78\u001b[39m y_turbines = inputs[\u001b[33m\"\u001b[39m\u001b[33my_turbines\u001b[39m\u001b[33m\"\u001b[39m] \u001b[38;5;66;03m# m\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m80\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNotImplementedError\u001b[39;00m(\n\u001b[32m 81\u001b[39m \u001b[33m\"\u001b[39m\u001b[33m@Eliot, you need to implement this!!!\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 82\u001b[39m )\n\u001b[32m 84\u001b[39m outputs[\u001b[33m\"\u001b[39m\u001b[33meagle_normalized_density\u001b[39m\u001b[33m\"\u001b[39m] = y\n", + "\u001b[31mNotImplementedError\u001b[39m: @Eliot, you need to implement this!!!", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[31mNotImplementedError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[6]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# run the model\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[43mprob\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrun_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m# collapse the test result data\u001b[39;00m\n\u001b[32m 5\u001b[39m test_data = {\n\u001b[32m 6\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mAEP_val\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28mfloat\u001b[39m(prob.get_val(\u001b[33m\"\u001b[39m\u001b[33mAEP_farm\u001b[39m\u001b[33m\"\u001b[39m, units=\u001b[33m\"\u001b[39m\u001b[33mGW*h\u001b[39m\u001b[33m\"\u001b[39m)[\u001b[32m0\u001b[39m]),\n\u001b[32m 7\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mCapEx_val\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28mfloat\u001b[39m(prob.get_val(\u001b[33m\"\u001b[39m\u001b[33mtcc.tcc\u001b[39m\u001b[33m\"\u001b[39m, units=\u001b[33m\"\u001b[39m\u001b[33mMUSD\u001b[39m\u001b[33m\"\u001b[39m)[\u001b[32m0\u001b[39m]),\n\u001b[32m (...)\u001b[39m\u001b[32m 14\u001b[39m ),\n\u001b[32m 15\u001b[39m }\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/problem.py:669\u001b[39m, in \u001b[36mProblem.run_model\u001b[39m\u001b[34m(self, case_prefix, reset_iter_counts)\u001b[39m\n\u001b[32m 666\u001b[39m record_model_options(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28mself\u001b[39m._run_counter)\n\u001b[32m 668\u001b[39m \u001b[38;5;28mself\u001b[39m.model._clear_iprint()\n\u001b[32m--> \u001b[39m\u001b[32m669\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrun_solve_nonlinear\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 670\u001b[39m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[32m 671\u001b[39m \u001b[38;5;28mself\u001b[39m._recording_iter.prefix = old_prefix\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/system.py:5151\u001b[39m, in \u001b[36mSystem.run_solve_nonlinear\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 5145\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 5146\u001b[39m \u001b[33;03mCompute outputs.\u001b[39;00m\n\u001b[32m 5147\u001b[39m \n\u001b[32m 5148\u001b[39m \u001b[33;03mThis calls _solve_nonlinear, but with the model assumed to be in an unscaled state.\u001b[39;00m\n\u001b[32m 5149\u001b[39m \u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 5150\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m._scaled_context_all():\n\u001b[32m-> \u001b[39m\u001b[32m5151\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_solve_nonlinear\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/group.py:3846\u001b[39m, in \u001b[36mGroup._solve_nonlinear\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 3844\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m Recording(name + \u001b[33m'\u001b[39m\u001b[33m._solve_nonlinear\u001b[39m\u001b[33m'\u001b[39m, \u001b[38;5;28mself\u001b[39m.iter_count, \u001b[38;5;28mself\u001b[39m):\n\u001b[32m 3845\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m._relevance.active(\u001b[38;5;28mself\u001b[39m._nonlinear_solver.use_relevance()):\n\u001b[32m-> \u001b[39m\u001b[32m3846\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_nonlinear_solver\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_solve_with_cache_check\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py:26\u001b[39m, in \u001b[36mNonlinearRunOnce._solve_with_cache_check\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 25\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_solve_with_cache_check\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[32m---> \u001b[39m\u001b[32m26\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43msolve\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/solvers/nonlinear/nonlinear_runonce.py:45\u001b[39m, in \u001b[36mNonlinearRunOnce.solve\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 41\u001b[39m subsys._solve_nonlinear()\n\u001b[32m 43\u001b[39m \u001b[38;5;66;03m# If this is not a parallel group, transfer for each subsystem just prior to running it.\u001b[39;00m\n\u001b[32m 44\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m---> \u001b[39m\u001b[32m45\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_gs_iter\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 47\u001b[39m rec.abs = \u001b[32m0.0\u001b[39m\n\u001b[32m 48\u001b[39m rec.rel = \u001b[32m0.0\u001b[39m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/solvers/solver.py:937\u001b[39m, in \u001b[36mNonlinearSolver._gs_iter\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 935\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m subsys._is_local:\n\u001b[32m 936\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m937\u001b[39m \u001b[43msubsys\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_solve_nonlinear\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 938\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m AnalysisError \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[32m 939\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[33m'\u001b[39m\u001b[33mreraise_child_analysiserror\u001b[39m\u001b[33m'\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.options \u001b[38;5;129;01mor\u001b[39;00m \\\n\u001b[32m 940\u001b[39m \u001b[38;5;28mself\u001b[39m.options[\u001b[33m'\u001b[39m\u001b[33mreraise_child_analysiserror\u001b[39m\u001b[33m'\u001b[39m]:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/explicitcomponent.py:328\u001b[39m, in \u001b[36mExplicitComponent._solve_nonlinear\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 326\u001b[39m \u001b[38;5;28mself\u001b[39m._residuals.set_val(\u001b[32m0.0\u001b[39m)\n\u001b[32m 327\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m._unscaled_context(outputs=[\u001b[38;5;28mself\u001b[39m._outputs]):\n\u001b[32m--> \u001b[39m\u001b[32m328\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_compute_wrapper\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/explicitcomponent.py:282\u001b[39m, in \u001b[36mExplicitComponent._compute_wrapper\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 278\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_compute_wrapper\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[32m 279\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 280\u001b[39m \u001b[33;03m Call compute based on the value of the \"run_root_only\" option.\u001b[39;00m\n\u001b[32m 281\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m282\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m._call_user_function(\u001b[33m'\u001b[39m\u001b[33mcompute\u001b[39m\u001b[33m'\u001b[39m):\n\u001b[32m 283\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._run_root_only():\n\u001b[32m 284\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.comm.rank == \u001b[32m0\u001b[39m:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/contextlib.py:158\u001b[39m, in \u001b[36m_GeneratorContextManager.__exit__\u001b[39m\u001b[34m(self, typ, value, traceback)\u001b[39m\n\u001b[32m 156\u001b[39m value = typ()\n\u001b[32m 157\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m158\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mgen\u001b[49m\u001b[43m.\u001b[49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 159\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 160\u001b[39m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[32m 161\u001b[39m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[32m 162\u001b[39m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[32m 163\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/system.py:2998\u001b[39m, in \u001b[36mSystem._call_user_function\u001b[39m\u001b[34m(self, fname, protect_inputs, protect_outputs, protect_residuals)\u001b[39m\n\u001b[32m 2996\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[32m 2997\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m2998\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m err_type(\n\u001b[32m 2999\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m.msginfo\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: Error calling \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfname\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m(), \u001b[39m\u001b[38;5;132;01m{\u001b[39;00merr\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m).with_traceback(trace)\n\u001b[32m 3000\u001b[39m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[32m 3001\u001b[39m \u001b[38;5;28mself\u001b[39m._inputs.read_only = \u001b[38;5;28;01mFalse\u001b[39;00m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/system.py:2992\u001b[39m, in \u001b[36mSystem._call_user_function\u001b[39m\u001b[34m(self, fname, protect_inputs, protect_outputs, protect_residuals)\u001b[39m\n\u001b[32m 2989\u001b[39m \u001b[38;5;28mself\u001b[39m._residuals.read_only = protect_residuals\n\u001b[32m 2991\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m2992\u001b[39m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[32m 2993\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[32m 2994\u001b[39m err_type, err, trace = sys.exc_info()\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/explicitcomponent.py:302\u001b[39m, in \u001b[36mExplicitComponent._compute_wrapper\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 299\u001b[39m \u001b[38;5;28mself\u001b[39m.compute(\u001b[38;5;28mself\u001b[39m._inputs, \u001b[38;5;28mself\u001b[39m._outputs,\n\u001b[32m 300\u001b[39m \u001b[38;5;28mself\u001b[39m._discrete_inputs, \u001b[38;5;28mself\u001b[39m._discrete_outputs)\n\u001b[32m 301\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m302\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcompute\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_inputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_outputs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/codes/Ard/ard/eco/eagle_density.py:80\u001b[39m, in \u001b[36mEagleDensityFunction.compute\u001b[39m\u001b[34m(self, inputs, outputs)\u001b[39m\n\u001b[32m 77\u001b[39m x_turbines = inputs[\u001b[33m\"\u001b[39m\u001b[33mx_turbines\u001b[39m\u001b[33m\"\u001b[39m] \u001b[38;5;66;03m# m\u001b[39;00m\n\u001b[32m 78\u001b[39m y_turbines = inputs[\u001b[33m\"\u001b[39m\u001b[33my_turbines\u001b[39m\u001b[33m\"\u001b[39m] \u001b[38;5;66;03m# m\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m80\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNotImplementedError\u001b[39;00m(\n\u001b[32m 81\u001b[39m \u001b[33m\"\u001b[39m\u001b[33m@Eliot, you need to implement this!!!\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 82\u001b[39m )\n\u001b[32m 84\u001b[39m outputs[\u001b[33m\"\u001b[39m\u001b[33meagle_normalized_density\u001b[39m\u001b[33m\"\u001b[39m] = y\n", + "\u001b[31mNotImplementedError\u001b[39m: 'eagles' : Error calling compute(), @Eliot, you need to implement this!!!" ] } ], @@ -176,2786 +155,10 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "b0009663", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|0\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03837714])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|1\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03837714])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|2\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0378642])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|3\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.037782])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|4\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03704646])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|5\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03662964])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|6\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 4579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03782252])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|7\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 4919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03773779])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|8\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 5342.13]),\n", - " 'y_turbines': array([ 919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03793225])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|9\n", - "---------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([4919.56, 1310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03645055])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|10\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([4919.56, 5310.48, 1407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03675391])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|11\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03637579])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|12\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([4919.56, 1310.48, 5407.02, 5136.5 , 702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03650135])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|13\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 4702.62, 432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03692278])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|14\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 702.62, 4432.1 , 528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03681955])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|15\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([5530.39, 5342.13, 4919.13, 4579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([4919.56, 1310.48, 5407.02, 1136.5 , 702.62, 432.1 , 4528.64])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03680836])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|16\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1447.97792266, 2100. , 1398.25161925, 1032.48873534,\n", - " -100. , -100. , 73.89566336]),\n", - " 'y_turbines': array([2300. , 836.2922883 , 1682.85753335, 978.07259313,\n", - " 1536.54654065, 2098.13679694, 2300. ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03822791])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|17\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1530.39, 1342.13, 919.13, 579.91, 579.91, 919.13, 1342.13]),\n", - " 'y_turbines': array([ 919.56 , 1310.48 , 1486.07500223, -857.24051132,\n", - " 623.56499777, 353.04499777, 449.58499777])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03780237])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|18\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1603.36453966, 2100. , 1145.99115522, 10.683026 ,\n", - " 517.92482936, 605.03833448, 752.99065992]),\n", - " 'y_turbines': array([1622.7718412 , -115.77099164, 2300. , -500. ,\n", - " 651.47454972, 983.80815274, 1034.25953686])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03687579])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|19\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, -100. ,\n", - " 337.09319568, 465.67033359, 1236.63602937]),\n", - " 'y_turbines': array([2300. , -371.82782536, 2300. , 371.55009023,\n", - " 767.22826853, 1598.01584178, 696.60990773])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03689223])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|20\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1461.58151125, 1434.15039114, 800.45487585, -100. ,\n", - " -100. , 490.98012938, 585.06760813]),\n", - " 'y_turbines': array([2209.8787296 , -425.26416978, 2300. , 563.34974217,\n", - " 1118.51205074, 1327.72474301, 1115.34094766])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03813308])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|21\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, -564.4409931 ,\n", - " 801.53418878, 930.11132669, 1701.07702247]),\n", - " 'y_turbines': array([2764.4409931 , 44.68674201, 2376.36621682, 315.15128132,\n", - " 2418.68587076, 1521.64962496, 620.24369091])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03839013])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|22\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1794.99536927, 1538.59146222, 1539.80332424, -100. ,\n", - " 1247.55639069, 893.69126188, 1940.05867704]),\n", - " 'y_turbines': array([2300. , -138.03695032, 1520.15903866, -500. ,\n", - " 597.56162931, 828.88000402, 1712.80279219])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03695373])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|23\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, -227.65870947,\n", - " 464.75190515, 593.32904306, 1364.29473884]),\n", - " 'y_turbines': array([2427.65870947, 398.34091605, 3942.05526936, 442.35287442,\n", - " 333.38529681, 1299.50523775, 1285.39639919])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03678664])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|24\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1831.20218846, 1768.67634044, 1532.10301595, -100. ,\n", - " 1649.07795976, 657.38350774, 1478.81221056]),\n", - " 'y_turbines': array([2300. , 687.84635691, 1660.26636695, -500. ,\n", - " 578.9359108 , 1772.2194641 , -500. ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03817211])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|25\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([ 1839.17011634, 1452.74125045, 907.37074579, -294.02728277,\n", - " 531.12047845, -1276.56634948, 1430.66331214]),\n", - " 'y_turbines': array([2494.02728277, -318.80244462, 2308.42020209, 404.15554373,\n", - " 978.86238985, 739.24488559, 529.86839692])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03721491])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|26\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1500.49548106, 1456.7172467 , 1527.29186611, -100. ,\n", - " 711.77394297, 306.91469758, 1044.00853159]),\n", - " 'y_turbines': array([2300. , -347.20564865, 1962.84108116, -359.52035623,\n", - " 99.58591667, 1161.26881981, 2098.42866638])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0379115])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|27\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1839.17011634, 1452.74125045, 907.37074579, 619.3958146 ,\n", - " 1439.3076686 , 475.01316362, 517.24021477]),\n", - " 'y_turbines': array([ 1580.6041854 , -1180.86576678, 2874.49559161, 385.64284074,\n", - " 1228.34425803, 1423.42423232, 629.16670137])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03727067])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|28\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1901.51510569, 1281.26717727, 746.72189188, 177.48633525,\n", - " 259.92057322, 564.34077931, 955.85628144]),\n", - " 'y_turbines': array([1448.16840271, -500. , 2300. , -500. ,\n", - " 689.14781783, 1861.17236698, 623.71737208])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03677908])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|29\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([ 1839.17011634, 1452.74125045, 907.37074579, -1290.47218487,\n", - " 216.80526414, 640.36948061, -268.32705351]),\n", - " 'y_turbines': array([2287.56379477, -169.4427529 , 2253.8819615 , 396.29115892,\n", - " 764.92306409, 1209.11412791, 417.73737404])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03695043])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|30\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1606.4715195 , 1382.30378166, 680.69439299, 606.84415122,\n", - " 536.63343383, 536.47877538, 1736.17924064]),\n", - " 'y_turbines': array([2220.25364881, -500. , 2300. , -500. ,\n", - " 915.41813582, 1638.69217245, 176.58816845])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03843408])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|31\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1906.84511298, 1219.17843443, 1140.74981245, -100. ,\n", - " 544.0246559 , 540.61149942, 83.55450586]),\n", - " 'y_turbines': array([1813.64858956, -500. , 2300. , 92.63700242,\n", - " 205.70269485, 2069.70123223, 1544.05557431])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03737337])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|32\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1839.17011634, 1248.22986484, 1244.51787963, -34.9601378 ,\n", - " 208.91821802, 475.94362825, 1217.85458204]),\n", - " 'y_turbines': array([2308.74948471, -391.44439539, 2361.64188498, 374.49390439,\n", - " 817.93529525, 1560.07611449, 609.97151037])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03751531])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|33\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1666.27000072, 1810.9180357 , 565.11394663, -100. ,\n", - " 732.38646416, 458.75534324, 1418.18251633]),\n", - " 'y_turbines': array([1975.72294174, -167.53587005, 2242.24556755, 438.42848891,\n", - " 677.55307604, 1684.48591279, 1063.73604347])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03678555])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|34\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1765.17599428, 1658.39206499, 1073.73298651, -100. ,\n", - " 426.106768 , 550.31213642, 1353.6953159 ]),\n", - " 'y_turbines': array([1860.21419527, 250.33998369, 2107.4894197 , 316.59686121,\n", - " 580.04376475, 2035.27318786, 1197.80719571])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03724904])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|35\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1844.91901201, 1882.11281068, 562.46942353, -89.82002117,\n", - " 729.23735003, 474.72572189, 1418.49621565]),\n", - " 'y_turbines': array([1975.6525103 , -168.16833031, 2226.17855168, 428.73482496,\n", - " 676.56057042, 1643.52819546, 1088.41599944])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03719158])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|36\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1616.97015807, 1518.24408211, 738.15560903, 13.14691213,\n", - " 665.27967762, 503.82466981, 1457.98443384]),\n", - " 'y_turbines': array([1973.13358398, -75.5340431 , 2192.4217961 , 521.76717634,\n", - " 700.29524015, 1720.84957398, 1027.55903046])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03742111])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|37\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1671.73011513, 1807.78006748, 639.56874676, -204.20613169,\n", - " 740.40411981, 481.31504031, 1504.50240669]),\n", - " 'y_turbines': array([1883.66679216, -235.75080269, 2259.89231544, 462.20718044,\n", - " 656.3345218 , 1658.24884367, 1043.97490684])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03705081])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|38\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1585.99686928, 1568.08462506, 729.28870953, 75.28103939,\n", - " 633.6770294 , 496.29486336, 1421.14117079]),\n", - " 'y_turbines': array([2005.81693012, -46.51014466, 2207.44313565, 509.01942927,\n", - " 716.1451748 , 1720.05731305, 1028.40896166])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03719846])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|39\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1422.88649037, 1490.1552573 , 940.92431301, 139.96793823,\n", - " 555.47008473, 504.08355612, 1357.25948326]),\n", - " 'y_turbines': array([2016.73016954, -98.83979618, 2191.64086081, 341.91475398,\n", - " 713.80666202, 1864.87902355, 901.60138157])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03693904])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|40\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1416.38406641, 1522.64721254, 941.39305504, 249.14614198,\n", - " 372.81043917, 502.76548287, 1241.74285053]),\n", - " 'y_turbines': array([ 1.93880068e+03, -1.86661218e+00, 2.19689850e+03, 8.92323009e+01,\n", - " 7.26038175e+02, 1.86002936e+03, 7.57568335e+02])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03713293])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|41\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1493.62152733, 1540.51594726, 971.95245961, 247.45023809,\n", - " 545.43851676, 492.595414 , 1477.67291085]),\n", - " 'y_turbines': array([2046.72493054, -142.04752716, 2210.55724848, 308.75745774,\n", - " 718.69369817, 1889.36730422, 920.72656768])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03760959])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|42\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1442.97033673, 1508.52665295, 915.14750573, 25.62638423,\n", - " 612.48154199, 487.07619322, 1004.9846972 ]),\n", - " 'y_turbines': array([2070.57663913, -82.64523285, 2120.958328 , 390.93481123,\n", - " 689.50118186, 1802.30776645, 848.5259313 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03719969])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|43\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1457.70060938, 1441.81292058, 924.42544459, 119.21583594,\n", - " 647.03856682, 528.52257286, 1407.41178109]),\n", - " 'y_turbines': array([2064.45297221, -39.34297215, 2153.28753838, 285.98354356,\n", - " 628.650582 , 1858.6844664 , 820.70464706])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03730305])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|44\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1457.38915562, 1488.09514163, 850.47048796, 26.63060656,\n", - " 301.94914918, 465.81862499, 1445.12643099]),\n", - " 'y_turbines': array([2082.74465449, -50.06853275, 2121.88440824, 171.38143337,\n", - " 750.34071457, 1724.09924771, 951.42707598])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03789604])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|45\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1404.84488974, 1520.64798209, 919.39547076, 155.94863503,\n", - " 522.82667594, 687.22139529, 1346.91492599]),\n", - " 'y_turbines': array([2043.96820101, -129.15465501, 2178.18400867, 348.95990954,\n", - " 680.35636308, 1861.28219312, 918.63865619])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03686879])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|46\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1552.23928509, 1444.25622398, 1111.2418543 , 112.99603803,\n", - " 565.96515783, 610.92899622, 1380.99806791]),\n", - " 'y_turbines': array([1823.64463338, -89.71114693, 2115.95546534, 408.73859314,\n", - " 747.35846663, 1658.55573478, 811.70207245])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03724626])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|47\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1404.16475931, 1485.53005042, 935.71549781, 171.69882679,\n", - " 488.06233233, 454.26868864, 1357.77214174]),\n", - " 'y_turbines': array([1985.66682378, -132.70446417, 2175.40960532, 396.86220568,\n", - " 553.42563194, 1844.6532238 , 895.04751236])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03741103])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|48\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1528.53067017, 1488.35292787, 969.52201683, 17.11750856,\n", - " 473.47822377, 487.00916243, 1382.29966598]),\n", - " 'y_turbines': array([1900.11325321, -20.44136435, 2150.49065695, 505.48605457,\n", - " 862.70251882, 1802.06065257, 675.82729455])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03745148])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|49\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1364.53585083, 1569.72828135, 1013.13720514, 128.25024194,\n", - " 557.52006046, 501.22288851, 1370.20100975]),\n", - " 'y_turbines': array([2078.23399278, -23.34377784, 2286.02477485, 361.46776546,\n", - " 692.78640012, 1791.86967959, 887.95464848])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03735855])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|50\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1589.81364661, 1216.88306014, 903.9785546 , 87.2514071 ,\n", - " 589.66480109, 501.0286666 , 1263.35068358]),\n", - " 'y_turbines': array([1870.42987004, -139.41224884, 2166.26831002, 265.08882746,\n", - " 739.02056744, 1809.47234314, 1001.67437136])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0366759])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|51\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1722.36202286, 1176.74880769, 816.25901405, 111.15829068,\n", - " 600.47229203, 624.08182876, 1109.2970885 ]),\n", - " 'y_turbines': array([1708.05285657, -49.22814261, 2188.11184902, 233.90686541,\n", - " 591.29138463, 1629.8157561 , 942.4021441 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03681347])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|52\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1555.1449022 , 1284.7079139 , 880.93468062, -18.9579961 ,\n", - " 631.13607912, 496.19551751, 1280.16210859]),\n", - " 'y_turbines': array([1784.82278002, -220.43697888, 2209.14765109, 203.39101937,\n", - " 722.31432131, 1823.19851621, 982.85377004])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03687861])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|53\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1816.2880838 , 1330.51366071, 996.02214188, 313.73382003,\n", - " 603.12897603, 499.45755562, 1173.02905644]),\n", - " 'y_turbines': array([1890.70669167, -175.45162259, 2143.347642 , 264.30714219,\n", - " 877.56037491, 1847.85936479, 1070.85938541])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03641144])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|54\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1931.08493794, 1368.8908097 , 1156.76290542, 268.13060577,\n", - " 528.20088862, 657.92059855, 1088.91641166]),\n", - " 'y_turbines': array([1910.49900521, -100.9714427 , 2103.32009571, 445.42947653,\n", - " 947.93506894, 1870.01301432, 1254.82139279])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03735793])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|55\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.28927495, 1304.53876372, 1029.26041893, 258.57711376,\n", - " 611.33317731, 515.47548507, 1201.73338204]),\n", - " 'y_turbines': array([1994.54477949, -230.46610812, 2185.24029989, 261.86414377,\n", - " 814.33059661, 1850.02831297, 1016.0089625 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03665268])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|56\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1826.64780542, 1300.40581573, 1063.21591125, 451.13897497,\n", - " 625.33484268, 503.56274105, 1292.18246477]),\n", - " 'y_turbines': array([1932.94097457, 48.25503734, 2032.28734824, 78.41624671,\n", - " 763.82388577, 1862.96321215, 975.98476593])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03695532])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|57\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1852.60425253, 1429.65429614, 1016.56557256, 228.73525287,\n", - " 628.59748393, 493.3962174 , 1180.35241139]),\n", - " 'y_turbines': array([1806.12564139, -176.45013214, 2150.81641713, 195.0471402 ,\n", - " 844.98083583, 1931.91104689, 1089.09868072])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03631702])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|58\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1765.05524666, 1474.69389725, 960.17212952, 331.03320412,\n", - " 514.17292177, 496.80753203, 1196.29736628]),\n", - " 'y_turbines': array([1677.85178479, -416.26519497, 2152.27474043, 8.59700956,\n", - " 874.62277381, 1838.11046818, 1019.13985031])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03678391])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|59\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1896.37020509, 1433.15097313, 1068.81765885, 130.66381985,\n", - " 573.68690416, 528.66685323, 1228.42154726]),\n", - " 'y_turbines': array([1797.18742194, -194.27375024, 2125.21997323, 121.77767508,\n", - " 735.47555668, 1955.32310034, 1075.18822398])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03649091])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|60\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1900.31562083, 1416.2376516 , 1095.85977354, 120.63215917,\n", - " 592.3298982 , 538.15498863, 1250.24891231]),\n", - " 'y_turbines': array([1763.0252308 , -217.48084334, 2118.48611011, 111.67690376,\n", - " 672.60615556, 1990.23071403, 1044.71946615])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03646469])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|61\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1891.45986006, 1418.81471632, 1098.96287778, 109.76299009,\n", - " 582.65661656, 539.13499434, 1252.25776964]),\n", - " 'y_turbines': array([1766.08510755, -199.78054055, 2117.71353051, 81.18849178,\n", - " 671.04810213, 1992.80155413, 1049.8922209 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03652498])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|62\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1897.31932307, 1418.94420432, 1099.40650389, 121.07497571,\n", - " 603.16380048, 537.7422962 , 1251.6058542 ]),\n", - " 'y_turbines': array([1766.05550443, -221.42241593, 2116.5834729 , 108.98929613,\n", - " 667.24466061, 1981.42048933, 1055.18889026])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03640958])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|63\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1911.09654488, 1428.13013824, 1077.57266374, 108.95429088,\n", - " 588.7258644 , 535.11071523, 1270.15500238]),\n", - " 'y_turbines': array([1768.08576847, -222.3536814 , 2106.18182265, 108.20979095,\n", - " 662.42666474, 1979.03056633, 1055.07449698])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03643101])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|64\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1911.12546853, 1422.88727219, 1089.85326883, 109.28956674,\n", - " 586.53186081, 541.65395377, 1267.50345671]),\n", - " 'y_turbines': array([1760.54736468, -229.27266829, 2099.30423713, 120.21373573,\n", - " 654.88898305, 1976.93234202, 1086.84889795])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03643169])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|65\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1916.11313275, 1433.97768353, 1075.3593577 , 104.32886706,\n", - " 578.1432416 , 544.38965098, 1280.50610434]),\n", - " 'y_turbines': array([1749.65174114, -220.52641304, 2118.48013249, 126.37075862,\n", - " 652.98055212, 1988.89386641, 1101.78096085])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03646649])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|66\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1912.33129057, 1418.98071634, 1087.35508657, 106.84760049,\n", - " 593.45379727, 555.70654067, 1272.30235964]),\n", - " 'y_turbines': array([1759.1157845 , -230.13947835, 2096.27366557, 117.90425774,\n", - " 663.91225209, 1978.89231335, 1087.13720787])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03646607])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|67\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1909.06309744, 1441.10273619, 1078.80049866, 101.65847168,\n", - " 579.06507807, 535.75527048, 1247.96172545]),\n", - " 'y_turbines': array([1763.4984982 , -229.67532628, 2085.26317064, 128.85684797,\n", - " 637.95414534, 1981.4017158 , 1091.70989549])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03636879])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|68\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.79338053, 1450.22778185, 1075.70211277, 81.86575351,\n", - " 579.77096685, 531.34852712, 1235.79166819]),\n", - " 'y_turbines': array([1749.4875868 , -226.95262805, 2072.46490895, 137.8121666 ,\n", - " 630.00036411, 1965.18905892, 1099.35123582])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03633012])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|69\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1929.49198593, 1458.62773147, 1073.22749087, 75.46646249,\n", - " 580.77796671, 529.32854885, 1223.24743203]),\n", - " 'y_turbines': array([1770.34538023, -241.38731339, 2080.45463172, 142.00455904,\n", - " 609.54905282, 1957.75751139, 1104.59980275])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03626985])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|70\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1926.57579593, 1476.94368714, 1076.34552513, 59.97044262,\n", - " 580.37910501, 530.24303374, 1223.03362565]),\n", - " 'y_turbines': array([1786.04731476, -256.28786927, 2067.29706366, 154.50287838,\n", - " 602.73422726, 1961.1220542 , 1116.82530296])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03630963])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|71\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1927.47506153, 1465.98068967, 1078.26101966, 80.79543582,\n", - " 575.49894887, 539.84689487, 1226.32008285]),\n", - " 'y_turbines': array([1770.54372739, -236.36215348, 2080.76633017, 145.72411113,\n", - " 605.27627525, 1950.02167894, 1099.81824358])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03631461])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|72\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1942.67926617, 1454.7776063 , 1067.00935621, 96.08155857,\n", - " 581.89889793, 526.67269382, 1214.22295561]),\n", - " 'y_turbines': array([1773.94421839, -228.87043772, 2073.29838386, 142.28963647,\n", - " 587.55353049, 1947.98642031, 1112.19449665])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03620612])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|73\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1959.66716277, 1438.64315157, 1071.75111062, 99.71977513,\n", - " 576.83129572, 527.62970183, 1196.20294365]),\n", - " 'y_turbines': array([1768.84522774, -238.1525743 , 2076.29914743, 161.38759833,\n", - " 582.90563991, 1951.50716218, 1100.18784879])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0362474])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|74\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1953.35791491, 1462.1513674 , 1074.91050142, 98.04985864,\n", - " 577.96206364, 527.53395425, 1210.85219002]),\n", - " 'y_turbines': array([1772.58916114, -229.77164852, 2071.99798373, 132.6641168 ,\n", - " 591.16335902, 1953.04844895, 1113.62428214])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03622983])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|75\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1931.42354557, 1440.2020125 , 1062.91714436, 83.87316508,\n", - " 579.86921339, 524.85666488, 1199.0683231 ]),\n", - " 'y_turbines': array([1776.71066234, -222.05801227, 2076.42331041, 121.52241928,\n", - " 571.06772341, 1941.30493546, 1119.01068177])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03619924])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|76\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.32360893, 1450.13479691, 1060.45316936, 98.75498147,\n", - " 586.72013492, 522.26635323, 1197.81539782]),\n", - " 'y_turbines': array([1777.85388783, -203.36802092, 2060.97629404, 127.1837417 ,\n", - " 549.4715578 , 1931.77514787, 1120.70815784])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03616435])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|77\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1940.25058783, 1450.86521416, 1066.45436049, 88.26702972,\n", - " 585.1008353 , 513.97992167, 1204.25776017]),\n", - " 'y_turbines': array([1770.25115382, -199.21379713, 2069.76423371, 127.36292664,\n", - " 545.21496173, 1901.28851727, 1124.9480713 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03619046])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|78\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1931.48218666, 1452.4307061 , 1056.37412477, 91.09255592,\n", - " 598.11982284, 528.93298545, 1195.0241251 ]),\n", - " 'y_turbines': array([1778.42787105, -194.92937359, 2064.07009885, 128.45819121,\n", - " 550.77672171, 1935.13318626, 1118.82525363])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03615851])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|79\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1921.08487648, 1461.80928226, 1051.78469493, 111.53999114,\n", - " 580.77922482, 518.14357812, 1187.35604233]),\n", - " 'y_turbines': array([1761.230906 , -223.08622381, 2068.01534371, 118.7510025 ,\n", - " 544.19802026, 1916.60714942, 1122.04310222])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03614445])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|80\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1924.8873863 , 1469.46954566, 1057.09638191, 109.66290178,\n", - " 577.1174677 , 520.73057393, 1161.26827581]),\n", - " 'y_turbines': array([1755.79096629, -215.25564451, 2059.47631761, 101.55094814,\n", - " 528.96832203, 1926.12478751, 1118.54248361])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03621993])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|81\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.41118122, 1456.52929871, 1055.8908031 , 111.46532986,\n", - " 587.06771675, 527.90744008, 1193.67707959]),\n", - " 'y_turbines': array([1757.3501864 , -230.78295569, 2061.15958441, 114.37680084,\n", - " 538.41779129, 1915.52795468, 1122.06007572])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03615249])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|82\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1921.61579689, 1456.06157329, 1049.61824519, 122.89555038,\n", - " 577.26452144, 520.35546144, 1175.42124705]),\n", - " 'y_turbines': array([1775.01196003, -221.92516086, 2058.05082414, 119.19888563,\n", - " 563.04222299, 1896.53097551, 1137.02443482])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03618806])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|83\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1916.25721921, 1461.31644507, 1064.47134971, 115.20390939,\n", - " 589.21936706, 516.37388698, 1183.53306301]),\n", - " 'y_turbines': array([1759.75069556, -223.34652296, 2075.62950862, 120.81768536,\n", - " 544.15341179, 1918.1844361 , 1128.83258413])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03614566])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|84\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1924.66193325, 1460.31508741, 1047.64431267, 121.11819188,\n", - " 576.53085224, 519.22445715, 1200.19690054]),\n", - " 'y_turbines': array([1756.97939976, -219.22558783, 2086.42582098, 124.93378349,\n", - " 531.75347772, 1920.58349075, 1148.71054575])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03617203])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|85\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.31199755, 1465.20789066, 1053.82265777, 114.46659744,\n", - " 579.89391879, 522.41050787, 1187.54471313]),\n", - " 'y_turbines': array([1775.70098849, -226.81339304, 2075.45055053, 116.52529993,\n", - " 538.4020591 , 1914.17791968, 1116.68217229])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03616468])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|86\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.67031733, 1452.07275825, 1040.80084369, 129.17993927,\n", - " 588.26674604, 514.09476576, 1204.61346567]),\n", - " 'y_turbines': array([1762.09090031, -228.82565212, 2071.29332358, 104.12370062,\n", - " 539.07736431, 1901.71089092, 1108.09288811])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.036095])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|87\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.38175232, 1461.27778164, 1036.49622074, 118.93970375,\n", - " 590.0225777 , 510.69550484, 1211.13997588]),\n", - " 'y_turbines': array([1774.56186985, -253.73721385, 2061.67332817, 108.66745533,\n", - " 524.47830555, 1889.20445302, 1116.79428476])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03611414])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|88\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1911.44424292, 1461.68657725, 1042.64227899, 125.39377291,\n", - " 587.03524308, 517.96138776, 1211.64038717]),\n", - " 'y_turbines': array([1762.7179486 , -224.8222775 , 2071.24463035, 93.92190551,\n", - " 543.51956674, 1900.29499495, 1111.84763669])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0361223])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|89\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1900.6795428 , 1447.21154191, 1035.01604234, 133.76099528,\n", - " 588.34141764, 511.92512974, 1207.99862996]),\n", - " 'y_turbines': array([1750.07052591, -229.44308316, 2076.87092909, 127.26454568,\n", - " 536.47543535, 1893.72899249, 1089.03673237])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03610369])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|90\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1911.64136881, 1442.01090576, 1037.48590223, 121.87977857,\n", - " 586.38884068, 514.56347953, 1197.56459592]),\n", - " 'y_turbines': array([1763.54542559, -226.25333993, 2073.65511459, 97.77556117,\n", - " 531.77259061, 1899.84669054, 1110.35934223])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03610718])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|91\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1935.32863058, 1452.34169224, 1041.60492737, 147.65833833,\n", - " 592.99881266, 513.71517521, 1197.28460949]),\n", - " 'y_turbines': array([1749.00657087, -229.16399291, 2063.45333648, 89.05517547,\n", - " 524.19991093, 1900.31513626, 1092.17837609])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03606792])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|92\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1948.40857827, 1439.60374446, 1040.05492716, 146.68175594,\n", - " 589.40860003, 514.60603927, 1198.90733271]),\n", - " 'y_turbines': array([1739.37421949, -251.22247733, 2078.15215015, 77.07523299,\n", - " 537.10490786, 1903.59325784, 1080.74295546])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03609414])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|93\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1938.75898012, 1455.94246527, 1031.33474398, 144.61171388,\n", - " 606.83824768, 518.79225736, 1193.73317624]),\n", - " 'y_turbines': array([1748.6542805 , -227.33842196, 2067.74421965, 90.33598653,\n", - " 526.67263167, 1899.56614202, 1092.81464019])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03604482])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|94\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1924.58567098, 1461.35131118, 1039.25413755, 148.89096871,\n", - " 600.74656753, 511.35175047, 1186.4373321 ]),\n", - " 'y_turbines': array([1736.41443598, -222.51363778, 2055.57466994, 75.99196726,\n", - " 499.90694679, 1891.6193507 , 1081.6039535 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03605629])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|95\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1918.69246873, 1449.2746204 , 1050.20014303, 165.77609219,\n", - " 604.05636561, 514.69288468, 1194.83473567]),\n", - " 'y_turbines': array([1751.77991452, -216.49129036, 2040.94774159, 72.25382217,\n", - " 486.86419671, 1903.91169367, 1071.58574197])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03606453])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|96\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1917.59197111, 1462.80175676, 1034.21626464, 158.9659895 ,\n", - " 596.84406524, 518.54045112, 1178.25974981]),\n", - " 'y_turbines': array([1736.62276829, -228.96133861, 2052.55863309, 75.0013087 ,\n", - " 503.74542739, 1891.90848016, 1086.27371894])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03607751])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|97\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1939.4837196 , 1451.02586102, 1033.41587129, 154.74778244,\n", - " 598.9455778 , 504.1924026 , 1182.56956655]),\n", - " 'y_turbines': array([1737.18994901, -205.96278747, 2043.22978516, 78.19433207,\n", - " 502.53907997, 1865.27973792, 1082.65475616])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03605831])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|98\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1922.98203752, 1462.94980545, 1033.4920116 , 145.18882008,\n", - " 601.03575394, 500.64264839, 1182.40238539]),\n", - " 'y_turbines': array([1737.85941097, -223.15359046, 2046.08953906, 74.86266645,\n", - " 506.99299228, 1898.52212473, 1076.57254866])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601447])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|99\n", - "----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1934.19813856, 1464.71171533, 1038.22589581, 154.48017681,\n", - " 603.59210479, 511.30588288, 1196.38039983]),\n", - " 'y_turbines': array([1723.72814625, -211.174936 , 2059.25066957, 78.84904548,\n", - " 490.86577998, 1891.45063831, 1090.86769183])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0360668])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|100\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.11784924, 1461.85497958, 1043.24845322, 151.03727436,\n", - " 609.81838837, 490.63127319, 1178.39578281]),\n", - " 'y_turbines': array([1737.20986691, -225.45221868, 2049.35411884, 75.06539067,\n", - " 510.21748013, 1896.76947312, 1082.73020723])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598808])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|101\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1914.45541235, 1459.2671057 , 1034.25992395, 137.45127778,\n", - " 603.13597443, 508.72059422, 1170.24212251]),\n", - " 'y_turbines': array([1736.78909454, -222.68252763, 2052.03165007, 64.38454902,\n", - " 494.2221054 , 1881.93915144, 1066.83624156])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03605988])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|102\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1915.48458119, 1454.06242374, 1039.95955359, 148.06509463,\n", - " 618.25579343, 494.6909646 , 1184.40859107]),\n", - " 'y_turbines': array([1729.32916928, -228.52379424, 2040.99445039, 72.07256048,\n", - " 513.40474816, 1895.55542485, 1086.24016085])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359727])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|103\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1944.09829932, 1445.31350405, 1019.37791723, 176.31415094,\n", - " 603.42583762, 500.39737293, 1166.17083765]),\n", - " 'y_turbines': array([1744.05919161, -190.63669093, 2041.41261447, 74.47013473,\n", - " 493.50262417, 1851.31765962, 1080.495059 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03606441])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|104\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.6555124 , 1460.99392707, 1031.22247364, 160.16105549,\n", - " 603.38717334, 503.61528584, 1192.30013695]),\n", - " 'y_turbines': array([1739.28311547, -209.1415755 , 2044.74493747, 75.25537921,\n", - " 506.45236191, 1858.0660379 , 1075.19382115])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03606404])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|105\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1951.43311794, 1460.14896129, 1041.31698559, 149.53286153,\n", - " 598.80913485, 506.99773318, 1167.04085623]),\n", - " 'y_turbines': array([1727.63148247, -203.43560237, 2019.44000157, 92.28226056,\n", - " 505.74123207, 1875.60087454, 1075.1464638 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03604978])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|106\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1945.01358096, 1464.35707981, 1048.09116947, 143.74362918,\n", - " 592.75763074, 508.79346179, 1165.77554759]),\n", - " 'y_turbines': array([1728.83292452, -179.64976117, 2013.63270478, 72.90792178,\n", - " 523.58062335, 1882.20735351, 1084.20412947])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03608674])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|107\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1960.6516941 , 1464.56097026, 1041.1929025 , 146.89307574,\n", - " 601.53638221, 507.36262036, 1166.23459139]),\n", - " 'y_turbines': array([1733.97781825, -210.21003993, 2014.80114378, 82.5731939 ,\n", - " 500.87311407, 1875.49921714, 1082.5413414 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03605838])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|108\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1935.90402102, 1453.44525525, 1038.07980431, 138.10462929,\n", - " 601.72457673, 504.07234484, 1172.16062509]),\n", - " 'y_turbines': array([1732.47840841, -209.26955632, 2009.52659367, 119.28011764,\n", - " 498.52091181, 1864.83833787, 1083.91578729])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03606715])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|109\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1962.68280151, 1436.32706155, 1041.03298138, 154.57152558,\n", - " 597.23240778, 507.22483749, 1168.47139959]),\n", - " 'y_turbines': array([1709.70842973, -220.78562765, 2021.00763152, 91.01772845,\n", - " 514.2791357 , 1876.43701104, 1061.88003267])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03603248])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|110\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1965.42392448, 1452.94083484, 1041.82408736, 170.38722178,\n", - " 598.89701797, 508.00974274, 1162.94453601]),\n", - " 'y_turbines': array([1698.92209633, -223.471716 , 2023.31828759, 101.12296689,\n", - " 509.40323031, 1879.32503829, 1034.1556161 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03603701])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|111\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1958.20635788, 1437.87904731, 1041.95758747, 157.92670841,\n", - " 585.88018968, 498.97891163, 1170.87402398]),\n", - " 'y_turbines': array([1703.39121235, -223.7514675 , 2014.53346919, 86.03728745,\n", - " 508.18489699, 1874.17202018, 1064.1398889 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03604519])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|112\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.47123744, 1413.89290704, 1038.25672721, 149.60682029,\n", - " 596.01831809, 507.28402984, 1171.61681903]),\n", - " 'y_turbines': array([1712.92151743, -243.50201335, 2028.60403744, 90.00569505,\n", - " 518.79734272, 1876.65416075, 1054.40672064])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602993])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|113\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1981.7649297 , 1401.39790735, 1044.11475069, 145.40202734,\n", - " 587.60350752, 510.03803901, 1169.24557468]),\n", - " 'y_turbines': array([1703.95837188, -226.63479956, 2028.20861332, 83.15535426,\n", - " 545.71577785, 1886.78650528, 1046.15008562])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03607589])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|114\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1979.71571676, 1407.26301889, 1046.6091186 , 154.79087686,\n", - " 599.21497742, 511.24897643, 1178.15892296]),\n", - " 'y_turbines': array([1719.64462471, -241.6516972 , 2021.23703489, 87.57570762,\n", - " 513.08098675, 1880.84511341, 1049.50426903])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03604356])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|115\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1976.39292573, 1412.39188752, 1034.4931156 , 153.23272486,\n", - " 597.536848 , 503.44037299, 1178.96507879]),\n", - " 'y_turbines': array([1689.13947348, -256.29985071, 2014.45156247, 76.19192245,\n", - " 508.37467985, 1862.51332864, 1060.1803163 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602494])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|116\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1978.00209752, 1416.1989741 , 1034.3973596 , 153.0098516 ,\n", - " 593.13842244, 505.19107881, 1166.55640117]),\n", - " 'y_turbines': array([1721.60680749, -251.13307171, 2020.30741218, 87.75136023,\n", - " 527.10819935, 1872.78987388, 1050.1212745 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0360266])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|117\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([2001.57749499, 1428.1779816 , 1032.12970391, 154.18966999,\n", - " 601.74563861, 506.03112651, 1175.35446875]),\n", - " 'y_turbines': array([1717.04383789, -256.62219332, 2040.29664742, 98.53446079,\n", - " 497.08721154, 1872.04447654, 1048.67662086])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03603687])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|118\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1983.21904608, 1413.69620056, 1051.24936305, 145.84135103,\n", - " 599.28778365, 498.51218915, 1166.80827168]),\n", - " 'y_turbines': array([1713.8404465 , -242.86340484, 2031.33560615, 88.48829601,\n", - " 518.85746593, 1867.45520604, 1051.24168967])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03603368])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|119\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1978.39254092, 1415.03737476, 1053.40931676, 165.66625181,\n", - " 585.80416765, 523.54372734, 1161.40545992]),\n", - " 'y_turbines': array([1709.69538566, -257.24224267, 2037.95460966, 95.28220611,\n", - " 521.56343375, 1873.50586783, 1071.42230246])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03615304])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|120\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1987.59556147, 1414.50055307, 1039.20113059, 158.52843175,\n", - " 603.21507573, 499.3753639 , 1177.0745279 ]),\n", - " 'y_turbines': array([1712.17843214, -242.32746702, 2025.22296338, 95.66444687,\n", - " 526.10167646, 1877.69692903, 1061.40190407])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598923])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|121\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1968.31471121, 1404.44194517, 1034.82645293, 135.40798348,\n", - " 595.07326384, 504.2644139 , 1174.27999211]),\n", - " 'y_turbines': array([1710.71371955, -244.94880106, 2022.18905102, 119.02732794,\n", - " 510.68658669, 1865.54451665, 1053.94705787])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03604055])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|122\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1978.18970847, 1421.08713329, 1044.21686282, 142.30115007,\n", - " 596.02155923, 505.07960987, 1179.08511496]),\n", - " 'y_turbines': array([1711.29839714, -252.76187259, 2029.64005082, 90.46514045,\n", - " 522.30895353, 1885.47432106, 1053.63854245])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602985])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|123\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1966.63929317, 1399.87751708, 1039.25902603, 155.7290915 ,\n", - " 597.68475036, 508.89287954, 1149.74945026]),\n", - " 'y_turbines': array([1711.52571388, -249.18604185, 2041.56533437, 84.51864317,\n", - " 499.91958482, 1882.57288896, 1057.07577953])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03606869])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|124\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1991.04962132, 1414.1682032 , 1041.63333177, 145.83811628,\n", - " 593.55848972, 506.55431258, 1162.07663336]),\n", - " 'y_turbines': array([1709.67049878, -244.63979877, 2017.57335652, 92.72677881,\n", - " 515.80143434, 1883.77771967, 1055.97774357])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03605114])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|125\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1983.88090715, 1408.11424474, 1025.31502689, 150.4449393 ,\n", - " 593.46705076, 502.28495751, 1191.33073447]),\n", - " 'y_turbines': array([1709.14412147, -227.88453989, 2038.95313595, 81.53860754,\n", - " 526.54207757, 1858.26204276, 1042.52938251])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03605139])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|126\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1994.95644173, 1412.13552846, 1041.83252357, 144.66480994,\n", - " 595.78057556, 507.36452062, 1165.64705389]),\n", - " 'y_turbines': array([1706.99511412, -239.28814943, 2018.12287698, 90.66221359,\n", - " 518.75261632, 1876.95024636, 1052.20079709])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03604332])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|127\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1981.45686419, 1415.18471259, 1038.21998632, 150.08136022,\n", - " 599.18167983, 509.39772158, 1170.78284814]),\n", - " 'y_turbines': array([1711.50762369, -243.13109632, 2028.7149455 , 90.60434479,\n", - " 519.79143977, 1876.29076921, 1052.596182 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602765])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|128\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.38829733, 1415.05971387, 1037.8130305 , 145.14078104,\n", - " 596.39052567, 506.62528095, 1172.22838319]),\n", - " 'y_turbines': array([1717.25490145, -242.66303317, 2027.76930696, 87.23537643,\n", - " 516.6174868 , 1874.23043254, 1060.65676342])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03603259])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|129\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1983.04954723, 1412.65255314, 1038.05201894, 149.13817803,\n", - " 596.54731627, 507.68206333, 1171.89556819]),\n", - " 'y_turbines': array([1713.05293156, -244.34628247, 2029.05416061, 89.80243773,\n", - " 519.36601987, 1876.42700585, 1054.3822125 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602954])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|130\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.11387376, 1413.82552361, 1036.76773127, 149.92967415,\n", - " 595.88374709, 506.82180945, 1173.5797893 ]),\n", - " 'y_turbines': array([1712.6213326 , -241.74443823, 2029.64523544, 89.2174899 ,\n", - " 519.44599749, 1874.95349881, 1053.28250894])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602786])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|131\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1980.51090088, 1412.26438929, 1036.02275854, 150.49049012,\n", - " 596.3858657 , 506.6919907 , 1172.19032485]),\n", - " 'y_turbines': array([1712.20175079, -241.08177341, 2031.35349724, 88.0498152 ,\n", - " 517.80027041, 1874.47588774, 1052.98097108])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0360272])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|132\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.13512371, 1411.39560688, 1035.56597301, 149.59506198,\n", - " 596.49740626, 506.36847026, 1171.42585147]),\n", - " 'y_turbines': array([1710.66932331, -239.03493301, 2030.48527327, 87.21651891,\n", - " 517.46002357, 1873.28564501, 1051.80767846])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602687])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|133\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.1111734 , 1411.02325215, 1034.46533679, 151.81660439,\n", - " 596.14746487, 505.97627891, 1171.65517693]),\n", - " 'y_turbines': array([1709.28157344, -238.13518767, 2031.47820649, 87.43240895,\n", - " 518.64747021, 1871.84274264, 1053.26553695])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0360267])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|134\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1980.63743997, 1411.385296 , 1034.01971197, 150.525075 ,\n", - " 596.07522876, 505.98719097, 1173.29436986]),\n", - " 'y_turbines': array([1707.31256466, -238.02023021, 2033.0230307 , 86.06012557,\n", - " 518.87338576, 1871.88289043, 1052.30345076])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602694])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|135\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1983.05897454, 1411.73907368, 1034.57208848, 152.49623954,\n", - " 596.26421446, 506.1190547 , 1171.55444035]),\n", - " 'y_turbines': array([1709.45992014, -238.38201975, 2031.96674152, 86.15576431,\n", - " 518.54438285, 1872.13347514, 1053.14129767])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602761])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|136\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.5084983 , 1411.28405801, 1033.34769422, 151.86711733,\n", - " 596.76454947, 505.49313754, 1172.4174066 ]),\n", - " 'y_turbines': array([1709.37501769, -238.87108037, 2032.08719292, 89.47177316,\n", - " 516.62003688, 1870.06545294, 1052.27667984])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602417])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|137\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1981.83438798, 1412.66845152, 1033.24624626, 152.4145237 ,\n", - " 597.40697406, 505.46159284, 1171.63368138]),\n", - " 'y_turbines': array([1707.87141203, -238.31021459, 2032.01893533, 91.79458314,\n", - " 514.59531738, 1869.94930375, 1051.82649165])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602286])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|138\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.8979447 , 1410.72073446, 1032.79320526, 151.92901226,\n", - " 597.67134898, 505.39464447, 1171.36132061]),\n", - " 'y_turbines': array([1706.63946486, -240.12395772, 2033.04541035, 93.73453797,\n", - " 513.72829635, 1869.7030006 , 1051.60536526])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602272])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|139\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1981.50642623, 1411.1096396 , 1031.53714565, 152.21064555,\n", - " 597.80567791, 504.7170884 , 1170.89969761]),\n", - " 'y_turbines': array([1707.42132408, -240.77695212, 2032.25585654, 94.54081882,\n", - " 513.49230484, 1867.2100775 , 1049.87803881])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602053])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|140\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1982.76819837, 1412.84133864, 1030.66796636, 153.68962139,\n", - " 598.27788969, 504.40368503, 1170.63696212]),\n", - " 'y_turbines': array([1707.78989793, -241.79968011, 2033.07967134, 93.77285427,\n", - " 511.99561972, 1866.05714598, 1048.44399043])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03602055])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|141\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1981.46676655, 1411.00021534, 1031.78399889, 153.00166689,\n", - " 596.6807193 , 504.83748002, 1170.18372205]),\n", - " 'y_turbines': array([1706.81840419, -241.32408576, 2031.55306457, 94.2432767 ,\n", - " 513.43999192, 1866.98765502, 1050.33589387])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0360229])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|142\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1981.05206683, 1410.80850874, 1030.73397518, 153.65829398,\n", - " 597.5245463 , 504.35977449, 1169.06434249]),\n", - " 'y_turbines': array([1708.29361581, -239.46305743, 2032.48990995, 96.61122585,\n", - " 514.37830175, 1865.89540152, 1049.66607078])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0360192])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|143\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1978.97779436, 1410.91261384, 1029.57072218, 154.6738845 ,\n", - " 597.42225719, 503.7585527 , 1169.07706153]),\n", - " 'y_turbines': array([1706.63550259, -239.37677496, 2031.86981283, 97.49172688,\n", - " 514.72529726, 1863.68341514, 1049.66373067])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601708])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|144\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1978.59930444, 1410.45082413, 1029.2336507 , 154.46813598,\n", - " 597.46675088, 503.29441223, 1167.14275919]),\n", - " 'y_turbines': array([1705.20654817, -238.56524369, 2029.89919821, 97.64989609,\n", - " 514.60971732, 1861.97580408, 1048.2528845 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601545])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|145\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1977.77379396, 1409.72113721, 1028.12033529, 155.36001394,\n", - " 597.44781159, 502.75589252, 1166.02489136]),\n", - " 'y_turbines': array([1703.08564546, -238.26971272, 2029.49737938, 99.2106319 ,\n", - " 514.64026603, 1859.99468616, 1047.93273087])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601377])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|146\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1978.12241527, 1411.09285071, 1028.00947307, 154.76891723,\n", - " 596.9687478 , 502.471015 , 1167.40963377]),\n", - " 'y_turbines': array([1702.68173544, -237.73309692, 2028.57528914, 101.03076172,\n", - " 516.18059358, 1858.94641396, 1046.11028628])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601312])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|147\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1975.335258 , 1411.48166178, 1027.83415335, 154.91405253,\n", - " 596.75713973, 502.46237994, 1166.24498582]),\n", - " 'y_turbines': array([1702.41751245, -238.13487288, 2028.83187461, 101.48349842,\n", - " 516.81950359, 1858.91458988, 1043.71941645])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601262])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|148\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1974.24750795, 1412.45499353, 1026.8661389 , 153.89152028,\n", - " 596.94564889, 501.82323333, 1165.62566453]),\n", - " 'y_turbines': array([1703.11366825, -238.01297772, 2027.24024995, 102.67198422,\n", - " 516.21334816, 1856.5630621 , 1044.56607563])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601126])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|149\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1973.64171542, 1412.26185365, 1025.54838733, 154.64842382,\n", - " 596.8857221 , 501.22811708, 1165.49643593]),\n", - " 'y_turbines': array([1701.43881087, -237.86130239, 2027.11736777, 104.9318121 ,\n", - " 516.40465392, 1854.3737699 , 1044.92968633])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600997])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|150\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1974.94326965, 1411.67246875, 1025.43690159, 153.74747335,\n", - " 596.97966705, 500.92690791, 1163.30774781]),\n", - " 'y_turbines': array([1700.60709855, -237.01219224, 2025.61112318, 106.09677764,\n", - " 516.10664137, 1853.26570349, 1043.55518303])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600993])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|151\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1974.91686797, 1410.34947214, 1024.28770388, 153.7587117 ,\n", - " 596.35296432, 500.31595186, 1163.62708158]),\n", - " 'y_turbines': array([1701.34359662, -237.26253697, 2025.43803344, 104.55451352,\n", - " 518.07580195, 1851.01804462, 1043.21313153])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601003])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|152\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1975.06105735, 1412.52502075, 1024.80288404, 153.22388278,\n", - " 596.51805056, 500.1635378 , 1162.77047714]),\n", - " 'y_turbines': array([1700.07387434, -236.51498131, 2026.15480866, 105.6646068 ,\n", - " 516.52283786, 1853.67543734, 1043.93420633])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600805])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|153\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1973.71345065, 1411.76088577, 1025.40016075, 155.41102262,\n", - " 597.27232664, 500.70735924, 1164.40468159]),\n", - " 'y_turbines': array([1700.63159035, -234.40383673, 2024.23104555, 105.94335214,\n", - " 515.18889645, 1852.45798673, 1043.17186521])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0360082])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|154\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1971.13829208, 1410.27734861, 1025.29196134, 156.82281994,\n", - " 597.71648336, 500.54560678, 1163.88283056]),\n", - " 'y_turbines': array([1701.21436528, -235.09624466, 2023.40575346, 106.57075722,\n", - " 513.82289286, 1851.86301257, 1042.42804408])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600688])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|155\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1968.79170231, 1411.55391228, 1025.01251912, 158.45657482,\n", - " 597.63285795, 500.3114602 , 1162.43032112]),\n", - " 'y_turbines': array([1700.34509241, -234.02738848, 2022.52389197, 106.15208343,\n", - " 514.05426341, 1851.00160348, 1042.97434342])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600574])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|156\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1966.48048568, 1410.59187252, 1024.76634544, 156.57696965,\n", - " 597.87378756, 500.16678198, 1163.25575423]),\n", - " 'y_turbines': array([1698.69949079, -232.74439622, 2022.50333327, 105.80466033,\n", - " 513.26722648, 1850.46916576, 1043.00271704])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600489])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|157\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1965.05301963, 1409.93998481, 1024.23715143, 156.67044629,\n", - " 597.78382533, 500.08527358, 1162.70549047]),\n", - " 'y_turbines': array([1700.35607646, -230.35259932, 2023.69342903, 107.48077037,\n", - " 513.52878339, 1850.16927725, 1043.28922273])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600592])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|158\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1966.47924666, 1410.58751493, 1025.17508862, 156.58669308,\n", - " 596.05901314, 500.49216824, 1163.2649652 ]),\n", - " 'y_turbines': array([1698.70021197, -232.7568552 , 2022.60409912, 105.82617802,\n", - " 512.69724028, 1850.15750716, 1043.02838456])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03601099])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|159\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1965.53545691, 1409.92417951, 1025.70355214, 156.88449232,\n", - " 597.57678903, 500.17665326, 1164.53879273]),\n", - " 'y_turbines': array([1697.93673784, -232.95598599, 2019.50864479, 106.6800541 ,\n", - " 514.22530907, 1850.50563118, 1043.82332606])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600271])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|160\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1964.33745057, 1410.29870995, 1025.74495356, 157.67835205,\n", - " 597.83000512, 499.83063779, 1166.2582205 ]),\n", - " 'y_turbines': array([1696.6878506 , -233.33970282, 2016.94991039, 106.87399493,\n", - " 513.42612005, 1849.23255801, 1043.50521865])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03600069])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|161\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1963.2927717 , 1410.35652878, 1026.57761363, 157.27753574,\n", - " 598.09088112, 499.84383467, 1165.33845961]),\n", - " 'y_turbines': array([1694.72987322, -234.15557447, 2014.51559226, 108.29935789,\n", - " 512.60308813, 1849.28123729, 1043.52754691])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03599902])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|162\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1962.49189672, 1409.68740054, 1027.20612395, 158.7016349 ,\n", - " 597.7149795 , 500.05686213, 1166.00905332]),\n", - " 'y_turbines': array([1692.57094755, -233.99877375, 2014.35795767, 108.68830973,\n", - " 513.78955306, 1850.06551148, 1041.2988835 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359981])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|163\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1960.59567186, 1409.24475958, 1027.59694902, 159.38788767,\n", - " 597.68401466, 499.93194335, 1166.94801439]),\n", - " 'y_turbines': array([1691.40652794, -233.51373702, 2011.80389704, 110.21303408,\n", - " 513.88682247, 1849.60497112, 1041.1382619 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03599628])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|164\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1958.66488305, 1409.24295771, 1027.27555815, 158.63996374,\n", - " 598.20019977, 499.68797577, 1167.45561733]),\n", - " 'y_turbines': array([1688.98759961, -233.21407345, 2011.2355511 , 110.0377812 ,\n", - " 512.25840505, 1848.70697871, 1040.01004909])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03599596])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|165\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1957.77504202, 1411.05602509, 1027.38897543, 161.11528172,\n", - " 598.03770729, 499.5323391 , 1165.98174674]),\n", - " 'y_turbines': array([1688.22626941, -233.48494421, 2009.89499754, 109.37030173,\n", - " 512.77130893, 1848.13414643, 1040.27682866])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03599381])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|166\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1957.74337284, 1409.5911677 , 1027.12765627, 161.1643774 ,\n", - " 597.51875804, 499.10007953, 1165.01087452]),\n", - " 'y_turbines': array([1687.69412617, -234.6350888 , 2007.95935404, 108.04848419,\n", - " 514.40937681, 1846.54309668, 1040.01394039])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03599199])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|167\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1956.56915075, 1409.72919791, 1027.24807505, 162.62880375,\n", - " 597.21232387, 498.78963709, 1164.38855215]),\n", - " 'y_turbines': array([1687.333024 , -234.9318064 , 2004.97397847, 108.29143081,\n", - " 515.37519706, 1845.40258773, 1040.67880692])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03599029])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|168\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1955.06287581, 1408.47514148, 1026.90570831, 161.88306665,\n", - " 597.25268199, 498.33775486, 1164.48842584]),\n", - " 'y_turbines': array([1685.48041594, -235.32499788, 2002.95833271, 107.79318995,\n", - " 515.24794247, 1843.74006587, 1039.90982202])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598818])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|169\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1951.00411812, 1406.56094619, 1027.49034036, 160.38635843,\n", - " 596.43223105, 498.45650512, 1159.97629943]),\n", - " 'y_turbines': array([1683.53985395, -232.52774331, 2003.68175306, 107.63897165,\n", - " 517.84072687, 1844.17722099, 1040.99734966])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03599004])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|170\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1954.92549651, 1408.2761687 , 1025.43475873, 161.9998309 ,\n", - " 597.65507111, 499.2996469 , 1164.22403144]),\n", - " 'y_turbines': array([1685.61541768, -235.45193403, 2002.61609117, 107.83640135,\n", - " 515.22555507, 1844.37903652, 1039.69761203])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598745])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|171\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1953.98861598, 1406.90252933, 1026.79265941, 163.40063918,\n", - " 597.6775239 , 498.15860227, 1163.46149985]),\n", - " 'y_turbines': array([1686.31492017, -237.01792328, 2002.68656581, 108.30880904,\n", - " 513.9089441 , 1843.08092414, 1038.27875223])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598741])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|172\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1955.64074207, 1406.75752871, 1027.73130208, 163.93993057,\n", - " 597.86010675, 497.71774538, 1163.06427681]),\n", - " 'y_turbines': array([1685.37707238, -235.98373773, 2000.84848992, 108.38403916,\n", - " 513.33245461, 1841.23208059, 1036.66374507])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598776])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|173\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1954.49217482, 1406.02992394, 1026.54987863, 164.08002413,\n", - " 597.52996116, 497.51013889, 1163.45503857]),\n", - " 'y_turbines': array([1685.62251972, -236.86562775, 2002.70370881, 107.87350563,\n", - " 513.33319301, 1843.74405206, 1039.02610585])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359857])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|174\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1952.79713351, 1407.08769552, 1026.51102092, 163.92233601,\n", - " 597.80143423, 497.71058432, 1164.57409313]),\n", - " 'y_turbines': array([1685.6602866 , -238.05506317, 1999.84613404, 108.64543882,\n", - " 513.516013 , 1841.43267053, 1037.84986272])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598477])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|175\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1952.65458862, 1405.23775963, 1025.2965604 , 166.73225808,\n", - " 597.98272796, 496.90463608, 1166.55953522]),\n", - " 'y_turbines': array([1681.58139152, -240.88847669, 1998.9974172 , 110.07575859,\n", - " 512.94029255, 1838.46747884, 1041.013227 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03598194])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|176\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1950.83301959, 1404.41678159, 1026.56898611, 168.31036204,\n", - " 598.4012046 , 496.80566683, 1168.98873361]),\n", - " 'y_turbines': array([1679.30395257, -243.45043088, 1993.70349956, 107.21912527,\n", - " 511.62271037, 1838.10336354, 1040.92592618])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03597931])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|177\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1950.27201362, 1405.36909732, 1025.19790351, 168.95059452,\n", - " 598.59160779, 495.49730942, 1170.30505601]),\n", - " 'y_turbines': array([1678.23682472, -242.25380525, 1988.94963852, 110.04807914,\n", - " 511.02299186, 1833.28983141, 1040.37343961])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03597691])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|178\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1947.67809821, 1405.0186406 , 1025.52352773, 174.7456522 ,\n", - " 598.92515668, 495.29910449, 1167.66350448]),\n", - " 'y_turbines': array([1678.99178891, -243.78089503, 1986.63801375, 112.57157873,\n", - " 509.97021756, 1832.56059477, 1040.09420751])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03597243])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|179\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1945.99573849, 1408.10242914, 1024.88977675, 178.23968404,\n", - " 598.52580446, 494.72887797, 1165.59726134]),\n", - " 'y_turbines': array([1676.78277144, -245.47511641, 1984.43348085, 114.90608235,\n", - " 511.23040355, 1830.46266543, 1036.89317315])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03596851])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|180\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1942.24573176, 1407.45176269, 1023.82149714, 180.9669588 ,\n", - " 599.43233971, 494.06069591, 1163.91765112]),\n", - " 'y_turbines': array([1674.91788392, -245.11759818, 1983.26335977, 117.24219047,\n", - " 508.37003732, 1828.00422941, 1033.40209051])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03596472])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|181\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1940.51215247, 1406.3206406 , 1023.47879193, 183.73991725,\n", - " 599.11133865, 493.37810801, 1161.51876821]),\n", - " 'y_turbines': array([1674.46256698, -244.49621042, 1979.60931565, 120.9401591 ,\n", - " 509.39468085, 1825.49302987, 1030.1450291 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.035961])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|182\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1940.81360911, 1410.39658537, 1025.35440091, 179.7663775 ,\n", - " 601.12236928, 493.06248634, 1152.25500379]),\n", - " 'y_turbines': array([1671.6722542 , -246.73593995, 1973.76367771, 127.42363233,\n", - " 503.17479344, 1824.3332728 , 1031.13825654])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359675])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|183\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1940.4989925 , 1406.32472006, 1023.57109149, 183.7405052 ,\n", - " 602.6272747 , 491.87876306, 1161.53241957]),\n", - " 'y_turbines': array([1674.47245144, -244.50003046, 1979.64257587, 120.93963179,\n", - " 510.51578287, 1825.84397003, 1030.14114722])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359497])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|184\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.82991313, 1406.01759053, 1021.38741245, 188.90899282,\n", - " 598.67509539, 492.33960089, 1161.94895998]),\n", - " 'y_turbines': array([1675.7051295 , -244.42039701, 1979.27035986, 119.23571389,\n", - " 510.82706377, 1821.672153 , 1028.42860331])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595749])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|185\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1934.99393706, 1406.04434588, 1022.26120216, 193.06177836,\n", - " 598.445568 , 492.7000852 , 1166.38875655]),\n", - " 'y_turbines': array([1675.02367759, -244.54039809, 1978.91327935, 122.71339373,\n", - " 511.6291301 , 1822.9981164 , 1026.71077548])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595787])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|186\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.39873234, 1406.09681312, 1022.3331665 , 189.15739048,\n", - " 598.43061062, 492.02773928, 1161.62714027]),\n", - " 'y_turbines': array([1674.80711938, -243.42079113, 1979.48456196, 119.01637583,\n", - " 511.1681083 , 1821.46957638, 1029.1594124 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595782])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|187\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1940.14850977, 1405.27846027, 1021.32161935, 191.01608326,\n", - " 598.88501575, 492.30177418, 1161.585308 ]),\n", - " 'y_turbines': array([1673.71118214, -243.37777059, 1979.3651417 , 118.86914876,\n", - " 510.35069046, 1821.53248787, 1028.485257 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595812])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|188\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.5023123 , 1406.17675211, 1020.9031714 , 188.92089942,\n", - " 599.28548522, 493.99119841, 1161.80786954]),\n", - " 'y_turbines': array([1675.52668398, -243.95572204, 1979.03203237, 119.14492337,\n", - " 511.175521 , 1821.65426352, 1028.70772062])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03596022])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|189\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1936.66549814, 1405.24410487, 1022.80605837, 188.98016268,\n", - " 598.39382694, 492.53379723, 1160.93894057]),\n", - " 'y_turbines': array([1674.41490592, -244.13378042, 1978.8704745 , 117.172425 ,\n", - " 511.79644913, 1822.38637949, 1026.61820275])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595844])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|190\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.45276378, 1406.18236274, 1020.27467548, 189.08016829,\n", - " 598.34224073, 491.7577499 , 1161.64031611]),\n", - " 'y_turbines': array([1675.63976207, -243.93316219, 1978.80729918, 119.09544903,\n", - " 510.82489647, 1822.87068476, 1028.75458927])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595471])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|191\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.89124937, 1406.60507707, 1020.52092552, 187.24175448,\n", - " 598.55907547, 491.79535919, 1163.66219917]),\n", - " 'y_turbines': array([1674.41428745, -243.32505828, 1978.49957642, 119.06721312,\n", - " 511.30878203, 1819.66974958, 1027.35829763])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595911])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|192\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.49950607, 1405.08696554, 1020.98150909, 188.7432989 ,\n", - " 598.57366975, 492.2904772 , 1162.03434266]),\n", - " 'y_turbines': array([1674.82189325, -245.5447618 , 1979.13900613, 119.30662166,\n", - " 511.18425553, 1821.47309848, 1029.18937461])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595796])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|193\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.54098857, 1405.87828489, 1020.43461299, 188.98008001,\n", - " 598.31977323, 492.27766088, 1160.46541944]),\n", - " 'y_turbines': array([1676.02722918, -244.00916856, 1982.11804795, 120.5474091 ,\n", - " 512.00071101, 1821.44432072, 1027.36975053])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595857])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|194\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1937.68784514, 1404.42708543, 1021.37802932, 188.6550283 ,\n", - " 598.76321009, 492.3395612 , 1162.31236834]),\n", - " 'y_turbines': array([1676.33324515, -243.54546162, 1979.32438605, 119.23563693,\n", - " 510.54721613, 1821.67255348, 1028.49508231])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595796])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|195\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1936.8835338 , 1407.15323823, 1021.47532822, 190.42525224,\n", - " 599.08885291, 492.14707752, 1160.31719355]),\n", - " 'y_turbines': array([1677.45699969, -244.8705926 , 1977.57673268, 119.24600105,\n", - " 509.45406757, 1820.9643673 , 1028.76130922])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595637])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|196\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1938.24161308, 1407.34520655, 1021.95769375, 191.01558336,\n", - " 598.20854581, 492.16863364, 1160.25237607]),\n", - " 'y_turbines': array([1679.17034706, -244.91145237, 1976.20101743, 119.23164673,\n", - " 512.20677555, 1821.04475721, 1029.34791293])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595696])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|197\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1936.87244368, 1407.16572598, 1021.52607344, 190.42042982,\n", - " 600.84896907, 491.39904272, 1160.33078904]),\n", - " 'y_turbines': array([1677.48435425, -244.88111521, 1977.60660694, 119.23427099,\n", - " 510.00548387, 1821.14437192, 1028.79328221])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595084])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|198\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1936.44225783, 1408.40779195, 1021.26599753, 191.50013629,\n", - " 599.32899753, 492.24025823, 1161.48302246]),\n", - " 'y_turbines': array([1678.71085578, -245.41691541, 1978.99387203, 116.77754212,\n", - " 508.69400461, 1821.30769967, 1029.73027588])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359591])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|199\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1936.00491044, 1406.50422475, 1020.58543295, 191.14140916,\n", - " 599.02329757, 492.0811205 , 1160.05582338]),\n", - " 'y_turbines': array([1677.24770664, -244.25521944, 1977.39553481, 118.87605956,\n", - " 509.90431325, 1820.24633669, 1029.09980558])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595526])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|200\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1935.30205776, 1406.44553824, 1021.9360317 , 190.74334791,\n", - " 599.2572948 , 492.13094403, 1158.26190074]),\n", - " 'y_turbines': array([1676.79940804, -243.51543688, 1975.89346111, 120.8188688 ,\n", - " 508.90952386, 1820.90480551, 1029.50665131])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595561])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|201\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1933.18444879, 1406.82599659, 1021.70848085, 192.53581645,\n", - " 599.54073483, 492.05844057, 1157.87341384]),\n", - " 'y_turbines': array([1677.5002144 , -242.74198039, 1976.14735451, 119.12239967,\n", - " 508.03335931, 1820.63807018, 1031.23844166])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595532])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|202\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1932.67850746, 1405.16526819, 1021.5154433 , 193.83403008,\n", - " 599.90340483, 491.8124235 , 1156.82819526]),\n", - " 'y_turbines': array([1678.41456598, -243.74367265, 1975.06472105, 118.76327605,\n", - " 506.88960046, 1819.7330484 , 1029.06793326])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595438])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|203\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1932.34800735, 1405.88872985, 1022.70050864, 194.09770911,\n", - " 600.68597904, 492.2173071 , 1155.57892304]),\n", - " 'y_turbines': array([1679.49989181, -244.2588778 , 1973.92084718, 119.21440977,\n", - " 504.40470857, 1821.2224921 , 1028.61190207])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595558])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|204\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1932.03226526, 1405.40080882, 1021.95040607, 194.78915932,\n", - " 599.80666963, 491.79591916, 1157.99457354]),\n", - " 'y_turbines': array([1678.26000297, -243.76933883, 1975.01977233, 119.62480479,\n", - " 507.07279027, 1819.97209705, 1028.62537777])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595431])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|205\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1931.92964476, 1406.4055997 , 1020.51945559, 193.35148177,\n", - " 599.98878644, 491.10485116, 1157.41341287]),\n", - " 'y_turbines': array([1678.04659049, -242.57431955, 1973.53060795, 118.61508211,\n", - " 506.7154458 , 1817.12981275, 1028.00018469])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595275])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|206\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1930.6149103 , 1406.41001753, 1019.73831992, 193.22279843,\n", - " 599.94035561, 490.5473659 , 1157.64317072]),\n", - " 'y_turbines': array([1676.66841666, -244.54532322, 1972.26357819, 119.04363805,\n", - " 506.89137948, 1815.07871986, 1029.21163817])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03595098])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|207\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1929.29464684, 1404.94436796, 1019.48899546, 193.81047575,\n", - " 599.43598881, 490.1431577 , 1157.06373562]),\n", - " 'y_turbines': array([1675.97668257, -243.6131017 , 1970.20080309, 119.86566435,\n", - " 508.44542069, 1813.59160057, 1029.41867439])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594913])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|208\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1927.60902705, 1404.77278997, 1019.04286921, 194.07682446,\n", - " 599.38854353, 489.57057776, 1156.76097163]),\n", - " 'y_turbines': array([1675.27459186, -243.645741 , 1967.57830578, 120.64950825,\n", - " 508.54282012, 1811.48494571, 1029.35440631])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594729])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|209\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1924.21159477, 1403.85537443, 1017.05785691, 197.23269839,\n", - " 598.81864675, 488.44500395, 1158.23118994]),\n", - " 'y_turbines': array([1675.63713017, -243.14159937, 1966.40012457, 117.47742041,\n", - " 510.46305442, 1807.34387832, 1030.49070025])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594782])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|210\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1927.98510494, 1404.0415018 , 1018.68243332, 193.88566603,\n", - " 599.95589813, 489.94768492, 1156.86430335]),\n", - " 'y_turbines': array([1675.29467597, -243.85635448, 1966.49234415, 119.76366082,\n", - " 508.26634204, 1812.16021345, 1029.7303353 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594607])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|211\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1927.4328439 , 1404.28330047, 1018.32053976, 193.39820229,\n", - " 599.37325248, 489.19931238, 1153.41148345]),\n", - " 'y_turbines': array([1675.16676771, -243.37677199, 1967.42465745, 121.76563628,\n", - " 508.66257929, 1810.11891027, 1028.95916752])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594665])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|212\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1926.68696201, 1405.06020559, 1018.72022936, 192.61208801,\n", - " 599.74532823, 488.98525301, 1153.54308866]),\n", - " 'y_turbines': array([1674.27945212, -243.80368449, 1964.54545681, 123.27568791,\n", - " 507.42146632, 1809.331494 , 1028.55823338])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594594])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|213\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.44662096, 1404.6722329 , 1019.10816777, 195.11137191,\n", - " 599.78379858, 489.19776179, 1153.37371799]),\n", - " 'y_turbines': array([1674.43483853, -243.59060068, 1964.79760975, 125.48092466,\n", - " 507.44184833, 1810.11376081, 1027.06483726])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594485])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|214\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.09690705, 1402.31990392, 1019.77236114, 194.21170209,\n", - " 600.17329809, 488.98128715, 1154.28262637]),\n", - " 'y_turbines': array([1676.10040121, -242.29827719, 1964.99839306, 126.70922827,\n", - " 506.34539885, 1809.3177757 , 1027.55470241])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594623])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|215\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1924.25302008, 1404.87945222, 1018.65008502, 194.27241211,\n", - " 599.87778497, 489.52722205, 1153.31424379]),\n", - " 'y_turbines': array([1675.28195722, -243.97643711, 1964.76149263, 125.40727687,\n", - " 507.90618195, 1810.67158508, 1026.75212789])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594437])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|216\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.83222646, 1403.73998331, 1019.00483829, 197.03749404,\n", - " 600.15675996, 488.98790445, 1150.83583973]),\n", - " 'y_turbines': array([1673.90823212, -243.07842011, 1963.5838155 , 125.55670945,\n", - " 506.09661155, 1809.34146503, 1026.60348765])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594391])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|217\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1924.83207955, 1404.16479585, 1019.07420945, 197.82983813,\n", - " 600.18475567, 489.06248961, 1149.81421161]),\n", - " 'y_turbines': array([1672.48535438, -243.3120582 , 1963.90736513, 127.00875115,\n", - " 506.15682748, 1809.61639734, 1029.56407158])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594356])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|218\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.42783479, 1402.7103959 , 1017.80565979, 196.29910736,\n", - " 598.87903051, 488.60803392, 1150.90874089]),\n", - " 'y_turbines': array([1671.46924116, -242.51324991, 1965.03249106, 127.59726691,\n", - " 505.55787953, 1807.94506001, 1029.3822695 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594555])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|219\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.17914565, 1404.61028688, 1017.94928603, 197.92290064,\n", - " 601.25075926, 488.30920643, 1150.00920496]),\n", - " 'y_turbines': array([1672.66244344, -242.65440474, 1963.84617541, 127.34958543,\n", - " 506.30955106, 1809.8424233 , 1029.64746749])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593847])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|220\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.17714798, 1402.86164048, 1019.63169235, 197.21868469,\n", - " 600.08511746, 489.30808371, 1149.12550827]),\n", - " 'y_turbines': array([1669.84712776, -242.59613924, 1963.74826164, 126.41121712,\n", - " 506.48076812, 1810.51981806, 1028.31591761])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594317])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|221\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.77962895, 1402.06942023, 1020.18935965, 197.99535401,\n", - " 599.35754699, 489.29690105, 1147.95809716]),\n", - " 'y_turbines': array([1669.61928194, -242.16066717, 1961.73676501, 128.12471911,\n", - " 508.66338324, 1810.47819159, 1027.85378748])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594284])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|222\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.12024054, 1402.90406084, 1019.472716 , 198.21897531,\n", - " 599.42623191, 488.96975078, 1146.24967187]),\n", - " 'y_turbines': array([1667.77060535, -242.61908391, 1961.80130546, 129.25073886,\n", - " 508.39404116, 1809.27445023, 1025.65079859])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594158])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|223\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.11061108, 1404.85419495, 1019.64246598, 197.60765946,\n", - " 599.569889 , 488.86331578, 1141.42770602]),\n", - " 'y_turbines': array([1665.48924216, -243.6905398 , 1960.51107751, 129.59765041,\n", - " 507.96665172, 1808.88274655, 1021.29425181])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594309])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|224\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.13016894, 1402.26390821, 1019.53191875, 198.22703891,\n", - " 599.4022573 , 487.54095948, 1146.25316218]),\n", - " 'y_turbines': array([1667.76150181, -243.80665811, 1961.81481661, 129.24549547,\n", - " 508.3866754 , 1809.64026695, 1025.64906826])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593839])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|225\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.25183429, 1401.97439846, 1019.01672853, 197.80193937,\n", - " 599.49706275, 488.7767418 , 1147.64328426]),\n", - " 'y_turbines': array([1665.16008868, -242.10830915, 1962.0769751 , 129.56888324,\n", - " 508.20191795, 1808.56444273, 1024.99364731])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594038])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|226\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.57411318, 1400.97138067, 1018.77660367, 198.78057044,\n", - " 599.10561252, 489.0604028 , 1147.90087521]),\n", - " 'y_turbines': array([1664.99806179, -241.55731809, 1964.97817687, 129.38389677,\n", - " 509.49874377, 1809.60827491, 1023.57157678])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03594025])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|227\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1925.869025 , 1401.7645662 , 1019.46785676, 197.53808445,\n", - " 599.93444055, 489.84116772, 1147.20443107]),\n", - " 'y_turbines': array([1665.22292235, -243.21986265, 1962.44207187, 130.13758063,\n", - " 508.01222511, 1808.68836774, 1025.18720226])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359428])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|228\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.90372627, 1401.60206433, 1017.94068152, 199.44811603,\n", - " 599.19936487, 488.17753805, 1149.05504876]),\n", - " 'y_turbines': array([1664.45033456, -241.90369347, 1961.61366229, 128.54477122,\n", - " 509.23310619, 1806.35976346, 1025.04270382])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593784])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|229\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1922.99708626, 1400.90336549, 1016.83875405, 200.56838334,\n", - " 598.95341687, 487.58006694, 1150.31769404]),\n", - " 'y_turbines': array([1662.68614357, -241.51983405, 1960.9972044 , 127.77614534,\n", - " 509.87909366, 1804.16176779, 1024.18839889])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593593])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|230\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.25513677, 1406.04249702, 1019.74589314, 202.42047442,\n", - " 598.20384717, 487.30628515, 1153.57871948]),\n", - " 'y_turbines': array([1660.15509527, -242.28920717, 1961.49065496, 127.09790602,\n", - " 512.2509977 , 1803.15800586, 1024.37502846])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359404])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|231\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.28322273, 1400.88866894, 1017.20751536, 199.82307826,\n", - " 599.59352289, 487.17951988, 1149.54209898]),\n", - " 'y_turbines': array([1662.6898459 , -241.26032672, 1961.39862973, 127.06329651,\n", - " 510.68927347, 1803.4051742 , 1024.48713842])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593482])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|232\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1922.50968819, 1399.72497588, 1015.49819742, 201.4081855 ,\n", - " 598.80920948, 486.88256587, 1150.47834386]),\n", - " 'y_turbines': array([1660.93658623, -240.87240207, 1960.60286646, 127.19802977,\n", - " 510.32840246, 1801.59555512, 1023.42603123])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593546])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|233\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1922.34139727, 1401.09268818, 1015.34081583, 199.14357488,\n", - " 598.02069687, 486.77868478, 1150.80190013]),\n", - " 'y_turbines': array([1660.20851407, -241.62363862, 1960.83987779, 126.25820563,\n", - " 512.78427911, 1801.21466257, 1023.4092843 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593629])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|234\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1923.07716015, 1400.00369912, 1014.85935775, 202.02002583,\n", - " 599.1048508 , 487.15839088, 1149.94676046]),\n", - " 'y_turbines': array([1660.57375464, -241.15940054, 1960.05325865, 126.0550517 ,\n", - " 510.44489718, 1802.32478855, 1023.36338026])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593419])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|235\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.72232808, 1399.26050714, 1016.19547926, 200.49496115,\n", - " 598.86276954, 487.04340923, 1152.63010083]),\n", - " 'y_turbines': array([1660.7292971 , -240.37211541, 1959.59618148, 127.93698774,\n", - " 510.15474648, 1802.18783707, 1021.33391477])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593406])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|236\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1921.41339973, 1397.35164922, 1016.96324842, 201.18502797,\n", - " 598.23108998, 487.17100998, 1153.57517569]),\n", - " 'y_turbines': array([1661.25570019, -239.56825815, 1957.94252772, 128.35315002,\n", - " 512.17565133, 1802.65773208, 1022.50380618])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593341])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|237\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.59808913, 1399.63711107, 1015.09244253, 200.57750561,\n", - " 599.923961 , 486.88910973, 1153.06337537]),\n", - " 'y_turbines': array([1660.83994568, -240.37592305, 1959.67033641, 128.82107242,\n", - " 510.63317436, 1802.50150908, 1021.72751659])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03592952])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|238\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.2090526 , 1397.90201832, 1015.98223257, 200.63653533,\n", - " 598.91682918, 486.78205462, 1152.91085244]),\n", - " 'y_turbines': array([1659.65302409, -237.73613058, 1958.26878453, 127.78554397,\n", - " 510.00982502, 1801.22575432, 1019.64951994])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593255])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|239\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1918.3983441 , 1395.56274079, 1015.67071699, 201.81778637,\n", - " 598.62967974, 486.62818059, 1153.05287693]),\n", - " 'y_turbines': array([1659.67005286, -238.54512612, 1958.27304662, 127.12918701,\n", - " 510.91627843, 1800.65953257, 1017.8049156 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593189])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|240\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.29455529, 1397.56142742, 1016.33981648, 200.54962601,\n", - " 599.11423083, 487.01496371, 1152.53940737]),\n", - " 'y_turbines': array([1658.39564298, -237.65442143, 1958.47976231, 127.84202139,\n", - " 509.94322756, 1801.75454902, 1020.52224183])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593277])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|241\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1921.66857051, 1396.35960141, 1015.90133784, 199.55950145,\n", - " 599.19307126, 486.47797348, 1153.98264349]),\n", - " 'y_turbines': array([1658.71732914, -238.90813787, 1956.44595887, 128.29769969,\n", - " 509.13391446, 1800.10668832, 1018.5757185 ])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593223])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|242\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.22995143, 1397.91454582, 1016.00911253, 200.62448403,\n", - " 599.26370192, 488.63884752, 1152.92410923]),\n", - " 'y_turbines': array([1659.75846692, -237.7145135 , 1958.32108254, 127.86263213,\n", - " 510.14831991, 1800.60137151, 1019.61689582])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593738])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|243\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.77552286, 1396.86780829, 1015.55947054, 200.37855202,\n", - " 599.21302825, 486.64534095, 1155.56596233]),\n", - " 'y_turbines': array([1660.39462937, -236.55818273, 1958.82143484, 125.93309559,\n", - " 509.02980133, 1800.72229817, 1020.32235276])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593528])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|244\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.33808074, 1398.37392507, 1016.19990055, 200.66798828,\n", - " 599.30983903, 486.50913915, 1152.60884097]),\n", - " 'y_turbines': array([1660.16723938, -237.98121487, 1957.08768866, 127.49524957,\n", - " 509.85563403, 1800.49637144, 1020.18866431])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593222])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|245\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.88320907, 1397.84959301, 1016.50000991, 199.8409003 ,\n", - " 598.39122984, 486.87892629, 1151.67737373]),\n", - " 'y_turbines': array([1659.59677475, -236.92709056, 1957.1749867 , 129.72394075,\n", - " 511.645701 , 1801.58199267, 1017.46586266])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593271])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|246\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.97111354, 1397.29524411, 1015.225915 , 200.35241761,\n", - " 597.99346719, 486.78055247, 1152.44115381]),\n", - " 'y_turbines': array([1660.09559367, -237.56947139, 1958.50381747, 128.5777347 ,\n", - " 509.45829976, 1800.6955567 , 1020.24744565])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.0359354])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|247\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.94015611, 1398.18602807, 1017.27903019, 201.25956914,\n", - " 598.46514882, 486.04979839, 1153.4191845 ]),\n", - " 'y_turbines': array([1658.61958113, -237.46401924, 1959.66348752, 128.05687037,\n", - " 511.3831829 , 1798.53140643, 1019.74886424])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593708])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|248\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1919.82895543, 1398.73445933, 1015.5077016 , 200.97394882,\n", - " 597.76085459, 487.07614592, 1153.76265916]),\n", - " 'y_turbines': array([1659.05342323, -237.97227557, 1957.78831729, 127.85187923,\n", - " 510.08285982, 1801.33261264, 1019.56057393])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593487])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|249\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1921.98137444, 1397.64513366, 1016.31679062, 202.60019041,\n", - " 598.84110278, 486.80175513, 1151.22664219]),\n", - " 'y_turbines': array([1658.69743889, -237.53010331, 1957.26581097, 125.89675877,\n", - " 510.2212483 , 1801.29792235, 1019.01441005])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593319])}\n", - "\n", - "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|250\n", - "-----------------------------------------------------------------\n", - "Design Vars\n", - "{'x_turbines': array([1920.25639404, 1397.94855169, 1015.28689396, 199.3951951 ,\n", - " 598.70381218, 486.75165757, 1152.54628297]),\n", - " 'y_turbines': array([1659.45241091, -237.75409466, 1958.22828956, 126.94913127,\n", - " 511.02264863, 1801.08571894, 1019.71840381])}\n", - "\n", - "Objectives\n", - "{'financese.lcoe': array([0.03593191])}\n", - "\n", - "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", - "Number of function values = 250 Least value of F = 0.035932712962746666 Constraint violation = 0.0\n", - "The corresponding X is:\n", - "[ 0.9599416 0.6989248 0.50825 0.09992045 0.29919561 0.24343946\n", - " 0.57583869 0.82979839 -0.11846355 0.97858749 0.06486197 0.25582285\n", - " 0.900791 0.50873293]\n", - "The constraint value is:\n", - "[-1.00994160e+00 -7.48924797e-01 -5.58250005e-01 -1.49920450e-01\n", - " -3.49195615e-01 -2.93439463e-01 -6.25838687e-01 -1.07979839e+00\n", - " -1.31536455e-01 -1.22858749e+00 -3.14861970e-01 -5.05822850e-01\n", - " -1.15079100e+00 -7.58732931e-01 -9.00583955e-02 -3.51075203e-01\n", - " -5.41749995e-01 -9.50079550e-01 -7.50804385e-01 -8.06560537e-01\n", - " -4.74161313e-01 -3.20201613e-01 -1.26846355e+00 -1.71412507e-01\n", - " -1.08513803e+00 -8.94177150e-01 -2.49209004e-01 -6.41267069e-01\n", - " -2.05057853e-01 -1.71860267e-01 -3.51415085e-01 -3.23049414e-01\n", - " -8.91893451e-01 -6.10351563e-08 -1.33161916e+00 -1.05510047e+00\n", - " -4.46590978e-03 -1.15943699e-01 -1.01153422e+00 -5.77129280e-06\n", - " -5.24671960e-01 -7.66920401e-01 -1.41505919e+00 -3.99133007e-01\n", - " -1.74996795e+00 -1.19846643e+00 -8.88021207e-01 -4.49235394e-01\n", - " -1.67499606e+00 -7.00859851e-01 -5.43214545e-01 -1.68079798e+00\n", - " -7.26320164e-01 -1.44962670e+00 -9.52782332e-01 -3.32608307e-06\n", - " -3.97381987e-01 -2.35154839e-06 -1.14431960e+00 -7.49567667e-01\n", - " -7.42747323e-01 -1.97652982e-01 -4.76005390e-01]\n", - "\n", - "Optimization FAILED.\n", - "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", - "-----------------------------------\n", - "\n", - "\n", - "RESULTS (opt):\n", - "\n", - "{'AEP_val': 131.58546409516467,\n", - " 'BOS_val': 18.1388899364447,\n", - " 'CapEx_val': 30.939999999999998,\n", - " 'LCOE_val': 35.93190765975416,\n", - " 'OpEx_val': 1.0472000000000001,\n", - " 'coll_length': 5.253938224233925,\n", - " 'turbine_spacing': 0.5514012002235136}\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "optimize = True # set to False to skip optimization\n", "if optimize:\n", @@ -2989,21 +192,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "f93a46df", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "ax = plot_layout(\n", " prob,\n", @@ -3024,347 +216,20 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "05647c0f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-5.27950257e-01 -1.62553192e-03 -5.95473686e-02 -5.05387198e-01\n", - " 1.06862118e-04 -2.62092421e-01 -3.85234167e-01]\n" - ] - } - ], + "outputs": [], "source": [ "print(prob.get_val(\"exclusions.exclusion_distances\", units=\"km\"))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "e356a5a0", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HeterogeneousMap with 2 dimensions using interpolation method \"linear\".\n", - "Speed multipliers are defined for 5 points and 3 wind conditions.\n", - "\n", - " 0 1 2 3 4\n", - "0.0 1.0 1.0 1.0 1.0 1.125\n", - "157.5 1.0 1.0 1.0 1.0 1.125\n", - "270.0 1.0 1.0 1.0 1.0 1.125\n", - "{'interp_method': 'linear',\n", - " 'speed_multipliers': [[1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125],\n", - " [1.0, 1.0, 1.0, 1.0, 1.125]],\n", - " 'x': [-100.0, -100.0, 1500.0, 1500.0, 1030.39],\n", - " 'y': [-100.0, 1500.0, 1500.0, -100.0, 919.56],\n", - " 'z': None}\n" - ] - } - ], + "outputs": [], "source": [ "print(prob.model.aepFLORIS.fmodel.wind_data.heterogeneous_map)\n", "pp.pprint(prob.model.aepFLORIS.fmodel.core.flow_field.heterogeneous_inflow_config)" From 81bcb95df251a69d71a69d9bd6fc5c8b16a8e9b0 Mon Sep 17 00:00:00 2001 From: Cory Frontin Date: Fri, 19 Dec 2025 15:16:22 -0500 Subject: [PATCH 17/17] fix optiwindnet multiplicity issues --- ard/collection/optiwindnet_wrap.py | 53 ++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/ard/collection/optiwindnet_wrap.py b/ard/collection/optiwindnet_wrap.py index f2cbb4e6..fad464a1 100644 --- a/ard/collection/optiwindnet_wrap.py +++ b/ard/collection/optiwindnet_wrap.py @@ -1,3 +1,5 @@ +from warnings import warn + import networkx as nx import numpy as np @@ -10,6 +12,7 @@ def _own_L_from_inputs(inputs: dict, discrete_inputs: dict) -> nx.Graph: + # get the metadata and data for the OWN warm-starter from the inputs T = len(inputs["x_turbines"]) R = len(inputs["x_substations"]) name_case = "farm" @@ -22,6 +25,54 @@ def _own_L_from_inputs(inputs: dict, discrete_inputs: dict) -> nx.Graph: VertexC[:T, 1] = inputs["y_turbines"] VertexC[-R:, 0] = inputs["x_substations"] VertexC[-R:, 1] = inputs["y_substations"] + + # add perturbation to duplicate turbine/substation positions + VertexCTR = np.vstack([VertexC[:T, :], VertexC[-R:, :]]) + perturbation_eps = 1.0e-6 # base magnitude of perturbation in m + perturbation_normal = np.array([-1.0, 1.0]) # set a fixed axis to perturb on + perturbation_normal = perturbation_normal / np.sqrt( + np.sum(perturbation_normal**2) + ) # normalize the perturbation + # go through the turbine/substation vertices and count how many times a + # given vertex has appeared before + repeat_accumulate = np.array( + [ + int(np.sum(np.all(VertexCTR[:ivv, :] == vv, axis=1))) + for ivv, vv in enumerate(VertexCTR) + ] + ) + if np.any(repeat_accumulate > 0): # only if there are any repeats + warn_string = ( + f"\nDetected {np.sum(repeat_accumulate > 0)} coincident " + f"turbines and/or substations in optiwindnet setup." + ) # start a warning string for the UserWarning + # TODO: make Ard warnings? + + # create perturbation adjustements s.t. vertices w/ multiplicity > 2 + # are adjusted to be fully unique! + adjustments = perturbation_eps * np.outer( + repeat_accumulate, perturbation_normal + ) + # for each adjustments add to the warning string + for idx, dxy in enumerate(adjustments[:T, :]): + if np.sum(dxy != 0) == 0: + continue + warn_string += f"\n\tadjusting turbine #{idx} from {VertexCTR[idx, :]} to {VertexCTR[idx, :] + dxy}" + for idx, dxy in enumerate((adjustments[-R:, :])[::-1, :]): + if np.sum(dxy != 0) == 0: + continue + warn_string += f"\n\tadjusting substation #{idx} from {VertexCTR[-(idx+1), :]} to {VertexCTR[-(idx+1), :] + dxy}" + # output the final warning + warn(warn_string) + + # store the adjustments + VertexCTR += adjustments + + # apply the adjustments + VertexC[:T, :] = VertexCTR[:T, :] + VertexC[-R:, :] = VertexCTR[-R:, :] + + # put together the inputs for optiwindnet site = dict( T=T, R=R, @@ -29,6 +80,8 @@ def _own_L_from_inputs(inputs: dict, discrete_inputs: dict) -> nx.Graph: handle=name_case, VertexC=VertexC, ) + + # handle the boundary if it exists if B > 0: VertexC[T:-R, 0] = discrete_inputs["x_border"] VertexC[T:-R, 1] = discrete_inputs["y_border"]