@@ -718,36 +718,6 @@ function init_matconstraint_mhe(::SimModel{NT},
718
718
return i_b, i_g, A
719
719
end
720
720
721
- " By default, no nonlinear constraints in the MHE, thus return nothing."
722
- set_nonlincon! (:: MovingHorizonEstimator , :: SimModel , :: JuMP.GenericModel ) = nothing
723
-
724
- " Set the nonlinear constraints on the output predictions `Ŷ` and terminal states `x̂end`."
725
- function set_nonlincon! (
726
- estim:: MovingHorizonEstimator , :: NonLinModel , optim:: JuMP.GenericModel{JNT}
727
- ) where JNT<: Real
728
- optim, con = estim. optim, estim. con
729
- Z̃var = optim[:Z̃var ]
730
- nonlin_constraints = JuMP. all_constraints (optim, JuMP. NonlinearExpr, MOI. LessThan{JNT})
731
- map (con_ref -> JuMP. delete (optim, con_ref), nonlin_constraints)
732
- for i in findall (.! isinf .(con. X̂0min))
733
- gfunc_i = optim[Symbol (" g_X̂0min_$(i) " )]
734
- @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
735
- end
736
- for i in findall (.! isinf .(con. X̂0max))
737
- gfunc_i = optim[Symbol (" g_X̂0max_$(i) " )]
738
- @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
739
- end
740
- for i in findall (.! isinf .(con. V̂min))
741
- gfunc_i = optim[Symbol (" g_V̂min_$(i) " )]
742
- JuMP. @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
743
- end
744
- for i in findall (.! isinf .(con. V̂max))
745
- gfunc_i = optim[Symbol (" g_V̂max_$(i) " )]
746
- JuMP. @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
747
- end
748
- return nothing
749
- end
750
-
751
721
"""
752
722
init_defaultcon_mhe(
753
723
model::SimModel, He, C, nx̂, nym, E, ex̄, Ex̂, Fx̂, Gx̂, Jx̂, Bx̂
@@ -1289,6 +1259,7 @@ function init_optimization!(
1289
1259
)
1290
1260
end
1291
1261
end
1262
+ set_nonlincon! (estim, model, optim)
1292
1263
return nothing
1293
1264
end
1294
1265
@@ -1421,4 +1392,34 @@ function get_optim_functions(
1421
1392
end
1422
1393
end
1423
1394
return Jfunc, ∇Jfunc!, gfuncs, ∇gfuncs!
1395
+ end
1396
+
1397
+ " By default, no nonlinear constraints in the MHE, thus return nothing."
1398
+ set_nonlincon! (:: MovingHorizonEstimator , :: SimModel , :: JuMP.GenericModel ) = nothing
1399
+
1400
+ " Set the nonlinear constraints on the output predictions `Ŷ` and terminal states `x̂end`."
1401
+ function set_nonlincon! (
1402
+ estim:: MovingHorizonEstimator , :: NonLinModel , optim:: JuMP.GenericModel{JNT}
1403
+ ) where JNT<: Real
1404
+ optim, con = estim. optim, estim. con
1405
+ Z̃var = optim[:Z̃var ]
1406
+ nonlin_constraints = JuMP. all_constraints (optim, JuMP. NonlinearExpr, MOI. LessThan{JNT})
1407
+ map (con_ref -> JuMP. delete (optim, con_ref), nonlin_constraints)
1408
+ for i in findall (.! isinf .(con. X̂0min))
1409
+ gfunc_i = optim[Symbol (" g_X̂0min_$(i) " )]
1410
+ @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
1411
+ end
1412
+ for i in findall (.! isinf .(con. X̂0max))
1413
+ gfunc_i = optim[Symbol (" g_X̂0max_$(i) " )]
1414
+ @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
1415
+ end
1416
+ for i in findall (.! isinf .(con. V̂min))
1417
+ gfunc_i = optim[Symbol (" g_V̂min_$(i) " )]
1418
+ JuMP. @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
1419
+ end
1420
+ for i in findall (.! isinf .(con. V̂max))
1421
+ gfunc_i = optim[Symbol (" g_V̂max_$(i) " )]
1422
+ JuMP. @constraint (optim, gfunc_i (Z̃var... ) <= 0 )
1423
+ end
1424
+ return nothing
1424
1425
end
0 commit comments