Main Content

MPC Designer

Design and simulate model predictive controllers


The MPC Designer app lets you design and simulate model predictive controllers in MATLAB® and Simulink®.

Using this app, you can:

  • Interactively design model predictive controllers and validate their performance using simulation scenarios

  • Obtain linear plant models by linearizing Simulink models (requires Simulink Control Design™)

  • Review controller designs for potential run-time stability or numerical issues

  • Compare response plots for multiple model predictive controllers

  • Generate Simulink models with an MPC controller and plant model

  • Generate MATLAB scripts to automate MPC controller design and simulation tasks


The following advanced MPC features are not available in the MPC Designer app.

  • Explicit MPC design

  • Adaptive MPC design

  • Nonlinear MPC design

  • Mixed input/output constraints (setconstraint)

  • Terminal weight specification (setterminal)

  • Custom state estimation (setEstimator)

  • Sensitivity analysis (sensitivity)

  • Alternative cost functions with off-diagonal weights

  • Specification of initial plant and controller states for simulation

  • Specification of nominal state values using mpcobj.Model.Nominal.X and mpcobj.Model.Nominal.DX

  • Updating weights, constraints, MV targets, and external MVs online during simulations

If your application requires any of these features, design and simulate your controller at the command line. You can also run simulations in Simulink when using these features.

MPC Designer app

Open the MPC Designer App

  • MATLAB Toolstrip: On the Apps tab, under Control System Design and Analysis, click the app icon.

  • MATLAB command prompt: Enter mpcDesigner.

  • Simulink model editor: In the MPC Controller Block Parameters dialog box, click Design.

Programmatic Use

expand all

mpcDesigner opens the MPC Designer app. You can then import a plant or controller to start the design process, or open a saved design session.

mpcDesigner(plant) opens the app and creates a default MPC controller using plant as the internal prediction model. Specify plant as an ss, tf, or zpk LTI model.

If plant is a stable, continuous-time LTI system, MPC Designer sets the controller sample time to 0.1 Tr, where Tr is the average rise time of the plant. If plant is an unstable, continuous-time system, MPC Designer sets the controller sample time to 1.

By default, plant input and output signals are treated as manipulated variables and measured outputs respectively. To specify a different input/output channel configuration, use setmpcsignals before opening MPC Designer.

You can also specify plant as a linear System Identification Toolbox™ model, such as an idss (System Identification Toolbox) or idtf (System Identification Toolbox) system. The app converts the identified model to a state-space system, discarding any noise channels. To convert noise channels to unmeasured disturbances, convert the identified model to a state-space model using the 'augmented' option. For more information on identifying plant models, see Identify Plant from Data.

mpcDesigner(mpcobj) opens the app and imports the model predictive controller mpcobj from the MATLAB workspace. To create an MPC controller, use mpc.

mpcDesigner(mpcobjs) opens the app and imports multiple MPC controllers specified in the cell array mpcobjs. All of the controllers in mpcobjs must have the same input/output channel configuration.

mpcDesigner(mpcobjs,names) additionally specifies controller names when opening the app with multiple MPC controllers. Specify names as a cell array of character vectors or string array with the same length as mpcobjs. Specify a unique name for each controller.

mpcDesigner(sessionFile) opens the app and loads a previously saved session. Specify sessionFile as one of the following:

  • The name of a session data file in the current working directory or on the MATLAB path, specified as a character vector or string. To save session data to disk, in the MPC Designer app, on the MPC Designer tab, click Save Session. The saved session data includes all plants, controllers, and scenarios in the Data Browser, the current MPC structure, and the current plot configuration.

  • A previously loaded SessionData object in the MATLAB workspace. To load a SessionData object from a session data file, at the command line, enter:

    load sessionFile

Version History

Introduced in R2015b

expand all

See Also