Option set for
Use the LMI-based algorithm to compute an -optimal controller for a plant with one control signal and two measurement signals. Turn on the display that shows the progress of the computation.
Load the plant, and specify the numbers of measurements and controls.
load hinfsynExData P ncont = 1; nmeas = 2;
Create an options set for
hinfsyn that specifies the LMI-based algorithm and turns on the display.
opts = hinfsynOptions('Method','LMI','Display','on');
Alternatively, start with the default options set, and use dot notation to change option values.
opts = hinfsynOptions; opts.Method = 'LMI'; opts.Display = 'on';
Compute the controller.
[K,CL,gamma] = hinfsyn(P,nmeas,ncont,opts);
Minimization of gamma: Solver for linear objective minimization under LMI constraints Iterations : Best objective value so far 1 2 223.728733 3 138.078240 4 138.078240 5 74.644885 6 48.270221 7 48.270221 8 48.270221 9 19.665676 10 19.665676 11 11.607238 12 11.607238 13 11.607238 14 4.067958 15 4.067958 16 4.067958 17 2.154349 18 2.154349 19 2.154349 20 1.579564 21 1.579564 22 1.579564 23 1.236726 24 1.236726 25 1.236726 26 0.993341 27 0.993341 28 0.949317 29 0.949317 30 0.949317 31 0.945765 32 0.944068 33 0.941253 34 0.941253 35 0.940613 *** new lower bound: 0.931677 Result: feasible solution of required accuracy best objective value: 0.940613 guaranteed absolute accuracy: 8.94e-03 f-radius saturation: 0.404% of R = 1.00e+08 Optimal Hinf performance: 9.397e-01
comma-separated pairs of
the argument name and
Value is the corresponding value.
Name must appear inside quotes. You can specify several name and value
pair arguments in any order as
'Display'— Display progress and generate report
Display optimization progress and generate report in the command window, specified
as the comma-separated pair consisting of
'off'. The contents of the display
depend on the value of the
'Method' = 'RIC', the display shows the range of
performance targets (
gamma values) tested. For each
gamma, the display shows:
The smallest eigenvalues of the normalized Riccati solutions X = X∞/γ and Y = Y∞/γ
The spectral radius
rho(XY) = max(abs(eig(XY)))
A pass/fail (
p/f) flag indicating whether that
gamma value satisfies the conditions X ≥
0, Y ≥ 0, and
rho(XY) < 1
The best achieved
gamma performance value
For more information about the displayed information, see the Algorithms section
'Method' = 'LMI', the display shows the best achieved
gamma value for each iteration of the optimization problem. It
also displays a report of the best achieved value and other parameters of the
opts = hinfsynOptions('Display','on') creates an option
set that turns the progress display on.
'Method'— Optimization algorithm
Optimization algorithm that
mixsyn uses to optimize closed-loop performance, specified as
the comma-separated pair consisting of
'Method' and one of the
'RIC' — Riccati-based algorithm. The Riccati method is
fastest, but cannot handle singular problems without first adding extra
disturbances and errors. This process is called
regularization, and is performed automatically by
mixsyn unless you set the
'Regularize' option to
regularization, this method works well for most problems.
'Method' = 'RIC', the additional options listed under
Riccati Method Options are available.
'LMI' — LMI-based algorithm. This method requires no
regularization, but is computationally more intensive than the Riccati
'Method' = 'LMI', the additional options listed under
LMI Method Options are available.
'MAXE' — Maximum-entropy algorithm.
'Method' = 'MAXE', the additional options listed under
Maximum-Entropy Method Options are available.
For more information about how these algorithms work, see the Algorithms section
opts = hinfsynOptions('Mathod','LMI') creates an option
set that specifies the LMI-based optimization algorithm.
'RelTol'— Relative accuracy on optimal H∞ performance
Relative accuracy on the optimal H∞
performance, specified as the comma-separated pair consisting of
'RelTol' and a positive scalar value. The algorithm stops testing
γ values when the relative difference between the last failing
value and last passing value is less than
opts = hinfsynOptions('RelTol',0.05) creates an option
set that sets the relative accuracy to 0.05.
'AbsTol'— Absolute accuracy on optimal H∞ performance
Absolute accuracy on the optimal H∞
performance, specified as the comma-separated pair consisting of
'AbsTol' and a positive scalar value.
opts = hinfsynOptions('AbsTol',1e-4) creates an option
set that sets the absolute accuracy to 0.0001.
'AutoScale'— Automatic plant scaling
Automatic plant scaling, specified as the comma-separated pair consisting of
'AutoScale' and one of the following:
'on' — Automatically scales the plant states, controls, and
measurements to improve numerical accuracy.
returns the controller
K in the original unscaled
'off' — Does not change the plant scaling. Turning off
scaling when you know your plant is well scaled can speed up the
opts = hinfsynOptions('AutoScale','off') creates an
option set that turns off automatic scaling.
'Regularize'— Automatic regularization
Automatic regularization of the plant, specified as the comma-separated pair
'Regularize' and one of:
'on' — Automatically regularizes the plant to enforce
requirements on P12 and
hinfsyn). Regularization is a
process of adding extra disturbances and errors to handle singular
'off' — Does not regularize the plant. Turning off
regularization can speed up the computation when you know your problem is far
enough from singular.
opts = hinfsynOptions('Regularize','off') creates an
option set that turns off regularization.
'LimitGain'— Limit on controller gains
Limit on controller gains, specified as the comma-separated pair consisting of
'LimitGain' and either
'off'. For continuous-time plants, regularization of plant
feedthrough matrices D12 or
hinfsyn) can result in controllers with large coefficients and fast
dynamics. Use this option to automatically seek a controller with the same performance
but lower gains and better conditioning.
'LimitRS'— Limit on norm of LMI solutions
Limit on norm of LMI solutions, specified as the comma-separated pair consisting
'LimitRS' and a scalar factor in the range [0,1]. Increase this
value to slow the controller dynamics by penalizing large-norm LMI solutions. See
'TolRS'— Reduced-order synthesis tolerance
Reduced-order synthesis tolerance, specified as the comma-separated pair
'TolRS' and a positive scalar value.
hinfsyn computes a reduced-order controller when
<= rho(R*S) <= TolRs, where
rho(A) is the
opts— Options for
Options for the
computation, returned as an
hinfsyn options object. Use the object
as an input argument to
[K,CL,gamma,info] = hinfsyn(P,nmeas,ncont,opts);
 Gahinet, P., and P. Apkarian. "A linear matrix inequality approach to H∞-control." Int J. Robust and Nonlinear Control, Vol. 4, No. 4, 1994, pp. 421–448.