Skip to content

added: NonLinModelDAE and TrapezoidalCollocation support in MovingHorizonEstimator - #450

Merged
franckgaga merged 35 commits into
mainfrom
dae_mhe
Sep 20, 2026
Merged

franckgaga merged 35 commits into
mainfrom
dae_mhe

Conversation

@franckgaga

@franckgaga franckgaga commented Sep 18, 2026

Copy link
Copy Markdown
Member

This PR bring the support of NonLinModelDAE objects in the MovingHorizonEstimator transcribed with a TrapezoidalCollocation. The OrthogonalCollocation support will comes in a separate PR.

@codecov-commenter

codecov-commenter commented Sep 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.06840% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 97.22%. Comparing base (029a16c) to head (d826ab1).
⚠️ Report is 23 commits behind head on main.

Files with missing lines Patch % Lines
src/estimator/mhe/transcription.jl 97.22% 4 Missing ⚠️
src/estimator/execute.jl 80.00% 3 Missing ⚠️
src/model/nonlinmodeldae.jl 84.61% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #450      +/-   ##
==========================================
+ Coverage   96.92%   97.22%   +0.30%     
==========================================
  Files          28       28              
  Lines        6657     6811     +154     
==========================================
+ Hits         6452     6622     +170     
+ Misses        205      189      -16     
Flag Coverage Δ
unittests 97.22% <97.06%> (+0.30%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

github-actions Bot commented Sep 19, 2026

Copy link
Copy Markdown

Benchmark Results (Julia v1)

Time benchmarks
main d826ab1... main / d826ab1...
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/DAQP/SingleShooting 5.87 ± 0.83 ms 5.97 ± 0.84 ms 0.983 ± 0.2
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/MultipleShooting 11.3 ± 0.74 ms 11.7 ± 0.76 ms 0.971 ± 0.09
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/SingleShooting 1.91 ± 0.039 ms 1.94 ± 0.069 ms 0.981 ± 0.04
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/DAQP/SingleShooting 5.72 ± 0.86 ms 5.64 ± 0.77 ms 1.01 ± 0.21
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/MultipleShooting 7.8 ± 0.98 ms 7.77 ± 0.94 ms 1 ± 0.17
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/SingleShooting 1.96 ± 0.034 ms 1.95 ± 0.03 ms 1.01 ± 0.023
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/DAQP/SingleShooting 10.2 ± 1.9 ms 10.3 ± 2 ms 0.99 ± 0.27
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/MultipleShooting 0.121 ± 0.01 s 0.123 ± 0.032 s 0.982 ± 0.27
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/SingleShooting 14.6 ± 2.3 ms 14.8 ± 1.9 ms 0.985 ± 0.2
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting 0.565 ± 0.0039 s 0.561 ± 0.0024 s 1.01 ± 0.0082
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting (Hessian) 1.1 ± 0.021 s 1.1 ± 0.0093 s 1 ± 0.021
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/SingleShooting 1.67 ± 0.011 s 1.66 ± 0.01 s 1.01 ± 0.0088
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation 0.889 ± 0.0046 s 0.901 ± 0.0042 s 0.986 ± 0.0069
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation (Hessian) 0.889 ± 0.0054 s 0.912 ± 0.014 s 0.974 ± 0.016
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting 0.367 ± 0.0033 s 0.377 ± 0.0033 s 0.974 ± 0.012
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting (Hessian) 0.328 ± 0.0023 s 0.339 ± 0.0042 s 0.968 ± 0.014
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation 0.531 ± 0.0049 s 0.546 ± 0.0039 s 0.972 ± 0.011
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation (Hessian) 0.531 ± 0.0061 s 0.536 ± 0.0022 s 0.991 ± 0.012
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting 0.551 ± 0.0077 s 0.561 ± 0.0016 s 0.982 ± 0.014
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting (Hessian) 0.194 ± 0.0023 s 0.194 ± 0.0048 s 1 ± 0.028
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation 0.36 ± 0.0033 s 0.346 ± 0.0031 s 1.04 ± 0.013
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation (Hessian) 0.301 ± 0.0057 s 0.293 ± 0.0035 s 1.02 ± 0.023
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/MadNLP/SingleShooting (Hessian) 0.089 ± 0.0017 s 0.0875 ± 0.0016 s 1.02 ± 0.027
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Uno/MultipleShooting (Hessian) 0.124 ± 0.002 s 0.121 ± 0.00076 s 1.02 ± 0.018
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting 0.347 ± 0.0032 s 0.366 ± 0.0054 s 0.951 ± 0.017
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (Hessian) 0.32 ± 0.0014 s 0.329 ± 0.0071 s 0.972 ± 0.021
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (threaded) 0.375 ± 0.0032 s 0.389 ± 0.0068 s 0.962 ± 0.019
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation 0.602 ± 0.0061 s 0.621 ± 0.012 s 0.969 ± 0.021
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation (Hessian) 1.8 ± 0.026 s 1.84 ± 0.031 s 0.979 ± 0.022
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting 0.54 ± 0.0041 s 0.562 ± 0.016 s 0.961 ± 0.028
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting (Hessian) 0.191 ± 0.0018 s 0.194 ± 0.0014 s 0.982 ± 0.012
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation 0.348 ± 0.0041 s 0.348 ± 0.0046 s 1 ± 0.018
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (Hessian) 0.268 ± 0.0029 s 0.27 ± 0.0014 s 0.995 ± 0.012
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (threaded) 0.367 ± 0.0039 s 0.382 ± 0.011 s 0.962 ± 0.03
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/MultipleShooting (Hessian) 0.207 ± 0.0019 s 0.203 ± 0.0023 s 1.02 ± 0.015
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/SingleShooting (Hessian) 0.0827 ± 0.00062 s 0.0834 ± 0.00083 s 0.992 ± 0.012
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Uno/MultipleShooting (Hessian) 0.104 ± 0.0011 s 0.105 ± 0.0019 s 0.992 ± 0.02
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Current form 0.0868 ± 0.012 s 0.0842 ± 0.012 s 1.03 ± 0.21
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Prediction form 0.0601 ± 0.015 s 0.0591 ± 0.0094 s 1.02 ± 0.3
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Current form 0.0828 ± 0.012 s 0.0819 ± 0.013 s 1.01 ± 0.21
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/MultipleShooting 0.0704 ± 0.023 s 0.0738 ± 0.022 s 0.954 ± 0.42
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Prediction form 0.056 ± 0.014 s 0.0558 ± 0.0079 s 1 ± 0.28
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form (Hessian) 0.091 ± 0.00084 s 0.095 ± 0.00088 s 0.958 ± 0.013
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form (Hessian, MultipleShooting) 0.111 ± 0.0013 s 0.11 ± 0.0013 s 1 ± 0.017
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form (Hessian) 0.0869 ± 0.00084 s 0.0884 ± 0.0011 s 0.983 ± 0.016
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form (Hessian, MultipleShooting) 0.107 ± 0.00069 s 0.106 ± 0.00076 s 1.02 ± 0.0098
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Current form (Hessian) 0.0504 ± 0.00079 s 0.0507 ± 0.00053 s 0.995 ± 0.019
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Prediction form (Hessian) 0.0479 ± 0.00046 s 0.0469 ± 0.00044 s 1.02 ± 0.014
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Uno/Current form (Hessian) 17.4 ± 0.69 ms 17.3 ± 0.38 ms 1 ± 0.046
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Uno/Current form (Hessian, MultipleShooting) 22.6 ± 0.98 ms 22.5 ± 0.26 ms 1.01 ± 0.045
UNIT TESTS/PredictiveController/ExplicitMPC/moveinput! 3.74 ± 0.04 μs 3.46 ± 0.039 μs 1.08 ± 0.017
UNIT TESTS/PredictiveController/LinMPC/getinfo! 0.117 ± 0.0029 ms 0.118 ± 0.0033 ms 0.989 ± 0.037
UNIT TESTS/PredictiveController/LinMPC/moveinput!/MultipleShooting 0.136 ± 0.01 ms 0.134 ± 0.011 ms 1.02 ± 0.11
UNIT TESTS/PredictiveController/LinMPC/moveinput!/SingleShooting 15.2 ± 0.28 μs 15.1 ± 0.31 μs 1.01 ± 0.028
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/LinModel 0.177 ± 0.025 ms 0.178 ± 0.025 ms 0.995 ± 0.2
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/NonLinModel 0.265 ± 0.057 ms 0.256 ± 0.038 ms 1.03 ± 0.27
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/MultipleShooting 0.9 ± 0.21 ms 0.906 ± 0.21 ms 0.993 ± 0.33
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/SingleShooting 0.47 ± 0.025 ms 0.475 ± 0.026 ms 0.989 ± 0.076
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShooting 10.5 ± 0.32 ms 10.5 ± 0.28 ms 0.995 ± 0.04
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShootingHessian 10.8 ± 0.38 ms 10.7 ± 0.31 ms 1.01 ± 0.046
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocation 9.61 ± 0.2 ms 9.68 ± 0.17 ms 0.992 ± 0.027
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocationHessian 9.49 ± 0.32 ms 9.4 ± 0.28 ms 1.01 ± 0.045
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShooting 6.43 ± 0.14 ms 6.14 ± 0.083 ms 1.05 ± 0.026
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShootingHessian 6.57 ± 0.13 ms 6.17 ± 0.09 ms 1.06 ± 0.026
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/TrapezoidalCollocation 7.45 ± 0.35 ms 7.6 ± 0.4 ms 0.98 ± 0.069
UNIT TESTS/SimModel/LinModel/evaloutput 0.14 ± 0.01 μs 0.13 ± 0.001 μs 1.08 ± 0.077
UNIT TESTS/SimModel/LinModel/updatestate! 0.21 ± 0.001 μs 0.201 ± 0.01 μs 1.04 ± 0.052
UNIT TESTS/SimModel/NonLinModel/evaloutput 0.19 ± 0.011 μs 0.19 ± 0.001 μs 1 ± 0.058
UNIT TESTS/SimModel/NonLinModel/linearize! 1.24 ± 0.029 μs 1.3 ± 0.021 μs 0.954 ± 0.027
UNIT TESTS/SimModel/NonLinModel/updatestate! 0.27 ± 0.011 μs 0.27 ± 0.01 μs 1 ± 0.055
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/evaloutput/LinModel 0.22 ± 0.011 μs 0.22 ± 0.01 μs 1 ± 0.068
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/evaloutput/NonLinModel 0.661 ± 0.01 μs 0.721 ± 0.02 μs 0.917 ± 0.029
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/preparestate!/LinModel 0.14 ± 0.001 μs 0.14 ± 0 μs 1 ± 0.0071
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/preparestate!/NonLinModel 0.431 ± 0.01 μs 0.441 ± 0.01 μs 0.977 ± 0.032
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/updatestate!/LinModel 3.5 ± 0.04 μs 3.4 ± 0.04 μs 1.03 ± 0.017
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/updatestate!/NonLinModel 5.94 ± 0.09 μs 6.04 ± 0.071 μs 0.983 ± 0.019
UNIT TESTS/StateEstimator/InternalModel/evaloutput/LinModel 0.16 ± 0.001 μs 0.161 ± 0.01 μs 0.994 ± 0.062
UNIT TESTS/StateEstimator/InternalModel/evaloutput/NonLinModel 0.261 ± 0.01 μs 0.27 ± 0.01 μs 0.967 ± 0.052
UNIT TESTS/StateEstimator/InternalModel/preparestate!/LinModel 0.241 ± 0.01 μs 0.24 ± 0.01 μs 1 ± 0.059
UNIT TESTS/StateEstimator/InternalModel/preparestate!/NonLinModel 0.471 ± 0.02 μs 0.491 ± 0.01 μs 0.959 ± 0.045
UNIT TESTS/StateEstimator/InternalModel/updatestate!/LinModel 0.431 ± 0.001 μs 0.441 ± 0.009 μs 0.977 ± 0.02
UNIT TESTS/StateEstimator/InternalModel/updatestate!/NonLinModel 0.922 ± 0.011 μs 0.962 ± 0.01 μs 0.958 ± 0.015
UNIT TESTS/StateEstimator/KalmanFilter/evaloutput 0.18 ± 0.01 μs 0.171 ± 0.01 μs 1.05 ± 0.085
UNIT TESTS/StateEstimator/KalmanFilter/preparestate! 0.07 ± 0.01 μs 0.08 ± 0.009 μs 0.875 ± 0.16
UNIT TESTS/StateEstimator/KalmanFilter/updatestate! 2.55 ± 0.03 μs 2.52 ± 0.039 μs 1.01 ± 0.02
UNIT TESTS/StateEstimator/Luenberger/evaloutput 0.171 ± 0.01 μs 0.181 ± 0.01 μs 0.945 ± 0.076
UNIT TESTS/StateEstimator/Luenberger/preparestate! 0.22 ± 0.011 μs 0.22 ± 0.001 μs 1 ± 0.05
UNIT TESTS/StateEstimator/Luenberger/updatestate! 0.361 ± 0.019 μs 0.361 ± 0.011 μs 1 ± 0.061
UNIT TESTS/StateEstimator/MovingHorizonEstimator/getinfo!/LinModel 0.303 ± 0.019 ms 0.674 ± 0.03 ms 0.45 ± 0.035
UNIT TESTS/StateEstimator/MovingHorizonEstimator/getinfo!/NonLinModel 0.437 ± 0.028 ms 0.473 ± 0.028 ms 0.924 ± 0.081
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Constant arr. cov. 25.9 ± 3 ms 25.4 ± 2.9 ms 1.02 ± 0.17
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Current form 26 ± 2.9 ms 25.5 ± 3 ms 1.02 ± 0.17
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/MultipleShooting 9.62 ± 10 ms 9.57 ± 9.8 ms 1.01 ± 1.5
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/Current form 0.324 ± 0.024 ms 0.326 ± 0.024 ms 0.993 ± 0.1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/MultipleShooting 0.737 ± 0.027 ms 0.738 ± 0.023 ms 0.999 ± 0.048
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/LinModel/Prediction form 23.1 ± 1.2 ms 22.8 ± 1.3 ms 1.01 ± 0.078
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/NonLinModel/Prediction form 0.343 ± 0.024 ms 0.333 ± 0.024 ms 1.03 ± 0.1
UNIT TESTS/StateEstimator/SteadyKalmanFilter/evaloutput 0.19 ± 0.011 μs 0.19 ± 0.011 μs 1 ± 0.082
UNIT TESTS/StateEstimator/SteadyKalmanFilter/preparestate! 0.23 ± 0.01 μs 0.24 ± 0.01 μs 0.958 ± 0.058
UNIT TESTS/StateEstimator/SteadyKalmanFilter/updatestate! 0.371 ± 0.01 μs 0.381 ± 0.02 μs 0.974 ± 0.057
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/evaloutput/LinModel 0.24 ± 0.011 μs 0.23 ± 0.001 μs 1.04 ± 0.048
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/evaloutput/NonLinModel 0.45 ± 0.01 μs 0.44 ± 0.011 μs 1.02 ± 0.034
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/preparestate!/LinModel 3.6 ± 0.05 μs 3.58 ± 0.019 μs 1.01 ± 0.015
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/preparestate!/NonLinModel 4.81 ± 0.031 μs 4.66 ± 0.11 μs 1.03 ± 0.025
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/updatestate!/LinModel 3.91 ± 0.021 μs 3.88 ± 0.02 μs 1.01 ± 0.0075
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/updatestate!/NonLinModel 5.95 ± 0.04 μs 5.86 ± 0.04 μs 1.02 ± 0.0097
time_to_load 3.72 ± 0.038 s 3.67 ± 0.02 s 1.01 ± 0.012
Memory benchmarks
main d826ab1... main / d826ab1...
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/DAQP/SingleShooting 0.0486 M allocs: 1.86 MB 0.0486 M allocs: 1.86 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/MultipleShooting 0.116 M allocs: 2.86 MB 0.116 M allocs: 2.86 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/SingleShooting 11.9 k allocs: 0.333 MB 11.9 k allocs: 0.333 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/DAQP/SingleShooting 0.0485 M allocs: 1.85 MB 0.0485 M allocs: 1.85 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/MultipleShooting 0.0812 M allocs: 2.02 MB 0.0812 M allocs: 2.02 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/SingleShooting 11.7 k allocs: 0.327 MB 11.7 k allocs: 0.327 MB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/DAQP/SingleShooting 0.128 M allocs: 6.8 MB 0.128 M allocs: 6.8 MB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/MultipleShooting 5.56 M allocs: 0.292 GB 5.56 M allocs: 0.292 GB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/SingleShooting 0.158 M allocs: 8.65 MB 0.158 M allocs: 8.65 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting 0.367 M allocs: 29.6 MB 0.367 M allocs: 29.6 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting (Hessian) 2.18 M allocs: 0.295 GB 2.18 M allocs: 0.296 GB 0.996
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/SingleShooting 0.306 M allocs: 0.0697 GB 0.306 M allocs: 0.0697 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation 2.17 M allocs: 0.267 GB 2.17 M allocs: 0.268 GB 0.995
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation (Hessian) 2.17 M allocs: 0.267 GB 2.17 M allocs: 0.268 GB 0.995
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting 0.314 M allocs: 25.7 MB 0.314 M allocs: 25.7 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting (Hessian) 0.655 M allocs: 0.0916 GB 0.655 M allocs: 0.0919 GB 0.996
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation 1.3 M allocs: 0.121 GB 1.3 M allocs: 0.121 GB 0.999
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation (Hessian) 1.3 M allocs: 0.121 GB 1.3 M allocs: 0.121 GB 0.999
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting 0.0964 M allocs: 30.1 MB 0.0964 M allocs: 30.4 MB 0.989
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting (Hessian) 0.0811 M allocs: 28.3 MB 0.0811 M allocs: 28.5 MB 0.993
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation 0.312 M allocs: 25.5 MB 0.312 M allocs: 25.6 MB 0.996
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation (Hessian) 0.714 M allocs: 0.0908 GB 0.714 M allocs: 0.0913 GB 0.995
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/MadNLP/SingleShooting (Hessian) 0.0924 M allocs: 30.8 MB 0.0924 M allocs: 31 MB 0.994
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Uno/MultipleShooting (Hessian) 0.337 M allocs: 0.0441 GB 0.337 M allocs: 0.0443 GB 0.997
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting 0.275 M allocs: 22.2 MB 0.275 M allocs: 22.2 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (Hessian) 0.715 M allocs: 0.0932 GB 0.715 M allocs: 0.0936 GB 0.996
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (threaded) 0.294 M allocs: 31.3 MB 0.294 M allocs: 31.5 MB 0.995
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation 1.4 M allocs: 0.13 GB 1.4 M allocs: 0.13 GB 0.999
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation (Hessian) 6.56 M allocs: 0.875 GB 6.56 M allocs: 0.877 GB 0.998
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting 0.0753 M allocs: 22.6 MB 0.0753 M allocs: 22.9 MB 0.99
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting (Hessian) 0.0807 M allocs: 28.2 MB 0.0807 M allocs: 28.4 MB 0.993
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation 0.274 M allocs: 22.1 MB 0.274 M allocs: 22.2 MB 0.996
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (Hessian) 0.718 M allocs: 0.0848 GB 0.718 M allocs: 0.0852 GB 0.995
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (threaded) 0.293 M allocs: 31.4 MB 0.293 M allocs: 31.5 MB 0.997
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/MultipleShooting (Hessian) 0.576 M allocs: 0.0864 GB 0.576 M allocs: 0.0867 GB 0.997
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/SingleShooting (Hessian) 0.0925 M allocs: 30.8 MB 0.0925 M allocs: 31 MB 0.994
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Uno/MultipleShooting (Hessian) 0.332 M allocs: 0.0404 GB 0.332 M allocs: 0.0405 GB 0.996
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Current form 1.45 M allocs: 0.225 GB 1.45 M allocs: 0.225 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Prediction form 1.33 M allocs: 0.146 GB 1.33 M allocs: 0.146 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Current form 1.32 M allocs: 0.222 GB 1.32 M allocs: 0.222 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/MultipleShooting 3.55 M allocs: 0.198 GB 3.55 M allocs: 0.198 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Prediction form 1.24 M allocs: 0.143 GB 1.24 M allocs: 0.143 GB 1
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form (Hessian) 0.0841 M allocs: 21.7 MB 0.0849 M allocs: 22.1 MB 0.985
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form (Hessian, MultipleShooting) 0.172 M allocs: 0.0319 GB 0.173 M allocs: 0.0323 GB 0.986
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form (Hessian) 0.0843 M allocs: 21.7 MB 0.0851 M allocs: 22.1 MB 0.985
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form (Hessian, MultipleShooting) 0.167 M allocs: 31.6 MB 0.168 M allocs: 0.0313 GB 0.986
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Current form (Hessian) 0.104 M allocs: 25.2 MB 0.104 M allocs: 25.6 MB 0.987
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Prediction form (Hessian) 0.102 M allocs: 24.6 MB 0.103 M allocs: 24.9 MB 0.987
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Uno/Current form (Hessian) 0.0363 M allocs: 8.44 MB 0.0366 M allocs: 8.56 MB 0.985
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Uno/Current form (Hessian, MultipleShooting) 0.0709 M allocs: 10.9 MB 0.0713 M allocs: 11.1 MB 0.987
UNIT TESTS/PredictiveController/ExplicitMPC/moveinput! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/PredictiveController/LinMPC/getinfo! 0.312 k allocs: 15.2 kB 0.312 k allocs: 15.2 kB 1
UNIT TESTS/PredictiveController/LinMPC/moveinput!/MultipleShooting 1.49 k allocs: 0.0363 MB 1.49 k allocs: 0.0363 MB 1
UNIT TESTS/PredictiveController/LinMPC/moveinput!/SingleShooting 0.104 k allocs: 2.67 kB 0.104 k allocs: 2.67 kB 1
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/LinModel 0.4 k allocs: 0.0579 MB 0.4 k allocs: 0.0581 MB 0.997
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/NonLinModel 0.566 k allocs: 0.0772 MB 0.566 k allocs: 0.0774 MB 0.998
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/MultipleShooting 1.72 k allocs: 0.103 MB 1.72 k allocs: 0.103 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/SingleShooting 0.251 k allocs: 10 kB 0.251 k allocs: 10 kB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShooting 5.28 k allocs: 0.537 MB 5.28 k allocs: 0.541 MB 0.994
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShootingHessian 5.08 k allocs: 0.495 MB 5.08 k allocs: 0.498 MB 0.994
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocation 8.71 k allocs: 0.644 MB 8.71 k allocs: 0.645 MB 0.998
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocationHessian 0.0433 M allocs: 5.25 MB 0.0433 M allocs: 5.27 MB 0.996
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShooting 0.952 k allocs: 0.413 MB 0.952 k allocs: 0.418 MB 0.987
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShootingHessian 0.952 k allocs: 0.413 MB 0.952 k allocs: 0.418 MB 0.987
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/TrapezoidalCollocation 3.54 k allocs: 0.303 MB 3.54 k allocs: 0.305 MB 0.995
UNIT TESTS/SimModel/LinModel/evaloutput 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/SimModel/LinModel/updatestate! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/SimModel/NonLinModel/evaloutput 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/SimModel/NonLinModel/linearize! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/SimModel/NonLinModel/updatestate! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/evaloutput/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/evaloutput/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/preparestate!/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/preparestate!/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/updatestate!/LinModel 4 allocs: 0.0938 kB 4 allocs: 0.0938 kB 1
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/updatestate!/NonLinModel 4 allocs: 0.0938 kB 4 allocs: 0.0938 kB 1
UNIT TESTS/StateEstimator/InternalModel/evaloutput/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/InternalModel/evaloutput/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/InternalModel/preparestate!/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/InternalModel/preparestate!/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/InternalModel/updatestate!/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/InternalModel/updatestate!/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/KalmanFilter/evaloutput 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/KalmanFilter/preparestate! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/KalmanFilter/updatestate! 4 allocs: 0.0938 kB 4 allocs: 0.0938 kB 1
UNIT TESTS/StateEstimator/Luenberger/evaloutput 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/Luenberger/preparestate! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/Luenberger/updatestate! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/MovingHorizonEstimator/getinfo!/LinModel 1.35 k allocs: 0.0508 MB 1.35 k allocs: 0.0508 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/getinfo!/NonLinModel 2.4 k allocs: 0.293 MB 2.42 k allocs: 0.294 MB 0.997
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Constant arr. cov. 9.03 k allocs: 0.674 MB 9.03 k allocs: 0.674 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Current form 9.03 k allocs: 0.674 MB 9.03 k allocs: 0.674 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/MultipleShooting 19.5 k allocs: 1 MB 19.5 k allocs: 1 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/Current form 0.955 k allocs: 24.8 kB 0.955 k allocs: 24.8 kB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/MultipleShooting 1.85 k allocs: 0.0467 MB 1.85 k allocs: 0.0467 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/LinModel/Prediction form 8.33 k allocs: 0.513 MB 8.33 k allocs: 0.513 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/NonLinModel/Prediction form 0.955 k allocs: 24.8 kB 0.955 k allocs: 24.8 kB 1
UNIT TESTS/StateEstimator/SteadyKalmanFilter/evaloutput 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/SteadyKalmanFilter/preparestate! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/SteadyKalmanFilter/updatestate! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/evaloutput/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/evaloutput/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/preparestate!/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/preparestate!/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/updatestate!/LinModel 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/updatestate!/NonLinModel 0 allocs: 0 B 0 allocs: 0 B
time_to_load 0.201 k allocs: 11.8 kB 0.201 k allocs: 11.8 kB 1

@franckgaga

franckgaga commented Sep 19, 2026

Copy link
Copy Markdown
Member Author

Alright! Low impact on the MHE performance with current SimModel type. It generalizes great! (i.e.: no code duplication is needed with two distinct methods for NonLinModel and NonLinModelDAE in the MHE)

@franckgaga

franckgaga commented Sep 19, 2026

Copy link
Copy Markdown
Member Author

There are lot of commit behind this PR boat the boat is finally sailing 🚢🥳

@franckgaga franckgaga changed the title added: NonLinModelDAE support in MovingHorizonEstimator added: NonLinModelDAE and TrapezoidalCollocation support in MovingHorizonEstimator Sep 19, 2026
@franckgaga
franckgaga marked this pull request as ready for review September 19, 2026 23:31
@franckgaga
franckgaga merged commit a6d5f55 into main Sep 20, 2026
29 of 34 checks passed
@franckgaga
franckgaga deleted the dae_mhe branch September 20, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants