Boundary Functions
DynOptInterface.AbstractBoundaryFunction — TypeAbstractBoundaryFunctionSupertype for dynamic functions evaluated at initial and/or final phase boundaries.
That is, expressions that contain $t_0$ and/or $t_f$, respectively.
Initial & Final
DynOptInterface.Initial — TypeInitial{DF}(dyn_fun::DF) where {DF<:AbstractDynamicFunction}Represent the evaluation of an AbstractDynamicFunction at the initial boundary of its phase.
It is a subtype of AbstractBoundaryFunction.
DynOptInterface.Final — TypeFinal{DF}(dyn_fun::DF) where {DF<:AbstractDynamicFunction}Represent the evaluation of an AbstractDynamicFunction at the final boundary of its phase.
It is a subtype of AbstractBoundaryFunction.
Linkage
DynOptInterface.Linkage — TypeLinkage{DF}(dyn_fun_final::DF, dyn_fun_initial::DF) where {DF<:AbstractDynamicFunction}Represent the expression $b_f(\boldsymbol{y}(t_f), t_f) - b_0(\boldsymbol{y}(t_0), t_0)$.
It is a subtype of AbstractBoundaryFunction.
Nonlinear
DynOptInterface.NonlinearBoundaryFunction — TypeNonlinearBoundaryFunction(head::Symbol, args::Vector{Any})Represents a general boundary function $b(\boldsymbol{y}(t_0), \boldsymbol{y}(t_f), t_0, t_f, x)$.
It is a subtype of AbstractBoundaryFunction.
Similar to MOI.ScalarNonlinearFunction, this function is represented by an expression tree, using the following fields:
head
The symbol head must be an operator that is supported by the model. The model attribute MOI.ListOfSupportedNonlinearOperators provides a list of supported operators. If the optimizer does not support head, an MOI.UnsupportedNonlinearOperator error is thrown.
args
The vector args contains the arguments to the nonlinear operator. The arguments must be subtypes of:
RealMOI.AbstractScalarFunctionAbstractBoundaryFunction, including other [NonlinearBoundaryFunction`](@ref)s
Additionally, the optimizer must indicate support of argument types through the supports_objective_argument and supports_constraint_argument functions. Otherwise UnsupportedObjectiveArgument and UnsupportedConstraintArgument errors are thrown.
Integrals
DynOptInterface.Integral — TypeIntegral{DF}(dyn_fun::DF) where {DF<:AbstractDynamicFunction}Represent the expression $\int_{t_0^{(i)}}^{t_f^{(i)}} d(\dot{\boldsymbol{y}}(t^{(i)}), \boldsymbol{y}(t^{(i)}), t^{(i)}, x) \mathrm{d}t^{(i)}$.
It is a sub-type of AbstractBoundaryFunction.
DynOptInterface.MultiPhaseIntegral — TypeMultiPhaseIntegral{DF}(dyn_funs::Vector{DF}) where {DF<:AbstractDynamicFunction}Represent the sum of integrals $\sum_i \big[ \int_{t_0^{(i)}}^{t_f^{(i)}} d(\dot{\boldsymbol{y}}(t^{(i)}), \boldsymbol{y}(t^{(i)}), t^{(i)}, x) \mathrm{d}t^{(i)} \big]$.
It is a subtype of AbstractBoundaryFunction.
DynOptInterface.Bolza — TypeBolza{BF,IF}(
bou_fun::BF,
integral::IF,
) where {BF<:AbstractBoundaryFunction,IF<:Union{Integral,MultiPhaseIntegral}}Represent the expression $b(\boldsymbol{y}(t_0), \boldsymbol{y}(t_f), t_0, t_f, x) + \sum_i \big[ \int_{t_0^{(i)}}^{t_f^{(i)}} d(\dot{\boldsymbol{y}}(t^{(i)}), \boldsymbol{y}(t^{(i)}), t^{(i)}, x) \mathrm{d}t^{(i)} \big]$
That is, the sum of an AbstractBoundaryFunction with either an Integral or a MultiPhaseIntegral. It is a subtype of AbstractBoundaryFunction.