gemseo / problems / scalable / data_driven / study

process module

Scalability study - Process

The ScalabilityStudy class implements the concept of scalability study:

  1. By instantiating a ScalabilityStudy, the user defines the MDO problem in terms of design parameters, objective function and constraints.

  2. For each discipline, the user adds a dataset stored in a Dataset and select a type of ScalableModel to build the ScalableDiscipline associated with this discipline.

  3. The user adds different optimization strategies, defined in terms of both optimization algorithms and MDO formulation.

  4. The user adds different scaling strategies, in terms of sizes of design parameters, coupling variables and equality and inequality constraints. The user can also define a scaling strategies according to particular parameters rather than groups of parameters.

  5. Lastly, the user executes the ScalabilityStudy and the results are written in several files and stored into directories in a hierarchical way, where names depends on both MDO formulation, scaling strategy and replications when it is necessary. Different kinds of files are stored: optimization graphs, dependency matrix plots and of course, scalability results by means of a dedicated class: ScalabilityResult.

Classes:

ScalabilityStudy(objective, design_variables)

Scalability Study.

class gemseo.problems.scalable.data_driven.study.process.ScalabilityStudy(objective, design_variables, directory='study', prefix='', eq_constraints=None, ineq_constraints=None, maximize_objective=False, fill_factor=0.7, active_probability=0.1, feasibility_level=0.8, start_at_equilibrium=True, early_stopping=True, coupling_variables=None)[source]

Bases: object

Scalability Study.

The constructor of the ScalabilityStudy class requires two mandatory arguments:

  • the 'objective' name,

  • the list of 'design_variables' names.

Concerning output files, we can specify:

  • the directory which is 'study' by default,

  • the prefix of output file names (default: no prefix).

Regarding optimization parametrization, we can specify:

  • the list of equality constraints names (eq_constraints),

  • the list of inequality constraints names (ineq_constraints),

  • the choice of maximizing the objective function (maximize_objective).

By default, the objective function is minimized and the MDO problem is unconstrained.

Last but not least, with regard to the scalability methodology, we can overwrite:

  • the default fill factor of the input-output dependency matrix ineq_constraints,

  • the probability to set the inequality constraints as active at initial step of the optimization active_probability,

  • the offset of satisfaction for inequality constraints feasibility_level,

  • the use of a preliminary MDA to start at equilibrium start_at_equilibrium,

  • the post-processing of the optimization database to get results earlier than final step early_stopping.

Parameters
  • objective (str) – name of the objective

  • design_variables (list(str)) – names of the design variables

  • directory (str) – working directory of the study. Default: ‘study’.

  • prefix (str) – prefix for the output filenames. Default: ‘’.

  • eq_constraints (list(str)) – names of the equality constraints. Default: None.

  • ineq_constraints (list(str)) – names of the inequality constraints Default: None.

  • maximize_objective (bool) – maximizing objective. Default: False.

  • fill_factor (float) – default fill factor of the input-output dependency matrix. Default: 0.7.

  • active_probability (float) – probability to set the inequality constraints as active at initial step of the optimization. Default: 0.1

  • feasibility_level (float) – offset of satisfaction for inequality constraints. Default: 0.8.

  • start_at_equilibrium (bool) – start at equilibrium using a preliminary MDA. Default: True.

  • early_stopping (bool) – post-process the optimization database to get results earlier than final step.

Methods:

add_discipline(data)

This method adds a disciplinary dataset from a dataset.

add_optimization_strategy(algo, max_iter[, …])

Add both optimization algorithm and MDO formulation, as well as their options.

add_scaling_strategies([design_size, …])

Add different scaling strategies.

execute([n_replicates])

Execute the scalability study, one or several times to take into account the random features of the scalable problems.

set_fill_factor(discipline, output, fill_factor)

param str discipline

name of the discipline

set_input_output_dependency(discipline, …)

Set the dependency between an output and a set of inputs for a given discipline.

Attributes:

disciplines_names

Get discipline names.

add_discipline(data)[source]

This method adds a disciplinary dataset from a dataset.

Parameters

data (Dataset) – dataset provided as a dataset.

add_optimization_strategy(algo, max_iter, formulation='DisciplinaryOpt', algo_options=None, formulation_options=None, top_level_diff='auto')[source]

Add both optimization algorithm and MDO formulation, as well as their options.

Parameters
  • algo (str) – name of the optimization algorithm.

  • max_iter (int) – maximum number of iterations for the optimization algorithm.

  • formulation (str) – name of the MDO formulation. Default: ‘DisciplinaryOpt’.

  • algo_options (dict) – options of the optimization algorithm.

  • formulation_options (dict) – options of the MDO formulation.

  • top_level_diff (str) – differentiation method for the top level disciplines. Default: ‘auto’.

add_scaling_strategies(design_size=None, coupling_size=None, eq_cstr_size=None, ineq_cstr_size=None, variables=None)[source]

Add different scaling strategies.

Parameters
  • design_size (int or list(int)) – size of the design variables. Default: None.

  • coupling_size (int or list(int)) – size of the coupling variables. Default: None.

  • eq_cstr_size (int or list(int)) – size of the equality constraints. Default: None.

  • ineq_cstr_size (int or list(int)) – size of the inequality constraints. Default: None.

property disciplines_names

Get discipline names.

Returns

list of discipline names

Return type

list(str)

execute(n_replicates=1)[source]

Execute the scalability study, one or several times to take into account the random features of the scalable problems.

Parameters

n_replicates (int) – number of times the scalability study is repeated. Default: 1.

set_fill_factor(discipline, output, fill_factor)[source]
Parameters
  • discipline (str) – name of the discipline

  • output (str) – name of the output function

  • fill_factor (float) – fill factor

set_input_output_dependency(discipline, output, inputs)[source]

Set the dependency between an output and a set of inputs for a given discipline.

Parameters
  • discipline (str) – name of the discipline

  • output (str) – name of the output

  • inputs (list(str)) – list of inputs names