Init

Index

Warning

In the examples in the documentation below, the methods are not prefixed by the module name even if they are private.

julia> using CTModels
julia> x = 1
julia> private_fun(x) # throw an error

must be replaced by

julia> using CTModels
julia> x = 1
julia> CTModels.private_fun(x)

However, if the method is reexported by another package, then, there is no need of prefixing.

julia> module OptimalControl
           import CTModels: private_fun
           export private_fun
       end
julia> using OptimalControl
julia> x = 1
julia> private_fun(x)

Documentation

CTModels.InitType

Initial guess for OCP, contains

  • functions of time for the state and control variables
  • vector for optimization variables

Initialization data for each field can be left to default or:

  • vector for optimization variables
  • constant / vector / function for state and control
  • existing solution ('warm start') for all fields

Constructors:

  • Init(): default initialization
  • Init(state, control, variable, time): constant vector, function handles and / or matrices / vectors interpolated along given time grid
  • Init(sol): from existing solution

Examples

julia> init = Init()
julia> init = Init(state=[0.1, 0.2], control=0.3)
julia> init = Init(state=[0.1, 0.2], control=0.3, variable=0.5)
julia> init = Init(state=[0.1, 0.2], controlt=t->sin(t), variable=0.5)
julia> init = Init(state=[[0, 0], [1, 2], [5, -1]], time=[0, .3, 1.], controlt=t->sin(t))
julia> init = Init(sol)
CTModels.buildFunctionalInitMethod
buildFunctionalInit(data, time, dim) -> CTModels.var"#25#26"

Build functional initialization: general interpolation case

CTModels.buildFunctionalInitMethod
buildFunctionalInit(
    data::Function,
    time,
    dim
) -> CTModels.var"#27#28"{<:Function}

Build functional initialization: function case

CTModels.buildFunctionalInitMethod
buildFunctionalInit(
    data::Nothing,
    time,
    dim
) -> CTModels.var"#25#26"

Build functional initialization: default case

CTModels.buildFunctionalInitMethod
buildFunctionalInit(
    data::Union{Real, AbstractVector{<:Real}},
    time,
    dim
) -> Union{CTModels.var"#29#31", CTModels.var"#30#32"}

Build functional initialization: constant / 1D interpolation

CTModels.checkDimMethod
checkDim(actual_dim, target_dim)

Check if actual dimension is equal to target dimension, error otherwise

CTModels.formatDataMethod
formatData(data) -> Any

Convert matrix to vector of vectors (could be expanded)

CTModels.isaVectVectMethod
isaVectVect(data) -> Bool

Return true if argument is a vector of vectors