Skip to content

added: custom nonlinear inequality constraints for MovingHorizonEstimator 🥳#360

Merged
franckgaga merged 58 commits into
mainfrom
mhe_custom_con
May 24, 2026
Merged

added: custom nonlinear inequality constraints for MovingHorizonEstimator 🥳#360
franckgaga merged 58 commits into
mainfrom
mhe_custom_con

Conversation

@franckgaga
Copy link
Copy Markdown
Member

@franckgaga franckgaga commented May 22, 2026

The custom constraint function will receive all the data windows, the arrival estimation error and covariance, a parameter argument and the slack variable. The data windows will grows with time until $N_k = H_e$ is reached. Similarly to NonLinMPC, the custom function is called in the constructor to troubleshoot simple issues in it. The function is called $H_e$ times to test the growing windows, since it is expected that the user will easily forget this aspect of the MHE.

As discussed in #350, the data windows in the MovingHorizonEstimator are inherently "misaligned". I introduced extended vectors to artificially align them, but the windows will include NaN values as a side-effects. The windows are clearly (hopefully!) documented in the docstring:

image image

Closes #350

franckgaga added 30 commits May 13, 2026 10:57
This is needed for the custom NL constraints.
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented May 24, 2026

Codecov Report

❌ Patch coverage is 98.97172% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.56%. Comparing base (d1ccc9a) to head (08b7d9b).

Files with missing lines Patch % Lines
src/estimator/mhe/construct.jl 98.14% 2 Missing ⚠️
src/estimator/mhe/execute.jl 99.20% 2 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##             main     #360    +/-   ##
========================================
  Coverage   98.55%   98.56%            
========================================
  Files          27       27            
  Lines        5245     5418   +173     
========================================
+ Hits         5169     5340   +171     
- Misses         76       78     +2     

☔ View full report in Codecov by Sentry.
📢 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.

@franckgaga franckgaga merged commit c55ca85 into main May 24, 2026
5 checks passed
@franckgaga franckgaga deleted the mhe_custom_con branch May 24, 2026 23:14
@github-actions
Copy link
Copy Markdown

Benchmark Results (Julia v1)

