Skip to content

Public API

This page lists exported symbols of CTModels.Models.


From CTModels.Models

CTModels.Models [Module]

CTModels.Models Module
julia
Models

Immutable optimal control problem model type and all its accessor methods.

Provides AbstractModel, struct Model (parametric over time dependence and component types), and all reader functions that operate on a built Model.

Organisation

Public API

The following functions are exported and accessible as CTModels.function_name():

Dependencies

Depends on Components for foundational types and low-level accessor functions.

See also: CTModels.Components, CTModels.Building, CTModels.Solutions, CTModels.Init.

AbstractModel [Abstract Type]

CTModels.Models.AbstractModel Type
julia
abstract type AbstractModel

Abstract base type for optimal control problem models.

Subtypes represent either a fully built immutable model (Model) or a mutable model under construction (PreModel).

Model [Struct]

CTModels.Models.Model Type
julia
struct Model{TD<:CTBase.Traits.TimeDependence, TimesModelType<:CTModels.Components.AbstractTimesModel, StateModelType<:CTModels.Components.AbstractStateModel, ControlModelType<:CTModels.Components.AbstractControlModel, VariableModelType<:CTModels.Components.AbstractVariableModel, DynamicsModelType<:Function, ObjectiveModelType<:CTModels.Components.AbstractObjectiveModel, ConstraintsModelType<:CTModels.Components.AbstractConstraintsModel, DefinitionType<:CTModels.Components.AbstractDefinition, BuildExaModelType<:Union{Nothing, Function}} <: CTModels.Models.AbstractModel

Immutable optimal control problem model containing all problem components.

A Model is created from a PreModel once all required fields have been set. It is parameterised by the time dependence type (Autonomous or NonAutonomous) and the types of all its components.

Fields

  • times::TimesModelType: Initial and final time specification.

  • state::StateModelType: State variable structure (name, components).

  • control::ControlModelType: Control variable structure (name, components).

  • variable::VariableModelType: Optimisation variable structure (may be empty).

  • dynamics::DynamicsModelType: System dynamics function (t, x, u, v) -> ẋ.

  • objective::ObjectiveModelType: Cost functional (Mayer, Lagrange, or Bolza).

  • constraints::ConstraintsModelType: All problem constraints.

  • definition::DefinitionType: Original symbolic definition of the problem.

  • build_examodel::BuildExaModelType: Optional ExaModels builder function.

constraint [Function]

CTModels.Models.constraint Function
julia
constraint(
    model::CTModels.Models.Model,
    label::Symbol
) -> Tuple{Symbol, Any, Any, Any}

Get a labelled constraint from the model. Returns a tuple of the form (type, f, lb, ub) where type is the type of the constraint, f is the function, lb is the lower bound and ub is the upper bound.

The function returns an exception if the label is not found in the model.

Arguments

  • model::Model: The optimal control problem.

  • label::Symbol: The constraint label.

Returns

  • Tuple: A tuple of the form (type, f, lb, ub).

See also: CTModels.Models.constraints, CTModels.Components.path_constraints_nl.

constraints [Function]

CTModels.Models.constraints Function
julia
constraints(
    ocp::CTModels.Models.Model{<:CTBase.Traits.TimeDependence, <:CTModels.Components.AbstractTimesModel, <:CTModels.Components.AbstractStateModel, <:CTModels.Components.AbstractControlModel, <:CTModels.Components.AbstractVariableModel, <:Function, <:CTModels.Components.AbstractObjectiveModel, C<:CTModels.Components.AbstractConstraintsModel}
) -> CTModels.Components.AbstractConstraintsModel

Return the constraints struct.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • C: The constraints model.

See also: CTModels.Models.isempty_constraints, CTModels.Models.constraint.

control_components [Function]

CTModels.Models.control_components Function
julia
control_components(
    ocp::CTModels.Models.Model
) -> Vector{String}

Return the names of the components of the control.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Vector{String}: The control component names.

See also: CTModels.Components.control, CTModels.Models.control_name, CTModels.Models.control_dimension.

julia
control_components(
    sol::CTModels.Solutions.Solution
) -> Vector{String}

Return the names of the components of the control.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • Vector{String}: The control component names.

See also: CTModels.Models.control_dimension, CTModels.Models.control_name.

