@@ -822,42 +822,6 @@ function con_nonlinprog!(g, mpc::NonLinMPC, ::SimModel, x̂0end, Ŷ0, gc, ϵ)
822822 return g
823823end
824824
825- """
826- con_nonlinprogeq!(
827- geq, X̂0, Û0, mpc::NonLinMPC, model::NonLinModel, ::MultipleShooting, U0, Z̃
828- )
829-
830- Nonlinear equality constrains for [`NonLinModel`](@ref) and [`MultipleShooting`](@ref).
831-
832- The method mutates the `geq`, `X̂0` and `Û0` vectors in argument.
833- """
834- function con_nonlinprogeq! (
835- geq, X̂0, Û0, mpc:: NonLinMPC , model:: NonLinModel , :: MultipleShooting , U0, Z̃
836- )
837- nx̂, nu, nd, Hp, Hc = mpc. estim. nx̂, model. nu, model. nd, mpc. Hp, mpc. Hc
838- nΔU, nX̂ = nu* Hc, nx̂* Hp
839- D̂0 = mpc. D̂0
840- X̂0_Z̃ = @views Z̃[(nΔU+ 1 ): (nΔU+ nX̂)]
841- x̂0 = @views mpc. estim. x̂0[1 : nx̂]
842- d0 = @views mpc. d0[1 : nd]
843- # TODO : allow parallel for loop or threads?
844- for j= 1 : Hp
845- u0 = @views U0[(1 + nu* (j- 1 )): (nu* j)]
846- û0 = @views Û0[(1 + nu* (j- 1 )): (nu* j)]
847- x̂0next = @views X̂0[(1 + nx̂* (j- 1 )): (nx̂* j)]
848- f̂! (x̂0next, û0, mpc. estim, model, x̂0, u0, d0)
849- x̂0next .+ = mpc. estim. f̂op .- mpc. estim. x̂op
850- x̂0next_Z̃ = @views X̂0_Z̃[(1 + nx̂* (j- 1 )): (nx̂* j)]
851- ŝnext = @views geq[(1 + nx̂* (j- 1 )): (nx̂* j)]
852- ŝnext .= x̂0next .- x̂0next_Z̃
853- x̂0 = x̂0next_Z̃ # using states in Z̃ for next iteration (allow parallel for)
854- d0 = @views D̂0[(1 + nd* (j- 1 )): (nd* j)]
855- end
856- return geq
857- end
858- con_nonlinprogeq! (geq,_,_, :: NonLinMPC , :: NonLinModel , :: SingleShooting , _,_) = geq
859- con_nonlinprogeq! (geq,_,_, :: NonLinMPC , :: LinModel , :: TranscriptionMethod , _,_) = geq
860-
861825@doc raw """
862826 con_custom!(gc, mpc::NonLinMPC, Ue, Ŷe, ϵ) -> gc
863827
0 commit comments