watertap.tools.parameter_sweep package
Submodules
watertap.tools.parameter_sweep.parameter_sweep module
watertap.tools.parameter_sweep.parameter_sweep_functions module
- watertap.tools.parameter_sweep.parameter_sweep_functions.parameter_sweep(model, sweep_params, outputs=None, csv_results_file_name=None, h5_results_file_name=None, optimize_function=None, optimize_kwargs=None, reinitialize_function=None, reinitialize_kwargs=None, reinitialize_before_sweep=False, probe_function=None, mpi_comm=None, debugging_data_dir=None, interpolate_nan_outputs=False, num_samples=None, seed=None)[source]
This function offers a general way to perform repeated optimizations of a model for the purposes of exploring a parameter space while monitoring multiple outputs. If provided, writes single CSV file to
results_file
with all inputs and resulting outputs.- Parameters
model – A Pyomo ConcreteModel containing a watertap flowsheet, for best results it should be initialized before being passed to this function.
sweep_params – A dictionary containing the values to vary with the format
sweep_params['Short/Pretty-print Name'] = (model.fs.variable_or_param[index], lower_limit, upper_limit, num_samples)
. A uniform number of samplesnum_samples
will be take between thelower_limit
andupper_limit
.outputs – An optional dictionary containing “short names” as keys and and Pyomo objects on
model
whose values to report as values. E.g.,outputs['Short/Pretty-print Name'] = model.fs.variable_or_expression_to_report
. If not provided, i.e., outputs = None, the default behavior is to save all model variables, parameters, and expressions which provides very thorough results at the cost of large file sizes.csv_results_file_name (optional) – The path and file name to write a csv file. The default None does not write a csv file.
h5_results_file_name (optional) – The path and file name to write a h5 file. The default None does not write a file. Writing an h5 file will also create a companion text file {h5_results_file_name}.txt which contains the variable names contained within the H5 file.
optimize_function (optional) – A user-defined function to perform the optimization of flowsheet
model
and loads the results back intomodel
. The first argument of this function ismodel
. The default uses the default IDAES solver, raising an exception if the termination condition is not optimal.optimize_kwargs (optional) – Dictionary of kwargs to pass into every call to
optimize_function
. The first arg will always bemodel
, e.g.,optimize_function(model, **optimize_kwargs)
. The default uses no kwargs.reinitialize_function (optional) – A user-defined function to perform the re-initialize the flowsheet
model
if the first call tooptimize_function
fails for any reason. Afterreinitialize_function
, the parameter sweep tool will immediately calloptimize_function
again.reinitialize_kwargs (optional) – Dictionary or kwargs to pass into every call to
reinitialize_function
. The first arg will always bemodel
, e.g.,reinitialize_function(model, **reinitialize_kwargs)
. The default uses no kwargs.reinitialize_before_sweep (optional) – Boolean option to reinitialize the flow sheet model before every parameter sweep realization. The default is False. Note the parameter sweep model will try to reinitialize the solve regardless of the option if the run fails.
probe_function (optional) – A user-defined function that can cheaply check if a current model configuration is solvable without actually reinitializing or solving.
mpi_comm (optional) – User-provided MPI communicator for parallel parameter sweeps. If None COMM_WORLD will be used. The default is sufficient for most users.
debugging_data_dir (optional) – Save results on a per-process basis for parallel debugging purposes. If None no debugging data will be saved.
interpolate_nan_outputs (optional) – When the parameter sweep has finished, interior values of np.nan will be replaced with a value obtained via a linear interpolation of their surrounding valid neighbors. If true, a second output file with the extension “_clean” will be saved alongside the raw (un-interpolated) values.
num_samples (optional) – If the user is using sampling techniques rather than a linear grid of values, they need to set the number of samples
seed (optional) – If the user is using a random sampling technique, this sets the seed
- Returns
- A list were the first N columns are the values of the parameters passed
by
sweep_params
and the remaining columns are the values of the simulation identified by theoutputs
argument.
- Return type
save_data
watertap.tools.parameter_sweep.parameter_sweep_reader module
- watertap.tools.parameter_sweep.parameter_sweep_reader.get_sweep_params_from_yaml(m, yaml_filename)[source]
Creates a dictionary of swept model parameters specified via yaml file
This function creates a dictionary of the items to vary during a parameter sweep where the variable name, model attribute, and sweeping domain are specified in a YAML file. The YAML file should have the following format:
A_comp: type: NormalSample param: fs.RO.A_comp mean: 4.0e-12 std: 0.5e-12
where the top-level keyword can be any short, easily understood identifier for the parameter.
type
must be one ofLinearSample
,UniformSample
,NormalSample
, orLatinHypercubeSample
.param
must be a valid dot-sperated string path to the object attribute (in this case, an RO attribute on the flowsheetm
) that you wish to vary. The remaining arguments are dependent on the sample type selected. ForNormalSample
information about the mean and standard deviation is required. Consult theparameter_sweep
help for more information on the different sample classes.- Parameters
m (pyomo model) – The flowsheet containing the model to deploy with the parameter sweep tool.
yaml_filename (str) – The path to the yaml file.
- Returns
A dictionary containing different instances of parameter sweep samples
- Return type
sweep_params (dict)
- watertap.tools.parameter_sweep.parameter_sweep_reader.set_defaults_from_yaml(m, yaml_filename, verbose=False)[source]
Sets default model values using values stored in a yaml file
This function reads a yaml file with the structure:
fs.path.to.attribute_1: 0.123 fs.path.to.attribute_2: 1.234 ...
and uses the (key, default_value) pairs to set default values for the attributes in model
m
.- Parameters
m (pyomo model) – The flowsheet containing the model to set default values for
yaml_filename (str) – The path to the yaml file.
- Returns
N/A
watertap.tools.parameter_sweep.parameter_sweep_writer module
watertap.tools.parameter_sweep.sampling_types module
- class watertap.tools.parameter_sweep.sampling_types.FixedSample(pyomo_object, *args, **kwargs)[source]
Bases:
_Sample
- class watertap.tools.parameter_sweep.sampling_types.GeomSample(pyomo_object, *args, **kwargs)[source]
Bases:
FixedSample
- class watertap.tools.parameter_sweep.sampling_types.LatinHypercubeSample(pyomo_object, *args, **kwargs)[source]
Bases:
_Sample
- class watertap.tools.parameter_sweep.sampling_types.LinearSample(pyomo_object, *args, **kwargs)[source]
Bases:
FixedSample
- class watertap.tools.parameter_sweep.sampling_types.NormalSample(pyomo_object, *args, **kwargs)[source]
Bases:
RandomSample
- class watertap.tools.parameter_sweep.sampling_types.RandomSample(pyomo_object, *args, **kwargs)[source]
Bases:
_Sample
- class watertap.tools.parameter_sweep.sampling_types.ReverseGeomSample(pyomo_object, *args, **kwargs)[source]
Bases:
FixedSample
- class watertap.tools.parameter_sweep.sampling_types.SamplingType(value)[source]
Bases:
Enum
An enumeration.
- class watertap.tools.parameter_sweep.sampling_types.UniformSample(pyomo_object, *args, **kwargs)[source]
Bases:
RandomSample