Surrogate training can take many different forms depending on the problem definition and the problem solving methods available. That's why JuliaSimSurrogates.jl provides a flexible framework for posing a problem and employing various problem solving methods.

The Training framework is composed of three parts:

  1. Tasks
  2. Strategies
  3. Actions


A Task is a problem to solve. This is the problem definition and there can only be one. This will vary user to user, but typically it takes the form of a ModelingToolkit.jl model or an FMU.


A Strategy is a way to go about solving the Task. There can be many strategies for a particular Task.

<!– TODO: explain Training Graphs aka DAGs –> <!– TODO: explain Ports aka ways to ensure compatibility between nodes –>


An Action is a procedural step of a Strategy to solve Task. There can (and almost certainly will) be many actions for a Strategy + Task.