Skip to content

Commit 22865c3

Browse files
committed
clean up NonLinMPC code
1 parent f06caf9 commit 22865c3

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/controller/nonlinmpc.jl

+10-6
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,21 @@ struct NonLinMPC{S<:StateEstimator, JEFunc<:Function} <: PredictiveController
7575
J = let mpc=mpc, model=model # capture mpc and model variables
7676
(ΔŨ...) -> obj_nonlinprog(mpc, model, ΔŨ)
7777
end
78-
register(mpc.optim, :J, nvar, J, autodiff=true)
79-
@NLobjective(mpc.optim, Min, J(ΔŨ...))
78+
register(optim, :J, nvar, J, autodiff=true)
79+
@NLobjective(optim, Min, J(ΔŨ...))
8080
nonlinconstraint = let mpc=mpc, model=model # capture mpc and model variables
8181
(ΔŨ...) -> con_nonlinprog(mpc, model, ΔŨ)
8282
end
8383
nonlincon_memoized = memoize(nonlinconstraint, 2*ny*Hp)
84-
for i=1:ny*Hp
85-
register(mpc.optim, Symbol("C_Ŷmin_$(i)"), nvar, nonlincon_memoized[i], autodiff=true)
84+
n = 0
85+
for i in eachindex(con.Ŷmin)
86+
sym = Symbol("C_Ŷmin_$i")
87+
register(optim, sym, nvar, nonlincon_memoized[n + i], autodiff=true)
8688
end
87-
for i=1:ny*Hp
88-
register(mpc.optim, Symbol("C_Ŷmax_$(i)"), nvar, nonlincon_memoized[ny*Hp+i], autodiff=true)
89+
n = lastindex(con.Ŷmin)
90+
for i in eachindex(con.Ŷmax)
91+
sym = Symbol("C_Ŷmax_$i")
92+
register(optim, sym, nvar, nonlincon_memoized[n + i], autodiff=true)
8993
end
9094
set_silent(optim)
9195
return mpc

0 commit comments

Comments
 (0)