From 54ee2b30ea8ad0a47202d027a2354c16709ca9cf Mon Sep 17 00:00:00 2001 From: franckgaga Date: Sat, 15 Nov 2025 20:53:50 -0500 Subject: [PATCH 1/2] bench: new EMPC tests with `hessian=true` --- benchmark/3_bench_predictive_control.jl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/benchmark/3_bench_predictive_control.jl b/benchmark/3_bench_predictive_control.jl index dc54b5c39..c88d0d5ae 100644 --- a/benchmark/3_bench_predictive_control.jl +++ b/benchmark/3_bench_predictive_control.jl @@ -417,18 +417,36 @@ empc_ipopt_ss = NonLinMPC(estim2; Hp, Hc, Nwt, Mwt=Mwt2, Cwt, JE, Ewt, optim, tr empc_ipopt_ss = setconstraint!(empc_ipopt_ss; umin, umax) JuMP.unset_time_limit_sec(empc_ipopt_ss.optim) +optim = JuMP.Model(optimizer_with_attributes(Ipopt.Optimizer,"sb"=>"yes"), add_bridges=false) +transcription, hessian = SingleShooting(), true +empc_ipopt_ss_hess = NonLinMPC(estim2; Hp, Hc, Nwt, Mwt=Mwt2, Cwt, JE, Ewt, optim, transcription, hessian, p) +empc_ipopt_ss_hess = setconstraint!(empc_ipopt_ss_hess; umin, umax) +JuMP.unset_time_limit_sec(empc_ipopt_ss_hess.optim) + optim = JuMP.Model(optimizer_with_attributes(Ipopt.Optimizer,"sb"=>"yes"), add_bridges=false) transcription = MultipleShooting() empc_ipopt_ms = NonLinMPC(estim2; Hp, Hc, Nwt, Mwt=Mwt2, Cwt, JE, Ewt, optim, transcription, p) empc_ipopt_ms = setconstraint!(empc_ipopt_ms; umin, umax) JuMP.unset_time_limit_sec(empc_ipopt_ms.optim) +optim = JuMP.Model(optimizer_with_attributes(Ipopt.Optimizer,"sb"=>"yes"), add_bridges=false) +transcription, hessian = MultipleShooting(), true +empc_ipopt_ms_hess = NonLinMPC(estim2; Hp, Hc, Nwt, Mwt=Mwt2, Cwt, JE, Ewt, optim, transcription, hessian, p) +empc_ipopt_ms_hess = setconstraint!(empc_ipopt_ms_hess; umin, umax) +JuMP.unset_time_limit_sec(empc_ipopt_ms_hess.optim) + optim = JuMP.Model(optimizer_with_attributes(Ipopt.Optimizer,"sb"=>"yes"), add_bridges=false) transcription = TrapezoidalCollocation() empc_ipopt_tc = NonLinMPC(estim2; Hp, Hc, Nwt, Mwt=Mwt2, Cwt, JE, Ewt, optim, transcription, p) empc_ipopt_tc = setconstraint!(empc_ipopt_tc; umin, umax) JuMP.unset_time_limit_sec(empc_ipopt_tc.optim) +optim = JuMP.Model(optimizer_with_attributes(Ipopt.Optimizer,"sb"=>"yes"), add_bridges=false) +transcription, hessian = TrapezoidalCollocation(), true +empc_ipopt_tc_hess = NonLinMPC(estim2; Hp, Hc, Nwt, Mwt=Mwt2, Cwt, JE, Ewt, optim, transcription, hessian, p) +empc_ipopt_tc_hess = setconstraint!(empc_ipopt_tc_hess; umin, umax) +JuMP.unset_time_limit_sec(empc_ipopt_tc_hess.optim) + optim = JuMP.Model(MadNLP.Optimizer, add_bridges=false) transcription = SingleShooting() empc_madnlp_ss = NonLinMPC(estim2; Hp, Hc, Nwt, Mwt=Mwt2, Cwt, JE, Ewt, optim, transcription, p) From c41a8eb6b8aa8ebb34cbf1c6c29427d05e9394c8 Mon Sep 17 00:00:00 2001 From: franckgaga Date: Sat, 15 Nov 2025 20:56:20 -0500 Subject: [PATCH 2/2] bench: adding `@benchmarkable` entries --- benchmark/3_bench_predictive_control.jl | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/benchmark/3_bench_predictive_control.jl b/benchmark/3_bench_predictive_control.jl index c88d0d5ae..6fe380fe9 100644 --- a/benchmark/3_bench_predictive_control.jl +++ b/benchmark/3_bench_predictive_control.jl @@ -461,16 +461,31 @@ CASE_MPC["Pendulum"]["NonLinMPC"]["Economic"]["Ipopt"]["SingleShooting"] = sim!($empc_ipopt_ss, $N, $ry; plant=$plant2, x_0=$x_0, x̂_0=$x̂_0, progress=false), samples=samples, evals=evals, seconds=seconds ) +CASE_MPC["Pendulum"]["NonLinMPC"]["Economic"]["Ipopt"]["SingleShooting (Hessian)"] = + @benchmarkable( + sim!($empc_ipopt_ss_hess, $N, $ry; plant=$plant2, x_0=$x_0, x̂_0=$x̂_0, progress=false), + samples=samples, evals=evals, seconds=seconds + ) CASE_MPC["Pendulum"]["NonLinMPC"]["Economic"]["Ipopt"]["MultipleShooting"] = @benchmarkable( sim!($empc_ipopt_ms, $N, $ry; plant=$plant2, x_0=$x_0, x̂_0=$x̂_0, progress=false), samples=samples, evals=evals, seconds=seconds ) +CASE_MPC["Pendulum"]["NonLinMPC"]["Economic"]["Ipopt"]["MultipleShooting (Hessian)"] = + @benchmarkable( + sim!($empc_ipopt_ms_hess, $N, $ry; plant=$plant2, x_0=$x_0, x̂_0=$x̂_0, progress=false), + samples=samples, evals=evals, seconds=seconds + ) CASE_MPC["Pendulum"]["NonLinMPC"]["Economic"]["Ipopt"]["TrapezoidalCollocation"] = @benchmarkable( sim!($empc_ipopt_tc, $N, $ry; plant=$plant2, x_0=$x_0, x̂_0=$x̂_0, progress=false), samples=samples, evals=evals, seconds=seconds ) +CASE_MPC["Pendulum"]["NonLinMPC"]["Economic"]["Ipopt"]["TrapezoidalCollocation (Hessian)"] = + @benchmarkable( + sim!($empc_ipopt_tc_hess, $N, $ry; plant=$plant2, x_0=$x_0, x̂_0=$x̂_0, progress=false), + samples=samples, evals=evals, seconds=seconds + ) CASE_MPC["Pendulum"]["NonLinMPC"]["Economic"]["MadNLP"]["SingleShooting"] = @benchmarkable( sim!($empc_madnlp_ss, $N, $ry; plant=$plant2, x_0=$x_0, x̂_0=$x̂_0, progress=false),