We have released version 0.15.0 of our energy system simulation engine ReSiE. This release introduces parameter studies, optimisation and sensitivity analysis, allowing energy systems to be evaluated systematically across different component sizes, operating parameters and assumptions.

The new parameter_study configuration supports systematic parameter variation as well as single- and multi-objective black-box optimisation. Objectives can be derived from simulation outputs, economic results and GHG emissions results. ReSiE supports several optimisation backends and can minimise or maximise individual objectives. Parameter studies can also include global sensitivity analysis based on polynomial chaos expansion and Sobol indices, as well as local one-at-a-time sensitivity analysis.

Parameter-study results can be exported to CSV files and visualised using multiple plots. Calculations can use Julia threads where supported, and improved interruption handling preserves available results when a study is stopped. The release also includes new examples and scenarios demonstrating parameter variation, component-size optimisation and sensitivity analysis.

The latest release can be found here and details are available in the documentation of the QuaSi project.

Major feature: Parameter studies, optimisation and sensitivity analysis

  • Add a parameter_study section for repeatedly simulating an energy system with different input parameters
    • Define variable parameters using optimisation bounds, starting values, explicit variation values or generated ranges
    • Define objectives from sums or means of simulation outputs, economic results and GHG emissions results
    • Combine objectives using sum or a weighted linear function, or retain them as separate objectives for multi-objective optimisation
  • Add systematic parameter variation
    • Evaluate the Cartesian product of parameter values, zip corresponding values or generate a configured number of random samples
  • Add single- and multi-objective optimisation
    • Add support for algorithms from Optim, BlackBoxOptim, Metaheuristics, NLopt and NOMAD
    • Add run, time and tolerance limits where supported by the selected backend
    • Add objective_senses for minimising or maximising individual objectives
    • Add an optional refinement stage for continuing a single-objective optimisation from its best result
    • Normalise variable parameters internally while retaining physical values in project files and results
  • Add global and local sensitivity analyses
    • Fit a polynomial chaos expansion surrogate and calculate first- and total-order Sobol indices for global sensitivity analysis
    • Change one parameter at a time around configured starting values or the best available result for local sensitivity analysis
    • Reuse matching results from parameter variation, optimisation and preceding sensitivity calculations
    • Sensitivity analysis currently supports single-objective studies only
  • Add threaded execution for parameter variation, sensitivity analysis and optimisation algorithms that support parallel evaluation
  • Add CSV and interactive HTML outputs for parameter studies
    • Add complete result tables and separate global- and local-sensitivity CSV files
    • Add optional continuous CSV writing so partial results remain available during long or interrupted studies
    • Add convergence, matrix, objective-parameter, parallel-coordinate, interactive 3D and sensitivity plots
  • Add disable_all_simulation_outputs, enabled by default, to suppress regular outputs from individual parameter-study simulations
    • When individual simulation outputs are enabled, varied parameter values are included in their file names to prevent overwriting
  • Add parameter-study status messages, result summaries and output paths to the general log
  • Improve interruption handling so Ctrl+C stops running and pending simulations while preserving available results
  • Add the example multi_family_house_optim.json and the scenarios multi_family_house_optim and multi_family_house_param_variation

Breaking changes

  • Rename general output-path parameters for consistency
    • csv_output_filecsv_output_file_path
    • output_plot_fileoutput_plot_file_path
    • sankey_plot_filesankey_plot_file_path
  • Rename CSV-related parameters to consistently use lowercase csv
    • write_summary_CSVwrite_summary_csv
    • output_economic_CSVoutput_economic_csv
    • economic_CSV_file_patheconomic_csv_file_path
    • output_emissions_CSVoutput_emissions_csv
    • emissions_CSV_file_pathemissions_csv_file_path
  • Change fixed output precision to use significant digits instead of decimal digits
    • Update scenario reference outputs to reflect the changed rounding behaviour

Minor changes / fixes

  • Add multi-family-house and district examples and scenarios with economic evaluation and GHG emissions calculations
  • Add summary CSV generation with automatic calculation of means, sums, minima and maxima
  • Add capex_specific_scale and the economic result annuity_opex_including_energies
  • Add validation for profile values containing Inf or NaN
  • Improve error messages for unknown component types, empty interfaces and missing scenarios
  • Extend the storage_driven control module with control_mode for storages used as sources
  • Fix heat-pump temperature calculations, secondary-interface behaviour, slice splitting and storage transfer handling
  • Fix transformer operation ordering for active part-load operation on middle busses
  • Fix an incorrect conditional in GeothermalHeatCollector
  • Prevent file-only plots from opening graphical windows during CLI execution
  • Fix geothermal collector and probe figures interfering with other plots
  • Fix logger shutdown so final messages are written before log files are closed
  • Clarify heat-pump COP warnings, installation instructions and file-path formatting
  • Add and update missing scenario reference outputs

Internal changes

  • Add the optimisation and sensitivity dependencies BlackBoxOptim, Metaheuristics, NLopt, NOMAD and PolyChaos
  • Separate parameter-study execution and output generation into parameter_study.jl and parameter_study_output.jl
  • Rename file_output.jl to simulation_output.jl and generalise simulation-result extraction for parameter-study objectives
  • Add a GlobalInfo log level for messages applying to an entire parameter study
  • Cache reusable profiles and the order of operations across repeated simulation runs
  • Improve parameter-study support in the scenario CLI
  • Update examples, scenario inputs and reference files to use the renamed IO settings