fast-aircraft-design / FAST-OAD

FAST-OAD: An open source framework for rapid Overall Aircraft Design
GNU General Public License v3.0
54 stars 26 forks source link

[Proposal] Native DOE Integration for FAST-OAD #576

Open enricostragiotti opened 2 weeks ago

enricostragiotti commented 2 weeks ago

Design of Experiments (DOE) is a valuable tool in aeronautical engineering, enabling rapid exploration of an aircraft's design space. DOE allows engineers to compare design choices, assess the impact of new technologies, and evaluate sensitivity to various parameters. For these reasons, I believe it would be highly beneficial for FAST-OAD to support native DOE execution, both from configuration files and command-line interfaces, similarly to the current capabilities for MDA and MDO.

Main Features:

Nice-to-Have Features:

Future Developments:

Expected User Inputs:

enricostragiotti commented 1 week ago

I add here a sample of what would the configuration file looks like:



# Input and output files
input_file: ./problem_inputs.xml
output_file: ./problem_outputs.xml

# Definition of problem driver assuming the OpenMDAO convention "import openmdao.api as om"
driver: om.ScipyOptimizeDriver(tol=1e-2, optimizer='COBYLA')

model:
  nonlinear_solver: om.NonlinearBlockGS(maxiter=100, atol=1e-2)
  linear_solver: om.DirectSolver()
  geometry:
    # An OpenMDAO component is identified by its "id"
    id: fastoad.geometry.legacy
    # ....
  performance:
    id: fastoad.performances.mission
    propulsion_id: fastoad.wrapper.propulsion.rubber_engine
    mission_file_path: ::sizing_mission
    out_file: ./flight_points.csv
    adjust_fuel: true
    is_sizing: true

design_of_experiments:
  - name: exploration_1
  # Multiple DOEs can be defined in the same configuration file. The name will 
  # be used to generate the subfolders of the calculations
    variables:
      # Description of the variables and the bounds used to create the DOE
      - name: data:geometry:wing:aspect_ratio
        lower: 9.0
        upper: 18.0
      - name: data:geometry:wing:MAC:at25percent:x
        # The bounds can be absolute or relative to a given value or to the value 
        # of the MDA (requires model definition in the configuration file)
        lower_perc: 20.0
        upper_perc: 20.0
        ref_value: evaluate
      - name: data:geometry:wing:sweep_25
        # We can mix percentage and absolute bounds
        lower_perc: 20.0
        upper: 26.0
        ref_value: 25.0
  - name: exploration_2
    variables:
      - name: tuning:propulsion:rubber_engine:SFC:k_cr
        lower: 0.8
        upper: 1.0
      - name: tuning:propulsion:rubber_engine:SFC:k_sl
        bounds_binding_to: tuning:propulsion:rubber_engine:SFC:k_cr
        # Variable can be bind together and share the same value in the DOE
    sampling:
    # Overwrite here the common settings (written later in the file)
      algorithm: FullFactorial
      n_samples: 20
  # Common settings (for all the DOEs in the file)
  sampling:
    algorithm: NestedLHS
    n_samples: 150
    seed_val: 12
    options:
      - nlevel=2
  computing:
    max_CPUs: 8
  output_folder: ./DOE
rparello commented 1 week ago

A few things that would be nice to have: