.. _parametric:
ParametricManager
=================
``ParametricManager`` is used to run simple parametric studies in ORBIT
by defining a subset of the inputs as a list. A basic parametric study where
the site depth and distance to shore is varied is shown below.
.. code-block:: python
from ORBIT import ParametricManager
# Any inputs that aren't parameterized are passed in using a
# typical ORBIT configuration
base = {
"turbine": "15MW_generic",
"wtiv": "example_wtiv",
...
}
# Parameterized inputs are passed in as a list. The product of all
# scenarios will be ran.
params = {
"site.depth": [10, 30, 50],
"site.distance": [20, 40, 60],
}
# Desired results are saved using lambda functions. These functions
# can be used to save any output normally available in ProjectManager.
# In this example, the installation and system CapEx results are saved.
results = {
"Installation": lambda project: project.installation_capex,
"System": lambda project: project.system_capex
}
# A weather profile to use in all scenarios can also be passed in.
scenarios = ParametricManager(base, params, results, weather=weather)
scenarios.run()
The results are saved as a pandas DataFrame at ``scenarios.results`` where each
row represents a different scenario run and includes the parameterized inputs
and any results the user configured.
.. note::
The parameterized inputs were passed in using "dot-notation". In this
notation, each "." tells ParametricManager to go a level deeper in the ORBIT
configuration. For example, "site.depth" is the "site" subdict, and the
"depth" input. This can used at any depth within an ORBIT configuration.
Plotting
--------
The outputs can be easily visualized using
`matplotlib `_ or
`seaborn `_.
.. code-block:: python
import matplotlib.pyplot as plt
import seaborn as sns
# Scatter Plot
plt.scatter(scenarios.results["site.depth"], scenarios.results["Installation"])
# Box Plot
sns.boxplot(data=scenarios.results, x='site.depth', y='System')
# Box Plot with Hue
sns.boxplot(data=scenarios.results, x='site.depth', y='System', hue='site.distance')
Parametric Weather
------------------
Coming soon!