# review

Examine MPC controller for design errors and stability problems at run time

## Description

`review(`

checks for potential design
issues in the model predictive controller with defined sample time,
`mpcobj`

)`mpcobj`

, and generates a testing report. The testing report provides
information about each test, highlights test warnings and failures, and suggests possible
solutions. For more information on the tests performed by the `review`

function, see Algorithms.

## Examples

## Input Arguments

## Output Arguments

## Tips

You can also review your controller design in the MPC Designer app. On the

**Tuning**tab, in the**Analysis**section, click**Review Design**.Test your controller design using techniques such as simulations, since

`review`

cannot detect all possible performance factors.

## Algorithms

The review command performs the following tests.

Test | Description |
---|---|

MPC Object Creation | Tests whether the controller specifications generate a valid MPC controller. If the controller is invalid, additional tests are not performed. |

QP Hessian Matrix Validity | Tests whether the MPC quadratic programming (QP) problem for the controller has a unique solution. You must choose cost function parameters (penalty weights) and horizons such that the QP Hessian matrix is positive-definite. |

Closed-Loop Internal Stability | Extracts the `A` matrix from the state-space realization of the
unconstrained controller, and then calculate its eigenvalues. If the absolute value of
each eigenvalue is less than or equal to `1` and the plant is stable,
then your feedback system is internally stable. |

Closed-Loop Nominal Stability | Extracts the `A` matrix from the discrete-time state-space
realization of the closed-loop system; that is, the plant and controller connected in
a feedback configuration. Then calculate the eigenvalues of `A` . If
the absolute value of each eigenvalue is less than or equal to `1` ,
then the nominal (unconstrained) system is stable. This test is not performed if
`mpcobj` is set to use a custom state estimator. |

Closed-Loop Steady-State Gains | Tests whether the controller forces all controlled output variables to their
targets at steady state in the absence of constraints. This test is not performed if
`mpcobj` is set to use a custom state estimator. This test is not
performed if `mpcobj` is set to use a custom state
estimator. |

Hard MV Constraints | Tests whether the controller has hard constraints on both a manipulated variable and its rate of change, and if so, whether these constraints may conflict at run time. |

Other Hard Constraints | Tests whether the controller has hard output constraints or hard mixed input/output constraints, and if so, whether these constraints may become impossible to satisfy at run time. |

Soft Constraints | Tests whether the controller has the proper balance of hard and soft constraints by evaluating the constraint ECR parameters. |

Memory Size for MPC Data | Estimates the memory size required by the controller at run time. |

## Alternatives

`review`

automates certain tests that you can perform at the command
line.

## Version History

**Introduced in R2011b**

## See Also

### Functions

`trim`

|`cloffset`

|`sensitivity`

|`ss`

|`tf`

|`zpk`

|`size`

|`d2d`

|`mpcverbosity`

|`mpcprops`

|`set`

|`get`

|`getname`

|`setname`

|`getindist`

|`getoutdist`

|`setindist`

|`setoutdist`

|`getEstimator`

|`setEstimator`

|`sim`

|`trim`