Infinite Models

A technical manual for infinite dimensional models. See the respective guide for more information.


InfiniteModel <: JuMP.AbstractModel

A DataType for storing all of the mathematical modeling information needed to model an optmization problem with an infinite-dimensional decision space.


  • independent_params::MOIUC.CleverDict{IndependentParameterIndex, ScalarParameterData{IndependentParameter}}: The independent parameters and their mapping information.
  • dependent_params::MOIUC.CleverDict{DependentParametersIndex, MultiParameterData}: The dependent parameters and their mapping information.
  • finite_params::MOIUC.CleverDict{FiniteParameterIndex, ScalarParameterData{FiniteParameter}}: The finite parameters and their mapping information.
  • name_to_param::Union{Dict{String, AbstractInfOptIndex}, Nothing}: Field to help find a parameter given the name.
  • last_param_num::Int: The last parameter number to be used.
  • param_object_indices::Vector{Union{IndependentParameterIndex, DependentParametersIndex}}: The collection of parameter object indices in creation order.
  • param_functions::MOIUC.CleverDict{ParameterFunctionIndex, ParameterFunctionData{ParameterFunction}}: The infinite parameter functions and their mapping information.
  • infinite_vars::MOIUC.CleverDict{InfiniteVariableIndex, <:VariableData{<:InfiniteVariable}}: The infinite variables and their mapping information.
  • semi_infinite_vars::MOIUC.CleverDict{SemiInfiniteVariableIndex, <:VariableData{<:SemiInfiniteVariable}}: The semi-infinite variables and their mapping information.
  • semi_lookup::Dict{<:Tuple, SemiInfiniteVariableIndex}: Look-up if a variable already already exists.
  • point_vars::MOIUC.CleverDict{PointVariableIndex, <:VariableData{<:PointVariable}}: The point variables and their mapping information.
  • point_lookup::Dict{<:Tuple, PointVariableIndex}: Look-up if a variable already exists.
  • finite_vars::MOIUC.CleverDict{FiniteVariableIndex, VariableData{JuMP.ScalarVariable{Float64, Float64, Float64, Float64}}}: The finite variables and their mapping information.
  • name_to_var::Union{Dict{String, AbstractInfOptIndex}, Nothing}: Field to help find a variable given the name.
  • derivatives::MOIUC.CleverDict{DerivativeIndex, <:VariableData{<:Derivative}}: The derivatives and their mapping information.
  • deriv_lookup::Dict{<:Tuple, DerivativeIndex}: Map derivative variable-parameter pairs to a derivative index to prevent duplicates.
  • measures::MOIUC.CleverDict{MeasureIndex, <:MeasureData}: The measures and their mapping information.
  • integral_defaults::Dict{Symbol}: The default keyword arguments for integral.
  • constraints::MOIUC.CleverDict{InfOptConstraintIndex, <:ConstraintData}: The constraints and their mapping information.
  • constraint_restrictions::Dict{InfOptConstraintIndex, <:DomainRestrictions} Map constraints to their domain restrictions if they have any.
  • name_to_constr::Union{Dict{String, InfOptConstraintIndex}, Nothing}: Field to help find a constraint given the name.
  • objective_sense::MOI.OptimizationSense: Objective sense.
  • objective_function::JuMP.AbstractJuMPScalar: Finite scalar function.
  • objective_has_measures::Bool: Does the objective contain measures?
  • registrations::Vector{RegisteredFunction}: The nonlinear registered functions.
  • Dict{Tuple{Symbol, Int}, Function}: Map a name and number of arguments to a registered function.
  • obj_dict::Dict{Symbol, Any}: Store Julia symbols used with InfiniteModel
  • optimizer_constructor: MOI optimizer constructor (e.g., Gurobi.Optimizer).
  • optimizer_model::JuMP.Model: Model used to solve InfiniteModel
  • ready_to_optimize::Bool: Is the optimizer_model up to date.
  • ext::Dict{Symbol, Any}: Store arbitrary extension information.
              [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.


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(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.

has_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.


Clear out model of everything except the optimizer information and return the cleared model.


Abstract Dependencies


An abstract type for DataTypes that store core variable DataTypes and their model specific information (e.g., dependency mappings). These are what are stored in the InfiniteModel CleverDicts.

ObjectIndex <: AbstractInfOptIndex

An abstract type for indices of objects stored in MOI.Utilities.CleverDicts.