control_dimension [Function]

CTModels.Models.control_dimension Function
julia
control_dimension(ocp::CTModels.Models.Model) -> Int64

Return the control dimension.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Dimension: The control dimension.

See also: CTModels.Components.control, CTModels.Models.control_name, CTModels.Models.control_components.

julia
control_dimension(ocp::CTModels.Building.PreModel) -> Int64

Return the control dimension of the PreModel.

control defaults to CTModels.Components.EmptyControlModel (dimension 0), so — unlike state_dimension — no precondition on control having been set is required.

Arguments

  • ocp::PreModel: The pre-model to query.
julia
control_dimension(sol::CTModels.Solutions.Solution) -> Int64

Return the dimension of the control.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • Dimension: The control dimension.

See also: CTModels.Components.control, CTModels.Models.control_components.

control_name [Function]

CTModels.Models.control_name Function
julia
control_name(ocp::CTModels.Models.Model) -> String

Return the name of the control.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • String: The control name.

See also: CTModels.Components.control, CTModels.Models.control_components, CTModels.Models.control_dimension.

julia
control_name(sol::CTModels.Solutions.Solution) -> String

Return the name of the control.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • String: The control name.

See also: CTModels.Models.control_components, CTModels.Models.control_dimension.

definition [Function]

CTModels.Models.definition Function
julia
definition(
    ocp::CTModels.Models.Model{<:CTBase.Traits.TimeDependence, <:CTModels.Components.TimesModel, <:CTModels.Components.AbstractStateModel, <:CTModels.Components.AbstractControlModel, <:CTModels.Components.AbstractVariableModel, <:Function, <:CTModels.Components.AbstractObjectiveModel, <:CTModels.Components.AbstractConstraintsModel, D<:CTModels.Components.AbstractDefinition}
) -> CTModels.Components.AbstractDefinition

Return the model definition.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • D: The model definition.

See also: CTModels.Components.expression.

dynamics [Function]

CTModels.Models.dynamics Function
julia
dynamics(
    ocp::CTModels.Models.Model{<:CTBase.Traits.TimeDependence, <:CTModels.Components.AbstractTimesModel, <:CTModels.Components.AbstractStateModel, <:CTModels.Components.AbstractControlModel, <:CTModels.Components.AbstractVariableModel, D<:Function}
) -> Function

Return the dynamics.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • D: The dynamics function.

See also: CTModels.Components.state, CTModels.Components.control.

get_build_examodel [Function]

CTModels.Models.get_build_examodel Function
julia
get_build_examodel(
    ocp::CTModels.Models.Model{<:CTBase.Traits.TimeDependence, <:CTModels.Components.AbstractTimesModel, <:CTModels.Components.AbstractStateModel, <:CTModels.Components.AbstractControlModel, <:CTModels.Components.AbstractVariableModel, <:Function, <:CTModels.Components.AbstractObjectiveModel, <:CTModels.Components.AbstractConstraintsModel, <:CTModels.Components.AbstractDefinition, BE<:Function}
) -> Function

Return the build_examodel.

Arguments

  • ocp::Model: The optimal control problem with ExaModels builder.

Returns

  • BE: The ExaModels builder function.

See also: CTModels.Models.dynamics.

julia
get_build_examodel(
    _::CTModels.Models.Model{<:CTBase.Traits.TimeDependence, <:CTModels.Components.AbstractTimesModel, <:CTModels.Components.AbstractStateModel, <:CTModels.Components.AbstractControlModel, <:CTModels.Components.AbstractVariableModel, <:Function, <:CTModels.Components.AbstractObjectiveModel, <:CTModels.Components.AbstractConstraintsModel, <:CTModels.Components.AbstractDefinition, <:Nothing}
)

Fallback: throw when no Exa builder is present.

has_abstract_definition [Function]

CTModels.Models.has_abstract_definition Function
julia
has_abstract_definition(ocp::CTModels.Models.Model) -> Bool

Check whether the problem has an abstract definition.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Bool: true if the problem has an abstract definition, false otherwise.

See also: CTModels.Models.is_abstractly_defined, CTModels.Models.definition.

is_abstractly_defined [Function]

CTModels.Models.is_abstractly_defined Function
julia
is_abstractly_defined(ocp::CTModels.Models.Model) -> Bool

