@@ -438,6 +438,7 @@ function init_optimization!(mpc::NonLinMPC, model::SimModel, optim)
438438 @operator (optim, J, nΔŨ, Jfunc)
439439 @objective (optim, Min, J (ΔŨvar... ))
440440 init_nonlincon! (mpc, model, gfunc)
441+ set_nonlincon! (mpc, model, mpc. optim) # TODO : check if this is really necessary !!
441442 return nothing
442443end
443444
@@ -507,6 +508,18 @@ function get_optim_functions(mpc::NonLinMPC, ::JuMP.GenericModel{JNT}) where JNT
507508 return Jfunc, gfunc
508509end
509510
511+ function init_nonlincon! (mpc:: NonLinMPC , :: LinModel , gfunc:: Vector{<:Function} )
512+ optim, con = mpc. optim, mpc. con
513+ nΔŨ = length (mpc. ΔŨ)
514+ if length (con. i_g) ≠ 0
515+ i_base = 0
516+ for i in 1 : con. nc
517+ name = Symbol (" g_c_$i " )
518+ optim[name] = JuMP. add_nonlinear_operator (optim, nΔŨ, gfunc[i_base+ i]; name)
519+ end
520+ end
521+ return nothing
522+ end
510523
511524function init_nonlincon! (mpc:: NonLinMPC , :: NonLinModel , gfunc:: Vector{<:Function} )
512525 optim, con = mpc. optim, mpc. con
@@ -541,19 +554,6 @@ function init_nonlincon!(mpc::NonLinMPC, ::NonLinModel, gfunc::Vector{<:Function
541554 return nothing
542555end
543556
544- function init_nonlincon! (mpc:: NonLinMPC , :: LinModel , gfunc:: Vector{<:Function} )
545- optim, con = mpc. optim, mpc. con
546- nΔŨ = length (mpc. ΔŨ)
547- if length (con. i_g) ≠ 0
548- i_base = 0
549- for i in 1 : con. nc
550- name = Symbol (" g_c_$i " )
551- optim[name] = JuMP. add_nonlinear_operator (optim, nΔŨ, gfunc[i_base+ i]; name)
552- end
553- end
554- return nothing
555- end
556-
557557"""
558558 set_nonlincon!(mpc::NonLinMPC, ::LinModel, optim)
559559
0 commit comments