5454# ###############################################################################
5555# VARIABLE INITIALIZATION METHODS
5656# ###############################################################################
57+ """
58+ transcribe_finite_parameters!(
59+ backend::TranscriptionBackend,
60+ model::InfiniteOpt.InfiniteModel
61+ )::Nothing
62+
63+ Create a transcription variable (i.e., a JuMP Parameter) for each `FiniteParameter`
64+ stored in `model` and add it to `backend`. The variable mapping is
65+ also stored in `TranscriptionData.finvar_mappings` which enables
66+ [`transcription_variable`](@ref) and [`lookup_by_support`](@ref).
67+ """
68+ function transcribe_finite_parameters! (
69+ backend:: TranscriptionBackend ,
70+ model:: InfiniteOpt.InfiniteModel
71+ )
72+ for (idx, object) in InfiniteOpt. _data_dictionary (model, InfiniteOpt. FiniteParameter)
73+ fpref = InfiniteOpt. GeneralVariableRef (model, idx)
74+
75+ # Prepare arguments for building JuMP parameter
76+ name = object. name
77+ pValue = object. parameter. value
78+
79+ # Build the JuMP variable and add it to the backend
80+ pref = JuMP. @variable (backend. model, base_name = name, set = MOI. Parameter (pValue))
81+ transcription_data (backend). finvar_mappings[fpref] = pref
82+ end
83+ return
84+ end
5785"""
5886 transcribe_finite_variables!(
5987 backend::TranscriptionBackend,
@@ -459,13 +487,13 @@ function transcription_expression(
459487 end
460488end
461489
462- # Point variables and finite variables
490+ # Point variables, finite variables and finite parameters
463491function transcription_expression (
464492 vref:: InfiniteOpt.GeneralVariableRef ,
465493 index_type:: Type{V} ,
466494 backend:: TranscriptionBackend ,
467495 support:: Vector{Float64}
468- ) where {V <: FinVarIndex }
496+ ) where {V <: Union{ FinVarIndex, InfiniteOpt.FiniteParameterIndex} }
469497 return lookup_by_support (vref, index_type, backend, support)
470498end
471499
@@ -480,15 +508,6 @@ function transcription_expression(
480508 return support[param_num]
481509end
482510
483- # Finite parameters
484- function transcription_expression (
485- vref:: InfiniteOpt.GeneralVariableRef ,
486- index_type:: Type{InfiniteOpt.FiniteParameterIndex} ,
487- backend:: TranscriptionBackend ,
488- support:: Vector{Float64}
489- )
490- return InfiniteOpt. parameter_value (vref)
491- end
492511
493512# AffExpr and QuadExpr and NonlinearExpr
494513function transcription_expression (
@@ -957,6 +976,7 @@ function build_transcription_backend!(
957976 # add nonlinear operators as needed
958977 InfiniteOpt. add_operators_to_jump (backend. model, model)
959978 # define the variables
979+ transcribe_finite_parameters! (backend, model)
960980 transcribe_finite_variables! (backend, model)
961981 transcribe_infinite_variables! (backend, model)
962982 transcribe_derivative_variables! (backend, model)
0 commit comments