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.
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.
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!