Public API
This page lists exported symbols of CTModels.Models.
From CTModels.Models
CTModels.Models [Module]
CTModels.Models Module
ModelsImmutable 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
- model.jl: AbstractModel, Model struct, and all accessor functions (
CTModels.Components.state,CTModels.Components.control,CTModels.Components.variable,CTModels.Components.times,CTModels.Components.objective,CTModels.Models.constraints,CTModels.Models.dynamics,CTModels.Models.definition)
Public API
The following functions are exported and accessible as CTModels.function_name():
Time dependence predicates:
is_autonomous,is_nonautonomousVariable / control presence predicates:
is_variable,is_nonvariable,is_control_free,has_variable,has_control,has_abstract_definition,is_abstractly_definedComponent field accessors:
CTModels.Components.state,CTModels.Components.control,CTModels.Components.variable,CTModels.Components.times,CTModels.Components.objective,CTModels.Models.constraints,CTModels.Models.dynamics,CTModels.Models.definitionNamed accessors on state/control/variable:
state_name,state_components,state_dimension,control_name,control_components,control_dimension,variable_name,variable_components,variable_dimensionExaModels builder:
get_build_examodelConstraints helpers:
isempty_constraints,constraint
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
abstract type AbstractModelAbstract 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
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.AbstractModelImmutable 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
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
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.AbstractConstraintsModelReturn 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
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.
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
control_dimension(ocp::CTModels.Models.Model) -> Int64Return 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.
control_dimension(ocp::CTModels.Building.PreModel) -> Int64Return 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.
control_dimension(sol::CTModels.Solutions.Solution) -> Int64Return 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
control_name(ocp::CTModels.Models.Model) -> StringReturn 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.
control_name(sol::CTModels.Solutions.Solution) -> StringReturn 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
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.AbstractDefinitionReturn 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
dynamics(
ocp::CTModels.Models.Model{<:CTBase.Traits.TimeDependence, <:CTModels.Components.AbstractTimesModel, <:CTModels.Components.AbstractStateModel, <:CTModels.Components.AbstractControlModel, <:CTModels.Components.AbstractVariableModel, D<:Function}
) -> FunctionReturn 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
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}
) -> FunctionReturn the build_examodel.
Arguments
ocp::Model: The optimal control problem with ExaModels builder.
Returns
BE: The ExaModels builder function.
See also: CTModels.Models.dynamics.
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
has_abstract_definition(ocp::CTModels.Models.Model) -> BoolCheck whether the problem has an abstract definition.
Arguments
ocp::Model: The optimal control problem.
Returns
Bool:trueif the problem has an abstract definition,falseotherwise.
See also: CTModels.Models.is_abstractly_defined, CTModels.Models.definition.
is_abstractly_defined [Function]
CTModels.Models.is_abstractly_defined Function
is_abstractly_defined(ocp::CTModels.Models.Model) -> BoolCheck whether the problem is abstractly defined.
Arguments
ocp::Model: The optimal control problem.
Returns
Bool:trueif the problem is abstractly defined,falseotherwise.
See also: CTModels.Models.has_abstract_definition.
isempty_constraints [Function]
CTModels.Models.isempty_constraints Function
isempty_constraints(ocp::CTModels.Models.Model) -> BoolReturn true if the model has no constraints.
Arguments
ocp::Model: The optimal control problem.
Returns
Bool:trueif the model has no constraints,falseotherwise.
See also: CTModels.Models.constraints, CTModels.Models.constraint.
state_components [Function]
CTModels.Models.state_components Function
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.
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
state_dimension(ocp::CTModels.Models.Model) -> Int64Return 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.
state_dimension(ocp::CTModels.Building.PreModel) -> Int64Return 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.
state_dimension(sol::CTModels.Solutions.Solution) -> Int64Return 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
state_name(ocp::CTModels.Models.Model) -> StringReturn 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.
state_name(sol::CTModels.Solutions.Solution) -> StringReturn 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
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.
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
variable_dimension(ocp::CTModels.Models.Model) -> Int64Return 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.
variable_dimension(ocp::CTModels.Building.PreModel) -> Int64Return 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.
variable_dimension(
sol::CTModels.Solutions.Solution
) -> Int64Return 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
variable_name(ocp::CTModels.Models.Model) -> StringReturn 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.
variable_name(sol::CTModels.Solutions.Solution) -> StringReturn 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.