Time benchmarks
main 08b7d9b... main / 08b7d9b...
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/DAQP/SingleShooting 4.97 ± 0.49 ms 5.1 ± 0.49 ms 0.973 ± 0.13
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/Ipopt/MultipleShooting 0.324 ± 0.002 s 0.332 ± 0.0049 s 0.978 ± 0.016
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/Ipopt/SingleShooting 0.234 ± 0.0017 s 0.235 ± 0.0073 s 0.995 ± 0.032
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/MultipleShooting 9.21 ± 0.61 ms 9.39 ± 0.59 ms 0.981 ± 0.089
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/SingleShooting 1.68 ± 0.072 ms 1.8 ± 0.072 ms 0.935 ± 0.055
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/DAQP/SingleShooting 4.93 ± 0.42 ms 5 ± 0.43 ms 0.985 ± 0.12
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/Ipopt/MultipleShooting 0.28 ± 0.0027 s 0.284 ± 0.0045 s 0.989 ± 0.018
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/Ipopt/SingleShooting 0.233 ± 0.0011 s 0.235 ± 0.0047 s 0.993 ± 0.021
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/MultipleShooting 6.43 ± 0.43 ms 6.47 ± 0.43 ms 0.994 ± 0.094
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/SingleShooting 1.84 ± 0.068 ms 1.88 ± 0.05 ms 0.978 ± 0.045
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/DAQP/SingleShooting 10.5 ± 1.9 ms 10.6 ± 1.7 ms 0.995 ± 0.24
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/Ipopt/MultipleShooting 0.337 ± 0.094 s 0.379 ± 0.072 s 0.889 ± 0.3
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/Ipopt/SingleShooting 0.163 ± 0.00077 s 0.166 ± 0.0012 s 0.981 ± 0.0087
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/MultipleShooting 0.126 ± 0.03 s 0.134 ± 0.031 s 0.943 ± 0.31
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/SingleShooting 13.4 ± 1.9 ms 13.9 ± 2 ms 0.964 ± 0.2
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting 0.748 ± 0.007 s 0.725 ± 0.0013 s 1.03 ± 0.0099
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting (Hessian) 0.685 ± 0.0096 s 0.678 ± 0.0092 s 1.01 ± 0.02
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/SingleShooting 1.87 ± 0.012 s 1.87 ± 0.0083 s 1 ± 0.0076
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation 0.513 ± 0.013 s 0.519 ± 0.043 s 0.989 ± 0.087
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation (Hessian) 0.504 ± 0.013 s 0.585 ± 0.044 s 0.861 ± 0.068
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting 0.38 ± 0.009 s 0.374 ± 0.0025 s 1.02 ± 0.025
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting (Hessian) 0.45 ± 0.0077 s 0.437 ± 0.0039 s 1.03 ± 0.02
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation 0.57 ± 0.013 s 0.556 ± 0.0012 s 1.02 ± 0.024
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation (Hessian) 0.58 ± 0.0076 s 0.576 ± 0.0064 s 1.01 ± 0.017
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting 0.565 ± 0.0079 s 0.523 ± 0.0047 s 1.08 ± 0.018
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting (Hessian) 0.197 ± 0.0049 s 0.183 ± 0.0029 s 1.08 ± 0.032
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation 0.352 ± 0.0066 s 0.345 ± 0.0019 s 1.02 ± 0.02
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation (Hessian) 0.342 ± 0.0081 s 0.338 ± 0.00065 s 1.01 ± 0.024
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/MadNLP/SingleShooting (Hessian) 0.0854 ± 0.0024 s 0.0772 ± 0.00082 s 1.11 ± 0.034
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Uno/MultipleShooting (Hessian) 0.21 ± 0.012 s 0.212 ± 0.011 s 0.992 ± 0.078
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting 0.356 ± 0.0024 s 0.353 ± 0.0017 s 1.01 ± 0.0084
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (Hessian) 0.383 ± 0.0036 s 0.379 ± 0.0042 s 1.01 ± 0.015
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (threaded) 0.383 ± 0.0037 s 0.378 ± 0.0025 s 1.01 ± 0.012
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation 0.631 ± 0.01 s 0.624 ± 0.013 s 1.01 ± 0.027
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation (Hessian) 1.81 ± 0.075 s 1.83 ± 0.04 s 0.987 ± 0.046
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting 0.52 ± 0.0027 s 0.519 ± 0.0033 s 1 ± 0.0082
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting (Hessian) 0.181 ± 0.0022 s 0.178 ± 0.0013 s 1.02 ± 0.014
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation 0.347 ± 0.0064 s 0.341 ± 0.0025 s 1.02 ± 0.02
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (Hessian) 0.305 ± 0.0055 s 0.292 ± 0.00062 s 1.05 ± 0.019
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (threaded) 0.38 ± 0.0057 s 0.367 ± 0.0026 s 1.03 ± 0.017
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/MultipleShooting (Hessian) 0.257 ± 0.0011 s 0.255 ± 0.0012 s 1.01 ± 0.0065
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/SingleShooting (Hessian) 0.0745 ± 0.00077 s 0.0753 ± 0.00081 s 0.989 ± 0.015
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Uno/MultipleShooting (Hessian) 0.197 ± 0.0044 s 0.19 ± 0.0016 s 1.04 ± 0.025
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Uno/OrthogonalCollocation (Hessian) 1.35 ± 0.012 s 1.3 ± 0.04 s 1.04 ± 0.033
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Current form 0.0795 ± 0.0014 s 0.0807 ± 0.00059 s 0.985 ± 0.019
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Prediction form 0.059 ± 0.0013 s 0.0597 ± 0.0026 s 0.989 ± 0.048
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/Ipopt/Current form 0.253 ± 0.014 s 0.263 ± 0.025 s 0.96 ± 0.11
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/Ipopt/Prediction form 0.218 ± 0.056 s 0.223 ± 0.06 s 0.979 ± 0.37
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Current form 0.0767 ± 0.005 s 0.0722 ± 0.006 s 1.06 ± 0.11
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Prediction form 0.0559 ± 0.006 s 0.05 ± 0.006 s 1.12 ± 0.18
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form 0.0922 ± 0.00079 s 0.096 ± 0.00063 s 0.96 ± 0.01
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form (Hessian) 0.0924 ± 0.00049 s 0.0952 ± 0.00093 s 0.97 ± 0.011
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form 0.0686 ± 0.0006 s 0.0713 ± 0.00034 s 0.962 ± 0.0096
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form (Hessian) 0.0894 ± 0.00029 s 0.0932 ± 0.00057 s 0.96 ± 0.0066
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Current form (Hessian) 0.0523 ± 0.00034 s 0.0533 ± 0.00069 s 0.98 ± 0.014
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Prediction form (Hessian) 0.0464 ± 0.00053 s 0.0499 ± 0.00045 s 0.929 ± 0.014
UNIT TESTS/PredictiveController/ExplicitMPC/moveinput! 4.47 ± 0.05 μs 4.48 ± 0.041 μs 0.998 ± 0.014
UNIT TESTS/PredictiveController/LinMPC/getinfo! 0.0957 ± 0.002 ms 0.0947 ± 0.002 ms 1.01 ± 0.03
UNIT TESTS/PredictiveController/LinMPC/moveinput!/MultipleShooting 0.118 ± 0.0014 ms 0.11 ± 0.0013 ms 1.07 ± 0.018
UNIT TESTS/PredictiveController/LinMPC/moveinput!/SingleShooting 16 ± 0.33 μs 15.8 ± 0.32 μs 1.01 ± 0.029
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/LinModel 0.201 ± 0.011 ms 0.2 ± 0.021 ms 1.01 ± 0.12
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/NonLinModel 0.242 ± 0.018 ms 0.244 ± 0.016 ms 0.992 ± 0.097
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/MultipleShooting 1.93 ± 0.26 ms 1.93 ± 0.26 ms 1 ± 0.19
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/SingleShooting 1.29 ± 0.033 ms 1.29 ± 0.037 ms 0.999 ± 0.038
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShooting 2.55 ± 0.72 ms 2.53 ± 0.72 ms 1.01 ± 0.4
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShootingHessian 2.38 ± 0.12 ms 2.36 ± 0.11 ms 1.01 ± 0.069
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocation 2.15 ± 0.16 ms 2.15 ± 0.18 ms 1 ± 0.11
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocationHessian 3.22 ± 0.18 ms 3.23 ± 0.19 ms 0.998 ± 0.082
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShooting 1.31 ± 0.033 ms 1.31 ± 0.029 ms 0.998 ± 0.034
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShootingHessian 1.31 ± 0.029 ms 1.31 ± 0.032 ms 1 ± 0.033
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/TrapezoidalCollocation 1.68 ± 0.14 ms 1.69 ± 0.15 ms 0.996 ± 0.12
UNIT TESTS/SimModel/LinModel/evaloutput 0.14 ± 0 μs 0.15 ± 0.001 μs 0.933 ± 0.0062
UNIT TESTS/SimModel/LinModel/updatestate! 0.19 ± 0.001 μs 0.2 ± 0.01 μs 0.95 ± 0.048
UNIT TESTS/SimModel/NonLinModel/evaloutput 0.33 ± 0.001 μs 0.32 ± 0.001 μs 1.03 ± 0.0045
UNIT TESTS/SimModel/NonLinModel/linearize! 1.89 ± 0.03 μs 1.88 ± 0.06 μs 1.01 ± 0.036
UNIT TESTS/SimModel/NonLinModel/updatestate! 0.381 ± 0.011 μs 0.39 ± 0.01 μs 0.977 ± 0.038
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/evaloutput/LinModel 0.5 ± 0.01 μs 0.461 ± 0.029 μs 1.08 ± 0.072
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/evaloutput/NonLinModel 1.69 ± 0.02 μs 1.72 ± 0.04 μs 0.983 ± 0.026
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/preparestate!/LinModel 0.621 ± 0.01 μs 0.24 ± 0.001 μs 2.59 ± 0.043
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/preparestate!/NonLinModel 1.23 ± 0.01 μs 1.28 ± 0.01 μs 0.961 ± 0.011
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/updatestate!/LinModel 3.96 ± 0.07 μs 4.02 ± 0.07 μs 0.985 ± 0.024
UNIT TESTS/StateEstimator/ExtendedKalmanFilter/updatestate!/NonLinModel 8.08 ± 0.12 μs 8.01 ± 0.08 μs 1.01 ± 0.018
UNIT TESTS/StateEstimator/InternalModel/evaloutput/LinModel 0.221 ± 0.01 μs 0.24 ± 0.01 μs 0.921 ± 0.057
UNIT TESTS/StateEstimator/InternalModel/evaloutput/NonLinModel 0.491 ± 0.01 μs 0.5 ± 0.019 μs 0.982 ± 0.042
UNIT TESTS/StateEstimator/InternalModel/preparestate!/LinModel 0.621 ± 0.02 μs 0.611 ± 0.01 μs 1.02 ± 0.037
UNIT TESTS/StateEstimator/InternalModel/preparestate!/NonLinModel 0.611 ± 0.02 μs 0.611 ± 0.02 μs 1 ± 0.046
UNIT TESTS/StateEstimator/InternalModel/updatestate!/LinModel 0.671 ± 0.02 μs 0.731 ± 0.02 μs 0.918 ± 0.037
UNIT TESTS/StateEstimator/InternalModel/updatestate!/NonLinModel 1.12 ± 0.02 μs 1.15 ± 0.02 μs 0.974 ± 0.024
UNIT TESTS/StateEstimator/KalmanFilter/evaloutput 0.241 ± 0.01 μs 0.33 ± 0.09 μs 0.73 ± 0.2
UNIT TESTS/StateEstimator/KalmanFilter/preparestate! 0.16 ± 0.001 μs 0.14 ± 0.009 μs 1.14 ± 0.074
UNIT TESTS/StateEstimator/KalmanFilter/updatestate! 2.53 ± 0.05 μs 2.64 ± 0.06 μs 0.958 ± 0.029
UNIT TESTS/StateEstimator/Luenberger/evaloutput 0.22 ± 0.001 μs 0.22 ± 0.01 μs 1 ± 0.046
UNIT TESTS/StateEstimator/Luenberger/preparestate! 0.27 ± 0.001 μs 0.32 ± 0.001 μs 0.844 ± 0.0041
UNIT TESTS/StateEstimator/Luenberger/updatestate! 0.38 ± 0.011 μs 0.341 ± 0.01 μs 1.11 ± 0.046
UNIT TESTS/StateEstimator/MovingHorizonEstimator/getinfo!/LinModel 0.289 ± 0.032 ms 0.3 ± 0.022 ms 0.963 ± 0.13
UNIT TESTS/StateEstimator/MovingHorizonEstimator/getinfo!/NonLinModel 0.378 ± 0.019 ms 0.381 ± 0.019 ms 0.994 ± 0.072
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Current form 16.3 ± 25 ms 16.4 ± 23 ms 0.997 ± 2.1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Prediction form 0.421 ± 0.019 μs 0.431 ± 0.001 μs 0.977 ± 0.044
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/Current form 0.318 ± 0.019 ms 0.319 ± 0.019 ms 0.994 ± 0.084
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/Prediction form 1.32 ± 0.01 μs 1.3 ± 0.02 μs 1.02 ± 0.017
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/LinModel/Current form 0.0329 ± 0.0069 ms 0.0348 ± 0.0073 ms 0.946 ± 0.28
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/LinModel/Prediction form 0.0326 ± 0.0034 s 13.8 ± 22 ms 2.36 ± 3.7
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/NonLinModel/Current form 17.7 ± 0.58 μs 18.1 ± 0.52 μs 0.98 ± 0.043
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/NonLinModel/Prediction form 0.329 ± 0.019 ms 0.341 ± 0.019 ms 0.965 ± 0.078
UNIT TESTS/StateEstimator/SteadyKalmanFilter/evaloutput 0.51 ± 0.01 μs 0.431 ± 0.01 μs 1.18 ± 0.036
UNIT TESTS/StateEstimator/SteadyKalmanFilter/preparestate! 0.29 ± 0.03 μs 0.251 ± 0.001 μs 1.16 ± 0.12
UNIT TESTS/StateEstimator/SteadyKalmanFilter/updatestate! 0.37 ± 0.01 μs 0.571 ± 0.02 μs 0.648 ± 0.029
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/evaloutput/LinModel 0.29 ± 0.011 μs 0.291 ± 0.01 μs 0.997 ± 0.051
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/evaloutput/NonLinModel 0.832 ± 0.011 μs 0.851 ± 0.03 μs 0.978 ± 0.037
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/preparestate!/LinModel 3.73 ± 0.06 μs 3.62 ± 0.06 μs 1.03 ± 0.024
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/preparestate!/NonLinModel 4.91 ± 0.059 μs 4.96 ± 0.069 μs 0.99 ± 0.018
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/updatestate!/LinModel 3.71 ± 0.06 μs 3.68 ± 0.06 μs 1.01 ± 0.023
UNIT TESTS/StateEstimator/UnscentedKalmanFilter/updatestate!/NonLinModel 6.34 ± 0.09 μs 6.61 ± 0.08 μs 0.959 ± 0.018
time_to_load 5.82 ± 0.037 s 5.84 ± 0.019 s 0.997 ± 0.0071
Memory benchmarks
main 08b7d9b... main / 08b7d9b...
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/DAQP/SingleShooting 0.0469 M allocs: 1.85 MB 0.0469 M allocs: 1.85 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/Ipopt/MultipleShooting 0.166 M allocs: 9.51 MB 0.166 M allocs: 9.51 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/Ipopt/SingleShooting 0.058 M allocs: 2.99 MB 0.058 M allocs: 2.99 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/MultipleShooting 0.0758 M allocs: 1.95 MB 0.0758 M allocs: 1.95 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/With feedforward/OSQP/SingleShooting 7.84 k allocs: 0.249 MB 7.84 k allocs: 0.249 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/DAQP/SingleShooting 0.0468 M allocs: 1.84 MB 0.0468 M allocs: 1.84 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/Ipopt/MultipleShooting 0.131 M allocs: 7.68 MB 0.131 M allocs: 7.68 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/Ipopt/SingleShooting 0.0601 M allocs: 3.08 MB 0.0601 M allocs: 3.08 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/MultipleShooting 0.0531 M allocs: 1.39 MB 0.0531 M allocs: 1.39 MB 1
CASE STUDIES/PredictiveController/CSTR/LinMPC/Without feedforward/OSQP/SingleShooting 7.69 k allocs: 0.243 MB 7.69 k allocs: 0.243 MB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/DAQP/SingleShooting 0.119 M allocs: 6.37 MB 0.119 M allocs: 6.37 MB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/Ipopt/MultipleShooting 4.65 M allocs: 0.251 GB 4.65 M allocs: 0.251 GB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/Ipopt/SingleShooting 0.117 M allocs: 6.99 MB 0.117 M allocs: 6.99 MB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/MultipleShooting 4.69 M allocs: 0.255 GB 4.69 M allocs: 0.255 GB 1
CASE STUDIES/PredictiveController/Pendulum/LinMPC/Successive linearization/OSQP/SingleShooting 0.126 M allocs: 7.8 MB 0.126 M allocs: 7.8 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting 0.436 M allocs: 23.8 MB 0.436 M allocs: 23.8 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/MultipleShooting (Hessian) 1.04 M allocs: 0.0873 GB 1.04 M allocs: 0.0873 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/SingleShooting 0.365 M allocs: 18.3 MB 0.365 M allocs: 18.3 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation 1.01 M allocs: 0.0717 GB 1.01 M allocs: 0.0717 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Custom constraints/Ipopt/TrapezoidalCollocation (Hessian) 1.01 M allocs: 0.0717 GB 1.01 M allocs: 0.0717 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting 0.317 M allocs: 17 MB 0.317 M allocs: 17 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/MultipleShooting (Hessian) 0.739 M allocs: 0.0644 GB 0.739 M allocs: 0.0644 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation 1.33 M allocs: 0.116 GB 1.33 M allocs: 0.116 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/OrthogonalCollocation (Hessian) 1.33 M allocs: 0.116 GB 1.33 M allocs: 0.116 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting 0.0991 M allocs: 4.45 MB 0.0991 M allocs: 4.45 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/SingleShooting (Hessian) 0.0797 M allocs: 5.2 MB 0.0797 M allocs: 5.2 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation 0.315 M allocs: 16.9 MB 0.315 M allocs: 16.9 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Ipopt/TrapezoidalCollocation (Hessian) 0.755 M allocs: 0.056 GB 0.755 M allocs: 0.056 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/MadNLP/SingleShooting (Hessian) 0.113 M allocs: 11 MB 0.113 M allocs: 11 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Economic/Uno/MultipleShooting (Hessian) 0.308 M allocs: 25.7 MB 0.308 M allocs: 25.7 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting 0.278 M allocs: 14.8 MB 0.278 M allocs: 14.8 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (Hessian) 0.707 M allocs: 0.0545 GB 0.707 M allocs: 0.0545 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/MultipleShooting (threaded) 0.296 M allocs: 23.7 MB 0.296 M allocs: 23.7 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation 1.43 M allocs: 0.124 GB 1.43 M allocs: 0.124 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/OrthogonalCollocation (Hessian) 5.12 M allocs: 0.555 GB 5.12 M allocs: 0.555 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting 0.0773 M allocs: 3.45 MB 0.0773 M allocs: 3.45 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/SingleShooting (Hessian) 0.0793 M allocs: 5.15 MB 0.0793 M allocs: 5.15 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation 0.277 M allocs: 14.8 MB 0.277 M allocs: 14.8 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (Hessian) 0.718 M allocs: 0.0458 GB 0.718 M allocs: 0.0458 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Ipopt/TrapezoidalCollocation (threaded) 0.296 M allocs: 23.8 MB 0.296 M allocs: 23.8 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/MultipleShooting (Hessian) 0.596 M allocs: 0.0588 GB 0.596 M allocs: 0.0588 GB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/MadNLP/SingleShooting (Hessian) 0.113 M allocs: 11 MB 0.113 M allocs: 11 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Uno/MultipleShooting (Hessian) 0.304 M allocs: 22.6 MB 0.304 M allocs: 22.6 MB 1
CASE STUDIES/PredictiveController/Pendulum/NonLinMPC/Noneconomic/Uno/OrthogonalCollocation (Hessian) 2.12 M allocs: 0.225 GB 2.12 M allocs: 0.225 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Current form 1.25 M allocs: 0.213 GB 1.25 M allocs: 0.213 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/DAQP/Prediction form 1.16 M allocs: 0.136 GB 1.16 M allocs: 0.136 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/Ipopt/Current form 1.13 M allocs: 0.211 GB 1.13 M allocs: 0.211 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/Ipopt/Prediction form 1.08 M allocs: 0.134 GB 1.08 M allocs: 0.134 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Current form 1.12 M allocs: 0.209 GB 1.12 M allocs: 0.209 GB 1
CASE STUDIES/StateEstimator/CSTR/MovingHorizonEstimator/OSQP/Prediction form 1.06 M allocs: 0.133 GB 1.06 M allocs: 0.133 GB 1
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form 0.071 M allocs: 12.2 MB 0.071 M allocs: 12.2 MB 1
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Current form (Hessian) 0.07 M allocs: 12.1 MB 0.07 M allocs: 12.1 MB 1
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form 0.0522 M allocs: 8.54 MB 0.0522 M allocs: 8.54 MB 1
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/Ipopt/Prediction form (Hessian) 0.0702 M allocs: 12.1 MB 0.0702 M allocs: 12.1 MB 1
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Current form (Hessian) 0.103 M allocs: 16.7 MB 0.103 M allocs: 16.7 MB 1
CASE STUDIES/StateEstimator/Pendulum/MovingHorizonEstimator/MadNLP/Prediction form (Hessian) 0.0971 M allocs: 15.3 MB 0.0971 M allocs: 15.3 MB 1
UNIT TESTS/PredictiveController/ExplicitMPC/moveinput! 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/PredictiveController/LinMPC/getinfo! 0.327 k allocs: 15.8 kB 0.327 k allocs: 15.8 kB 1
UNIT TESTS/PredictiveController/LinMPC/moveinput!/MultipleShooting 0.994 k allocs: 25.5 kB 0.994 k allocs: 25.5 kB 1
UNIT TESTS/PredictiveController/LinMPC/moveinput!/SingleShooting 0.088 k allocs: 2.23 kB 0.088 k allocs: 2.23 kB 1
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/LinModel 0.574 k allocs: 0.0632 MB 0.574 k allocs: 0.0632 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/getinfo!/NonLinModel 0.614 k allocs: 0.0785 MB 0.614 k allocs: 0.0785 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/MultipleShooting 1.97 k allocs: 0.0831 MB 1.97 k allocs: 0.0831 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/LinModel/SingleShooting 0.314 k allocs: 12.4 kB 0.314 k allocs: 12.4 kB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShooting 2.3 k allocs: 0.104 MB 2.3 k allocs: 0.104 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/MultipleShootingHessian 2.89 k allocs: 0.14 MB 2.89 k allocs: 0.14 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocation 3.79 k allocs: 0.194 MB 3.79 k allocs: 0.194 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/OrthogonalCollocationHessian 7.61 k allocs: 0.534 MB 7.61 k allocs: 0.534 MB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShooting 0.337 k allocs: 13.5 kB 0.337 k allocs: 13.5 kB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/SingleShootingHessian 0.337 k allocs: 13.5 kB 0.337 k allocs: 13.5 kB 1
UNIT TESTS/PredictiveController/NonLinMPC/moveinput!/NonLinModel/TrapezoidalCollocation 1.45 k allocs: 0.0616 MB 1.45 k allocs: 0.0616 MB 1
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.02 k allocs: 0.0425 MB 1.02 k allocs: 0.0425 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/getinfo!/NonLinModel 1.29 k allocs: 0.175 MB 1.29 k allocs: 0.175 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Current form 0.158 M allocs: 0.121 GB 0.158 M allocs: 0.116 GB 1.04
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/LinModel/Prediction form 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/Current form 0.995 k allocs: 26.1 kB 0.995 k allocs: 26.1 kB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/preparestate!/NonLinModel/Prediction form 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/LinModel/Current form 2 allocs: 0.0469 kB 2 allocs: 0.0469 kB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/LinModel/Prediction form 7.08 k allocs: 0.451 MB 7.08 k allocs: 0.451 MB 1
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/NonLinModel/Current form 0 allocs: 0 B 0 allocs: 0 B
UNIT TESTS/StateEstimator/MovingHorizonEstimator/updatestate!/NonLinModel/Prediction form 0.995 k allocs: 26.1 kB 0.995 k allocs: 26.1 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.149 k allocs: 11.2 kB 0.149 k allocs: 11.2 kB 1

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.

Support custom constraints for MovingHorizonEstimator

2 participants