Model Predictive Control (MPC) Tools Package

Frequently Asked Questions

What is MPC tools?
MPC tools is a tool that incorporates model predictive control and moving horizon estimation for linear and nonlinear models with a steady-state target calculation. The estimator can also be used as a stand-alone system. The problems solved by MPC tools are done in an efficient way to demonstrate potential real-time application of nonlinear estimation and control.

Where did MPC tools come from?
The original version of MPC tools was written from 1997 to 2002 as part of the PhD work of Matthew J. Tenny under the supervision of Prof. James B. Rawlings in the Department of Chemical Engineering at the University of Wisconsin-Madison. It has been improved over the years since then by other group members.

Why isn't MPC tools faster?
MPC tools is written in GNU Octave, which is an interpretted language. Computational overhead is required to process commands written in Octave (the files ending in .m), which is slower than the compiled functions (ending in .oct). For this reason, many of the functions that are called frequently have been compiled. However, we feel that Octave's native language is easily read and understood, making it ideal for developing new algorithms and models.

Another factor that determines the speed of MPC tools is whether the user has supplied an analytical Jacobian for the nonlinear model and output functions. Supplying Jacobians prevents the derivatives from being estimated by finite differences, which is computationally costly. Also, if the model and Jacobian functions are compiled as .oct files, the speed of the algorithm can improve, often to over twenty times the speed of interpretted models.

A final factor that determines the speed of MPC tools is the type of machine on which the user is running Octave. Obviously, faster processors mean faster execution.

What do I do with .cc files?
Some of the models in the archive are not .m files, but rather .cc files. In this case, Octave cannot read the files without compilation, since they are written in C++ and meant to be dynamically linked to Octave. The .cc files can be made into .oct files, which Octave can read, by using mkoctfile.

How can I add my new model to the archive?
You can send me your model, and I will add it to the archive. All model submissions should include a brief description of the model, the author, and if published, the source. All necessary functions and parameters files must be included as well. Please do not send compiled binaries.

Copyright (C) 2008 Rishi Amrit. Verbatim copying and distribution is permitted in any medium, provided this notice is preserved.

University of Wisconsin
Department of Chemical Engineering
Madison WI 53719