hinfstructOptions

Set options for hinfstruct

Syntax

options = hinfstructOptions
options = hinfstructOptions(Name,Value)

Description

options = hinfstructOptions returns the default option set for the hinfstruct command.

options = hinfstructOptions(Name,Value) creates an option set with the options specified by one or more Name,Value pair arguments.

Input Arguments

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

hinfstructOptions takes the following Name arguments:

'Display'

String determining the amount of information to display during hinfstruct optimization runs.

Display takes the following values:

  • 'off'hinfstruct runs in silent mode, displaying no information during or after the run.

  • 'iter' — display optimization progress after each iteration. The display includes the value of the closed-loop H norm after each iteration. The display also includes a Progress value indicating the percent change in the H norm from the previous iteration.

  • 'final' — display a one-line summary at the end of each optimization run. The display includes the minimized value of the closed-loop H norm and the number of iterations for each run.

Default: 'final'

'MaxIter'

Maximum number of iterations in each optimization run.

Default: 300

'RandomStart'

Number of additional optimizations starting from random values of the free parameters in the controller.

If RandomStart = 0, hinfstruct performs a single optimization run starting from the initial values of the tunable parameters. Setting RandomStart = N > 0 runs N additional optimizations starting from N randomly generated parameter values.

hinfstruct finds a local minimum of the gain minimization problem. To increase the likelihood of finding parameter values that meet your design requirements, set RandomStart > 0. You can then use the best design that results from the multiple optimization runs.

Use with UseParallel = true to distribute independent optimization runs among MATLAB® workers (requires Parallel Computing Toolbox™ software).

Default: 0

'UseParallel'

Parallel processing flag.

Set to true to enable parallel processing by distributing randomized starts among workers in a parallel pool. If there is an available parallel pool, then the software performs independent optimization runs concurrently among workers in that pool. If no parallel pool is available, one of the following occurs:

  • If Automatically create a parallel pool is selected in your Parallel Computing Toolbox preferences, then the software starts a parallel pool using the settings in those preferences.

  • If Automatically create a parallel pool is not selected in your preferences, then the software performs the optimization runs successively, without parallel processing.

If Automatically create a parallel pool is not selected in your preferences, you can manually start a parallel pool using parpool before running the tuning command.

Using parallel processing requires Parallel Computing Toolbox software.

Default: false

'TargetGain'

Target H norm.

The hinfstruct optimization stops when the H norm (peak closed-loop gain) falls below the specified TargetGain value.

Set TargetGain = 0 to optimize controller performance by minimizing the peak closed-loop gain. Set TargetGain = Inf to just stabilize the closed-loop system.

Default: 0

'TolGain'

Relative tolerance for termination. The optimization terminates when the H norm decreases by less than TolGain over 10 consecutive iterations. Increasing TolGain speeds up termination, and decreasing TolGain yields tighter final values.

Default: 0.001

'MaxFrequency'

Maximum closed-loop natural frequency.

Setting MaxFrequency constrains the closed-loop poles to satisfy |p| <  MaxFrequency.

To let hinfstruct choose the closed-loop poles automatically based upon the system's open-loop dynamics, set MaxFrequency = Inf. To prevent unwanted fast dynamics or high-gain control, set MaxFrequency to a finite value.

Specify MaxFrequency in units of 1/TimeUnit, relative to the TimeUnit property of the system you are tuning.

Default: Inf

'MinDecay'

Minimum decay rate for closed-loop poles

Constrains the closed-loop poles to satisfy Re(p) < -MinDecay. Increase this value to improve the stability of closed-loop poles that do not affect the closed-loop gain due to pole/zero cancellations.

Specify MinDecay in units of 1/TimeUnit, relative to the TimeUnit property of the system you are tuning.

Default: 1e-7

Output Arguments

options

Option set containing the specified options for the hinfstruct command.

Examples

expand all

Create Options Set for hinfstruct

Create an options set for a hinfstruct run using three random restarts and a stability offset of 0.001. Also, configure the hinfstruct run to stop as soon as the closed-loop gain is smaller than 1.

 options = hinfstructOptions('TargetGain',1,...
                          'RandomStart',3,'StableOffset',1e-3);

Alternatively, use dot notation to set the values of options.

options = hinfstructOptions;
options.TargetGain = 1;
options.RandomStart = 3;
options.StableOffset = 1e-3;

Configure Option Set for Parallel Optimization Runs

Configure an option set for a hinfstruct run using 20 random restarts. Execute these independent optimization runs concurrently on multiple workers in a parallel pool.

If you have the Parallel Computing Toolbox software installed, you can use parallel computing to speed up hinfstruct tuning of fixed-structure control systems. When you run multiple randomized hinfstruct optimization starts, parallel computing speeds up tuning by distributing the optimization runs among workers.

If Automatically create a parallel pool is not selected in your Parallel Computing Toolbox preferences, manually start a parallel pool using parpool. For example:

parpool;

If Automatically create a parallel pool is selected in your preferences, you do not need to manually start a pool.

Create an hinfstructOptions set that specifies 20 random restarts to run in parallel.

options = hinfstructOptions('RandomStart',20,'UseParallel',true);

Setting UseParallel to true enables parallel processing by distributing the randomized starts among available workers in the parallel pool.

Use the hinfstructOptions set when you call hinfstruct. For example, suppose you have already created a tunable closed loop model CL0. In this case, the following command uses parallel computing to tune CL0.

[CL,gamma,info] = hinfstruct(CL0,options);

See Also

Was this topic helpful?