ControlledPlant{ST, CT, XT, DT, PT, CPRT, CPST} <: AbstractControlProblem

Struct representing a closed-loop controlled system.


  • ivp – initial-value problem
  • controller – controller
  • vars – dictionary storing state variables, input variables and control variables
  • period – control period
  • postprocessing – postprocessing of the controller output
  • preprocessing – preprocessing of the controller input


  • ST: type of system
  • CT: type of controller
  • XT: type of initial condition
  • DT: type of variables
  • PT: type of period
  • CPRT: type of control preprocessing
  • CPST: type of control postprocessing


While typically the controller is a neural network, this struct does not prescribe the type.

simulate(cp::AbstractControlProblem, args...; kwargs...)

Simulate a controlled system for a family of random trajectories.


  • cp – controlled problem
  • trajectories – (optional, default: 10) number of simulated trajectories


An object of type EnsembleSimulationSolution.


This function uses the ensemble simulations feature from OrdinaryDiffEq.jl.

solve(prob::AbstractControlProblem, args...; kwargs...)

Solve the control problem defined by prob.


  • prob – controlled problem

Additional options are passed as arguments or keyword arguments; see the notes below for details. See the online documentation for examples.


The solution of a reachability problem controlled by a periodic controller. The control signals are stored in the ext field with each flowpipe.


Mandatory arguments

  • Use the tspan keyword argument to specify the time span (start time and time

horizon); it can be a tuple, an interval, or a vector with two components. Alternatively, use the T keyword argument to specify only the time horizon, in which case the start time is assumed to be zero.

  • Use the algorithm_plant keyword argument to specify the algorithm for the


  • Use the algorithm_controller keyword argument to specify the algorithm for

the controller.

Optional arguments

  • Use the splitter and input_splitter keyword arguments to specify a


Default: NoSplitter()

  • Use the reconstruction_method keyword arguments to specify a reconstruction

method for the interface between plant and controller.

Default: TaylorModelReconstructor()