Check whether the problem is abstractly defined.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Bool: true if the problem is abstractly defined, false otherwise.

See also: CTModels.Models.has_abstract_definition.

isempty_constraints [Function]

CTModels.Models.isempty_constraints Function
julia
isempty_constraints(ocp::CTModels.Models.Model) -> Bool

Return true if the model has no constraints.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Bool: true if the model has no constraints, false otherwise.

See also: CTModels.Models.constraints, CTModels.Models.constraint.

state_components [Function]

CTModels.Models.state_components Function
julia
state_components(
    ocp::CTModels.Models.Model
) -> Vector{String}

Return the names of the components of the state.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Vector{String}: The state component names.

See also: CTModels.Components.state, CTModels.Models.state_name, CTModels.Models.state_dimension.

julia
state_components(
    sol::CTModels.Solutions.Solution
) -> Vector{String}

Return the names of the components of the state.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • Vector{String}: The state component names.

See also: CTModels.Models.state_dimension, CTModels.Models.state_name.

state_dimension [Function]

CTModels.Models.state_dimension Function
julia
state_dimension(ocp::CTModels.Models.Model) -> Int64

Return the state dimension.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Dimension: The state dimension.

See also: CTModels.Components.state, CTModels.Models.state_name, CTModels.Models.state_components.

julia
state_dimension(ocp::CTModels.Building.PreModel) -> Int64

Return the state dimension of the PreModel.

Arguments

  • ocp::PreModel: The pre-model to query.

Throws

  • Exceptions.PreconditionError: if the state has not been set yet.
julia
state_dimension(sol::CTModels.Solutions.Solution) -> Int64

Return the dimension of the state.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • Dimension: The state dimension.

See also: CTModels.Components.state, CTModels.Models.state_components.

state_name [Function]

CTModels.Models.state_name Function
julia
state_name(ocp::CTModels.Models.Model) -> String

Return the name of the state.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • String: The state name.

See also: CTModels.Components.state, CTModels.Models.state_components, CTModels.Models.state_dimension.

julia
state_name(sol::CTModels.Solutions.Solution) -> String

Return the name of the state.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • String: The state name.

See also: CTModels.Models.state_components, CTModels.Models.state_dimension.

variable_components [Function]

CTModels.Models.variable_components Function
julia
variable_components(
    ocp::CTModels.Models.Model
) -> Vector{String}

Return the names of the components of the variable.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Vector{String}: The variable component names.

See also: CTModels.Components.variable, CTModels.Models.variable_name, CTModels.Models.variable_dimension.

julia
variable_components(
    sol::CTModels.Solutions.Solution
) -> Vector{String}

Return the names of the components of the variable.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • Vector{String}: The variable component names.

See also: CTModels.Models.variable_dimension, CTModels.Models.variable_name.

variable_dimension [Function]

CTModels.Models.variable_dimension Function
julia
variable_dimension(ocp::CTModels.Models.Model) -> Int64

Return the variable dimension.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • Dimension: The variable dimension.

See also: CTModels.Components.variable, CTModels.Models.variable_name, CTModels.Models.variable_components.

julia
variable_dimension(ocp::CTModels.Building.PreModel) -> Int64

Return the variable dimension of the PreModel.

variable defaults to CTModels.Components.EmptyVariableModel (dimension 0), so — unlike state_dimension — no precondition on variable having been set is required.

Arguments

  • ocp::PreModel: The pre-model to query.
julia
variable_dimension(
    sol::CTModels.Solutions.Solution
) -> Int64

Return the dimension of the variable.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • Dimension: The variable dimension.

See also: CTModels.Components.variable, CTModels.Models.variable_components.

variable_name [Function]

CTModels.Models.variable_name Function
julia
variable_name(ocp::CTModels.Models.Model) -> String

Return the name of the variable.

Arguments

  • ocp::Model: The optimal control problem.

Returns

  • String: The variable name.

See also: CTModels.Components.variable, CTModels.Models.variable_components, CTModels.Models.variable_dimension.

julia
variable_name(sol::CTModels.Solutions.Solution) -> String

Return the name of the variable.

Arguments

  • sol::Solution: The optimal control solution.

Returns

  • String: The variable name.

See also: CTModels.Models.variable_components, CTModels.Models.variable_dimension.