@@ -253,14 +253,19 @@ NonLinMPC controller with a sample time Ts = 10.0 s:
253253├ jacobian: AutoSparse (AutoForwardDiff, TracerSparsityDetector, GreedyColoringAlgorithm)
254254├ hessian: nothing
255255└ dimensions:
256- ├ 20 prediction steps Hp
257- ├ 10 control steps Hc
258- ├ 1 slack variable ϵ (control constraints)
259- ├ 1 manipulated inputs u (0 integrating states)
260- ├ 2 estimated states x̂
261- ├ 1 measured outputs ym (1 integrating states)
262- ├ 0 unmeasured outputs yu
263- └ 0 measured disturbances d
256+ │ ├ 20 prediction steps Hp
257+ │ ├ 10 control steps Hc
258+ │ ├ 1 manipulated inputs u (0 integrating states)
259+ │ ├ 2 estimated states x̂
260+ │ ├ 1 measured outputs ym (1 integrating states)
261+ │ ├ 0 unmeasured outputs yu
262+ │ └ 0 measured disturbances d
263+ └ optimization:
264+ ├ 51 decision variables Z̃ (1 slack variable)
265+ ├ 1 linear inequality constraints A (0 custom)
266+ ├ 20 linear equality constraints Aeq
267+ ├ 0 nonlinear inequality constraints g (0 custom)
268+ └ 20 nonlinear equality constraints geq
264269```
265270
266271# Extended Help
@@ -396,14 +401,19 @@ NonLinMPC controller with a sample time Ts = 10.0 s:
396401├ jacobian: AutoForwardDiff
397402├ hessian: nothing
398403└ dimensions:
399- ├ 20 prediction steps Hp
400- ├ 2 control steps Hc
401- ├ 1 slack variable ϵ (control constraints)
402- ├ 1 manipulated inputs u (0 integrating states)
403- ├ 2 estimated states x̂
404- ├ 1 measured outputs ym (1 integrating states)
405- ├ 0 unmeasured outputs yu
406- └ 0 measured disturbances d
404+ │ ├ 20 prediction steps Hp
405+ │ ├ 2 control steps Hc
406+ │ ├ 1 manipulated inputs u (0 integrating states)
407+ │ ├ 2 estimated states x̂
408+ │ ├ 1 measured outputs ym (1 integrating states)
409+ │ ├ 0 unmeasured outputs yu
410+ │ └ 0 measured disturbances d
411+ └ optimization:
412+ ├ 3 decision variables Z̃ (1 slack variable)
413+ ├ 1 linear inequality constraints A (0 custom)
414+ ├ 0 linear equality constraints Aeq
415+ ├ 0 nonlinear inequality constraints g (0 custom)
416+ └ 0 nonlinear equality constraints geq
407417```
408418"""
409419function NonLinMPC (
@@ -1161,3 +1171,17 @@ function print_backends(io::IO, mpc::NonLinMPC)
11611171 println (io, " ├ jacobian: $(backend_str (mpc. jacobian)) " )
11621172 println (io, " ├ hessian: $(backend_str (mpc. hessian)) " )
11631173end
1174+
1175+ " Print the decision variable, linear and nonlinear constraint dimensions for `NonLinMPC`."
1176+ function print_optim_dim (io:: IO , mpc:: NonLinMPC )
1177+ nZ̃, nϵ = length (mpc. Z̃), mpc. nϵ
1178+ nA, nW, nAeq = sum (mpc. con. i_b) , mpc. con. nw* (mpc. Hp + 1 ), size (mpc. con. Aeq, 1 )
1179+ ng, nc, neq = sum (mpc. con. i_g), mpc. con. nc, mpc. con. neq
1180+ m = maximum (ndigits .((nZ̃, nA, nAeq, ng, neq))) + 1
1181+ println (io, " └ optimization:" )
1182+ println (io, " ├$(lpad (nZ̃, m)) decision variables Z̃ ($nϵ slack variable)" )
1183+ println (io, " ├$(lpad (nA, m)) linear inequality constraints A ($nW custom)" )
1184+ println (io, " ├$(lpad (nAeq, m)) linear equality constraints Aeq" )
1185+ println (io, " ├$(lpad (ng, m)) nonlinear inequality constraints g ($nc custom)" )
1186+ print (io, " └$(lpad (neq, m)) nonlinear equality constraints geq" )
1187+ end
0 commit comments