@@ -23,7 +23,7 @@ struct JuMPDynamicOptProblem{uType, tType, isinplace, P, F, K} <:
2323    u0:: uType 
2424    tspan:: tType 
2525    p:: P 
26-     model :: InfiniteOptModel 
26+     wrapped_model :: InfiniteOptModel 
2727    kwargs:: K 
2828
2929    function  JuMPDynamicOptProblem (f, u0, tspan, p, model, kwargs... )
@@ -38,7 +38,7 @@ struct InfiniteOptDynamicOptProblem{uType, tType, isinplace, P, F, K} <:
3838    u0:: uType 
3939    tspan:: tType 
4040    p:: P 
41-     model :: InfiniteOptModel 
41+     wrapped_model :: InfiniteOptModel 
4242    kwargs:: K 
4343
4444    function  InfiniteOptDynamicOptProblem (f, u0, tspan, p, model, kwargs... )
@@ -110,34 +110,10 @@ function MTK.InfiniteOptDynamicOptProblem(sys::ODESystem, u0map, tspan, pmap;
110110        steps =  nothing ,
111111        guesses =  Dict (), kwargs... )
112112    prob =  MTK. process_DynamicOptProblem (InfiniteOptDynamicOptProblem, InfiniteOptModel, sys, u0map, tspan, pmap; dt, steps, guesses, kwargs... )
113-     MTK. add_equational_constraints! (prob. model , sys, pmap, tspan)
113+     MTK. add_equational_constraints! (prob. wrapped_model , sys, pmap, tspan)
114114    prob
115115end 
116116
117- function  MTK. set_variable_bounds! (model:: InfiniteOptModel , sys, pmap, tf)
118-     for  (i, u) in  enumerate (unknowns (sys))
119-         if  MTK. hasbounds (u)
120-             lo, hi =  MTK. getbounds (u)
121-             set_lower_bound (model. U[i], Symbolics. fixpoint_sub (lo, pmap))
122-             set_upper_bound (model. U[i], Symbolics. fixpoint_sub (hi, pmap))
123-         end 
124-     end 
125- 
126-     for  (i, v) in  enumerate (MTK. unbound_inputs (sys))
127-         if  MTK. hasbounds (v)
128-             lo, hi =  MTK. getbounds (v)
129-             set_lower_bound (model. V[i], Symbolics. fixpoint_sub (lo, pmap))
130-             set_upper_bound (model. V[i], Symbolics. fixpoint_sub (hi, pmap))
131-         end 
132-     end 
133- 
134-     if  MTK. symbolic_type (tf) ===  MTK. ScalarSymbolic () &&  hasbounds (tf)
135-         lo, hi =  MTK. getbounds (tf)
136-         set_lower_bound (model. tₛ, lo)
137-         set_upper_bound (model. tₛ, hi)
138-     end 
139- end 
140- 
141117function  MTK. substitute_integral (model, exprs, tspan)
142118    intmap =  Dict ()
143119    for  int in  MTK. collect_applied_operators (exprs, Symbolics. Integral)
@@ -191,14 +167,12 @@ end
191167
192168function  add_solve_constraints! (prob:: JuMPDynamicOptProblem , tableau)
193169    @unpack  A, α, c =  tableau
194-     @unpack  model, f, p =  prob
195-     t =  model. model[:t ]
170+     @unpack  wrapped_model, f, p =  prob
171+     @unpack  tₛ, U, V, model =  wrapped_model
172+     t =  model[:t ]
196173    tsteps =  supports (t)
197174    dt =  tsteps[2 ] -  tsteps[1 ]
198175
199-     tₛ =  model. tₛ
200-     U =  model. U
201-     V =  model. V
202176    nᵤ =  length (U)
203177    nᵥ =  length (V)
204178    if  MTK. is_explicit (tableau)
@@ -212,22 +186,22 @@ function add_solve_constraints!(prob::JuMPDynamicOptProblem, tableau)
212186                push! (K, Kₙ)
213187            end 
214188            ΔU =  dt *  sum ([α[i] *  K[i] for  i in  1 : length (α)])
215-             @constraint (model. model , [n =  1 : nᵤ], U[n](τ) +  ΔU[n]== U[n](τ +  dt),
189+             @constraint (model, [n =  1 : nᵤ], U[n](τ) +  ΔU[n]== U[n](τ +  dt),
216190                base_name= " solve_time_$τ " 
217191            empty! (K)
218192        end 
219193    else 
220-         @variable (model. model , K[1 : length (α), 1 : nᵤ], Infinite (t ))
194+         K  =   @variable (model, K[1 : length (α), 1 : nᵤ], Infinite (model[ :t ] ))
221195        ΔUs =  A *  K
222196        ΔU_tot =  dt *  (K'  *  α)
223197        for  τ in  tsteps[1 : end - 1 ]
224198            for  (i, h) in  enumerate (c)
225199                ΔU =  @view  ΔUs[i, :]
226-                 Uₙ =  U +  ΔU *  h  *   dt
227-                 @constraint (model. model , [j =  1 : nᵤ], K[i, j]== (tₛ *  f (Uₙ, V, p, τ +  h *  dt)[j]),
200+                 Uₙ =  U +  ΔU *  dt
201+                 @constraint (model, [j =  1 : nᵤ], K[i, j]== (tₛ *  f (Uₙ, V, p, τ +  h *  dt)[j]),
228202                    DomainRestrictions (t =>  τ), base_name= " solve_K$i ($τ )" 
229203            end 
230-             @constraint (model. model , [n =  1 : nᵤ], U[n](τ) +  ΔU_tot[n]== U[n](min (τ +  dt, tsteps[end ])),
204+             @constraint (model, [n =  1 : nᵤ], U[n](τ) +  ΔU_tot[n]== U[n](min (τ +  dt, tsteps[end ])),
231205                DomainRestrictions (t =>  τ), base_name= " solve_U($τ )" 
232206        end 
233207    end 
256230MTK. InfiniteOptCollocation (solver, derivative_method =  InfiniteOpt. FiniteDifference (InfiniteOpt. Backward ())) =  InfiniteOptCollocation (solver, derivative_method)
257231
258232function  MTK. prepare_and_optimize! (prob:: JuMPDynamicOptProblem , solver:: JuMPCollocation ; verbose =  false , kwargs... )
259-     model =  prob. model . model
233+     model =  prob. wrapped_model . model
260234    verbose ||  set_silent (model)
261235    #  Unregister current solver constraints
262236    for  con in  all_constraints (model)
@@ -278,7 +252,7 @@ function MTK.prepare_and_optimize!(prob::JuMPDynamicOptProblem, solver::JuMPColl
278252end 
279253
280254function  MTK. prepare_and_optimize! (prob:: InfiniteOptDynamicOptProblem , solver:: InfiniteOptCollocation ; verbose =  false , kwargs... )
281-     model =  prob. model . model
255+     model =  prob. wrapped_model . model
282256    verbose ||  set_silent (model)
283257    set_derivative_method (model[:t ], solver. derivative_method)
284258    set_optimizer (model, solver. solver)
0 commit comments