What's the difference between Generalized Predictive Control and Model Predictive Control? As I know, the Generalized Predictive Control(GPC) is older than Model Predictive Control(MPC).
But what is the real difference between them? I know that GPC contains some kind of system identification, which make GPC as an adaptive controller. But what if MPC has system identification too? Would that make MPC into a GPC then?
This question is from a practical point of view: What is best? MPC with Recursive Least Square or GPC?
Is GPC obsolete? 
 A: GPC is essentially finite-horizon unconstrained adaptive discrete-time LQ for a particular system model. As constraint-handling is the main reason MPC has become so successful, it is not that interesting today in an MPC context. 
Yes, one could consider it obsolete.
A: Exact definitions of either may vary, but generally, Model Predictive Control can handle constraints, i.e. constraints on the input signal, output signal or states.  However, this requires a lot of computational power to calculate the solution to the control problem given the constraints, and the problem might even not be feasible, and one need to choose what to do in that case.
GPC does not handle constraints, and is a much easier computational problem to solve. In GPC the model representation is on internal form, as opposed to state space form, which makes it possible to rather easily make an indirect adaptive controller, i.e. one where the system is identified recursively, and the controller is updated with the new system parameters, but in general GPC can also run without adaptation. Note that GPC and LQR are very similar, but GPC relies on predictions, where LQR is based on that all future control inputs also are optimal.
RS
