Infinite Models
A technical manual for infinite dimensional models. See the respective guide for more information.
Models
InfiniteOpt.InfiniteModel
— TypeInfiniteModel <: JuMP.AbstractModel
A DataType
for storing all of the mathematical modeling information needed to model an optmization problem with an infinite-dimensional decision space.
InfiniteOpt.InfiniteModel
— MethodInfiniteModel([optimizer_constructor];
[OptimizerModel::Function = TranscriptionModel,
add_bridges::Bool = true, optimizer_model_kwargs...])
Return a new infinite model where an optimizer is specified if an optimizer_constructor
is given. The optimizer can also later be set with the JuMP.set_optimizer
call. By default the optimizer_model
data field is initialized with a TranscriptionModel
, but a different type of model can be assigned via set_optimizer_model
as can be required by extensions.
Example
julia> using InfiniteOpt, JuMP, Ipopt;
julia> model = InfiniteModel()
An InfiniteOpt Model
Feasibility problem with:
Finite Parameters: 0
Infinite Parameters: 0
Variables: 0
Measures: 0
Derivatives: 0
Optimizer model backend information:
Model mode: AUTOMATIC
CachingOptimizer state: NO_OPTIMIZER
Solver name: No optimizer attached.
julia> model = InfiniteModel(Ipopt.Optimizer)
An InfiniteOpt Model
Feasibility problem with:
Finite Parameters: 0
Infinite Parameters: 0
Variables: 0
Measures: 0
Derivatives: 0
Optimizer model backend information:
Model mode: AUTOMATIC
CachingOptimizer state: EMPTY_OPTIMIZER
Solver name: Ipopt
JuMP.object_dictionary
— MethodJuMP.object_dictionary(model::InfiniteModel)::Dict{Symbol, Any}
Return the dictionary that maps the symbol name of a macro defined object (e.g., a parameter, variable, or constraint) to the corresponding object. Objects are registered to a specific symbol in the macros. For example, @variable(model, x[1:2, 1:2])
registers the array of variables x
to the symbol :x
.
InfiniteOpt.has_internal_supports
— Functionhas_internal_supports(pref::Union{IndependentParameterRef, DependentParameterRef})::Bool
Indicate if pref
has internal supports that will be hidden from the user by default.
has_internal_supports(prefs; [kwargs...])
Define has_internal_supports
for general variable references. It relies on has_internal_supports
being defined for the underlying DispatchVariableRef
, otherwise an ArgumentError
is thrown. See the underlying docstrings for more information. Note that this is a auto generated wrapper and the underlying method may or may not use kwargs
.
Base.empty!
— MethodBase.empty!(model::InfiniteModel)::InfiniteModel
Clear out model
of everything except the optimizer information and return the cleared model.
JuMP.set_optimize_hook
— MethodJuMP.set_optimize_hook(
model::InfiniteModel,
hook::Union{Function, Nothing}
)::Nothing
Set the function hook
as the optimize hook for model
where hook
should have be of the form hook(model::GenericModel; hook_specfic_kwargs..., kwargs...)
. The kwargs
are those passed to optimize!
. The hook_specifc_kwargs
are passed as additional keywords by the user when they call optimize!
.
Notes
- The optimize hook should generally modify the model, or some external state
in some way, and then call optimize!(model; ignore_optimize_hook = true)
to optimize the problem, bypassing the hook.
- Use
set_optimize_hook(model, nothing)
to unset an optimize hook.
Abstract Dependencies
InfiniteOpt.AbstractDataObject
— TypeAbstractDataObject
An abstract type for DataType
s that store core variable DataType
s and their model specific information (e.g., dependency mappings). These are what are stored in the InfiniteModel
CleverDict
s.
InfiniteOpt.AbstractInfOptIndex
— TypeAbstractInfOptIndex
An abstract type for all index objects used in InfiniteOpt
.
InfiniteOpt.ObjectIndex
— TypeObjectIndex <: AbstractInfOptIndex
An abstract type for indices of objects stored in MOI.Utilities.CleverDicts
.