Two generalizations are brought to a GPC algorithm. The first one applies the same filter to input errors as well as to output errors in the performance index; this allows the control system designer to impose the dominant poles of the closed-loop system and gives him more freedom in the choice of the weighting factor in the performance index. In addition, selecting independentely an appropriate reference model allows the designer to achieve a different tracking dynamics. The second generalization introduces in this performance index weighting factors which are adapted to the process to be controlled. This may improve the robustness of the controller as illustrated by the application to the control of a process with uncertain dead-time.