@@ -438,6 +438,7 @@ function init_optimization!(mpc::NonLinMPC, model::SimModel, optim)
438
438
@operator (optim, J, nΔŨ, Jfunc)
439
439
@objective (optim, Min, J (ΔŨvar... ))
440
440
init_nonlincon! (mpc, model, gfunc)
441
+ set_nonlincon! (mpc, model, mpc. optim) # TODO : check if this is really necessary !!
441
442
return nothing
442
443
end
443
444
@@ -507,6 +508,18 @@ function get_optim_functions(mpc::NonLinMPC, ::JuMP.GenericModel{JNT}) where JNT
507
508
return Jfunc, gfunc
508
509
end
509
510
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
510
523
511
524
function init_nonlincon! (mpc:: NonLinMPC , :: NonLinModel , gfunc:: Vector{<:Function} )
512
525
optim, con = mpc. optim, mpc. con
@@ -541,19 +554,6 @@ function init_nonlincon!(mpc::NonLinMPC, ::NonLinModel, gfunc::Vector{<:Function
541
554
return nothing
542
555
end
543
556
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
-
557
557
"""
558
558
set_nonlincon!(mpc::NonLinMPC, ::LinModel, optim)
559
559
0 commit comments