Boundary Functions
DynOptInterface.AbstractBoundaryFunction — Type
AbstractBoundaryFunctionSupertype 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 — Type
Initial{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 — Type
Final{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 — Type
Linkage{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 — Type
NonlinearBoundaryFunction(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 — Type
Integral{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 — Type
MultiPhaseIntegral{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 — Type
Bolza{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.