Surrogate generation API

Info

The JuliaSim software is available for preview only. Please contact us for access, by emailing info@juliacomputing.com, if you are interested in evaluating JuliaSim.

In this section, we provide a high-level overview of the API to present the core functionalities of JuliaSim.jl. To avoid inundating the reader with too many details, we refrain from describing the keyword arguments in certain cases. The functions and arguments below will hopefully help the reader to better understand the application examples. Of course, the complete JuliaSim.jl documentation contains all the necessary details.

surrogatize function

The generic surrogate contains only one function, surrogatize, which takes the following positional arguments:

  • setup: it has to be a type of SimulationSetup.
  • surralg: the surrogate algorithm to be used.
  • n_sample_pts: the number of sets to be sampled from the parameter space.

simulate function

The simulate function takes the following positional arguments:

  • setup: it has to be a type of SimulationSetup.
  • p: simulation parameters.
  • u0: the initial condition.

simulate_ensemble function

The simulate_ensemble function takes the following positional arguments:

  • setup: it has to be a type of SimulationSetup.
  • param_space: the parameter space.
  • n_sample_pts: the number of sets to be sampled from the parameter space.

Simulators

Currently, four simulators are available:

  • deproblem
  • cellml
  • FMUSimSetup
  • SurrogatizeNgSpice

deproblem simulator

As the name suggests, the deproblem simulator is used for solving differential equations. The constructor DEProblemSimulation takes the following arguments:

  • prob: a differential equation problem; has to be specified by the user.
  • alg: solver algorithm. Default: Rosenbrock23().
  • ensemblearg: ensemble solver algorithm. Default: EnsembleDistributed().
  • solver_kwargs: solver-specific keyword arguments.

cellml simulator

The cellml simulator can be used to create biomedical models.


Surrogates

LPCTESN surrogate

The abbreviation LPCTESN stands for 'Linear Projection Continuous-Time Echo State Network'.

reservoir_options

The reservoir_options are specified via the LPCTESN constructor. The only positional argument is reservoir_size.

The list of available options for the customization of the reservoir is given below:

  • reservoir_size: size (type: Int) of the reservoir ODE system.
  • weight_initializer: Default: erdos_renyi.
  • activation_function: Default: tanh.
  • radial_function: Default: linearRadial.
  • output_function: an output function that takes in (state, time) and returns

desired output from the system. Default: (u, t) -> identity(u).

  • reservoir_sim_solver: Default: Tsit5().
  • hybridp: Parameters of a single solution. Default: nothing.
  • reservoir_sim_kwargs

NPCTESN surrogate

The abbreviation NPCTESN stands for 'Nonlinear Projection Continuous-Time Echo State Network'. The constructor is virtually the same as that for its linear counterpart (the only difference lies in some default values).