Thesis abstract:

Burke et al. introduced the Matlab package HIFOO (H-Infinity Fixed Order Optimization) in 2006

with the main goal of providing a powerful, yet user-friendly tool for computing reduced-

order controllers of linear systems. Built upon powerful methods for non-convex and

non-smooth optimization, HIFOO attempts to compute controllers which not only stabilize

the given plant, but also locally optimize one of several provided objective functions.

In this thesis, we will present two new extensions to HIFOO. The first allows the specified

plant to contain a non-trivial feedthrough term, allowing a direct connection between the

control input and the system output that is important in many realistic, physical processes.

The second extension allows the user to require specific structure in the state-space rep-

resentation of the controller matrices. Although well-known techniques exist to convert

systems with a non-trivial feedthrough to systems with a feedthrough equal to zero, these

techniques destroy any structure in the original controller.

HIFOO 1.5 addresses the same control design problems as version 1.0, including:

A detailed description of the new features found in HIFOO 1.5 is given in the following (see Chapter 3, pg 15):

Briefly:

When calling HIFOO, the user, in addition to providing the order of the desired controller, may now specify a structure array of matrices corresponding to the controller variables Ahat, Bhat, Chat and Dhat. Specifically, the user may pass a structure in the field options.structure, with subsequent fields Ahat, Bhat, Chat and Dhat that specifies which elements of the controller matrices HIFOO is free to optimize over and which are fixed to zero. The user may specify these matrices as either binary or logical matrices; however, HIFOO converts binary matrices to logical variables for internal use. For convenience, if a given matrix is not specified, HIFOO assumes that all entries of the matrix are free to be optimized over and sets the corresponding structure matrix to be a logical matrix consisting of all ones. [from Millstone, Chapter 3]

For example, if the user wished to find a order 1 controller for the CompLeib problem 'AC1', which had a diagonal transfer function, the following Matlab sessions would be sufficient to guarantee that Chat(sI-Ahat)

>> STRUCTURE.Bhat = [1 0 0];

>> STRUCTURE.Chat = [1;0;0];

>> STRUCTURE.Dhat = eye(3,3);

>> options.structure = STRUCTURE;

>> hifoo('AC1',1,options)

Observe that as Ahat has no constraints on its structure, it is not necessary to specify its structure.

- D. Henrion, Some Control Design Experiments with HIFOO.
- D. Knittel, D. Henrion, M. Millstone and M. Vedrines, Fixed-order and Structure H-infinity Control with Model Based Feedforward for Elastic Web Winding Systems (in Proceedings of the IFAC/IFORS/IMACS/IFIP Symposium on Large Scale Systems (LSS), Gdansk, Poland, 23-25 July 2007.)
- S. Gumussoy and M.L. Overton, Fixed-Order H-infinity Controller Design via HIFOO, a Specialized Nonsmooth Optimization Package (to appear in ACC 2008)
- S. Gumussoy and M.L. Overton, Timings for Numerical Experiments on Benchmark Examples for Fixed Order H-infinity Controller Design
- S. Gumussoy, M. Millstone and M.L. Overton,
H-infinity Strong Stabilization via HIFOO, a Package for Fixed-Order
Controller Design (submitted to CDC 2008)

For examples using the new features of HIFOO 1.5, see Chapter 4 in the above thesis.## Download HIFOO 1.5

HIFOO version 1.5 runs under MATLAB. It is freely available.

If you successfully use HIFOO 1.5 in your work or encounter any issues or problems, please contact Marc Millstone or Michael Overton.HIFOO 1.5 uses the following external MATLAB packages:

- HANSO version 1.0 (required), core optimization code, freely available
- a convex quadratic programming solver (required for the
optional final phase of HANSO), which can be either
- the QUADPROG function of MOSEK (limited freeware), or
- the QUADPROG function of the MATLAB Optimization Toolbox (commercial)

- an H-infinity norm computation algorithm (required for
optimizing the H-infinity norm and complex stability radius),
which can be either
- the LINORM function of the SLICOT package (commercial, but with a limited free availability for noncommercial use, with executable, currently only for Windows, available for download), or
- the NORM function of the MATLAB Control System Toolbox (commercial)

- PSPA version 1.0 (optional), a pseudospectral abscissa computation algorithm, required for optimizing the pseudospectral abscissa, freely available
- COMPleib
(optional), a database of benchmark open-loop systems in state-space
format,
freely available.
HIFOO checks the presence of the external routines and, by default, prints informative messages about what software is being used. If both versions of QUADPROG are installed, the one earlier in the MATLAB path is used. The function LINORM is strongly recommended in preference to NORM because of its much faster performance, and if both are available, LINORM is used.

## Warning

The SLICOT H-infinity norm computation routine LINORM was kindly provided by NICONET e.V. through the help of Peter Benner and Vasile Sima. Any kind of commercial use of this routine requires a license agreement with Synoptio GmbH, Berlin, Germany.