Provides a sufficent condition to verify stability and invariance of the closed-loop system resulting from the application of a piecewise-affine control law of any kind (pwag, pwas, pwar)




This function allows to check a posteriori stability of a (closed-loop) system in piecewise-affine form, defined on a (possibly non invariant) domain X. The system can also be affected by an additive disturbance, which can take values in a given polytope defined by the user. The function has two outputs. The first output is the set XP, which is included in X and is a robustly positively invariant (RPI) set for the closed-loop dynamics. The second output is the set XF, which includes the origin and is in turn included in XP. XF represents a set where the state of the system converges in a finite time. In conclusion, if the stability test leads to a feasible solution, the closed-loop system is proved to be uniformly ultimately bounded from XP to XF. The theoretical development of the proposed algorithm, which is based on the use of piecewise-affine Lyapunov functions, can be found in [1] and [2].

[1] M. Rubagotti, S. Trimboli, D. Bernardini, A. Bemporad, 'Stability and invariance analysis of approximate explicit MPC based on PWA Lyapunov functions', Proc. IFAC World Congress, 2011.

[2] M. Rubagotti, S. Trimboli, A. Bemporad, 'Stability and invariance analysis of uncertain discrete-time piecewise-affine systems', IEEE Transactions on Automatic Control, conditionally accepted, 2012.


[XP XF] = stabilityTest(pwagCL)

Runs the stability test setting the parameters to the default value (see below), and gives as outputs the outer set XP and the inner set XF

[XP XF] = stabilityTest(pwagCL,D,rho,lambda,maxIter,transSets,options)

As above, but some additional paramenters can be specified. In particular:

D: it is a polytope defined as by the set of its vertices in the form of a matrix with n columns and nV rows, where n and nV are number of state components and number of vertices, respectively. The fault values is an empty matrix, mening the absence of disturbance.

rho: it is a scalar parameter, which must be chosen in the interval (0,1). Its value is related to the level of contractivity of a fictituous dynamics defined out of X, in order to obtain the piecewise-affine Lyapunov function. Its default value is equal to 0.99.

lambda: it is the decreasing rate of the piecewise-affine Lyapunov function, and it must be set in the interval (0,1). Its default value is equal to 0.99.

maxIter: in case a feasible solution for the piecewise-affine Lyapunov function is not found, the algorithm automatically splits the polytopic regions that compose X, in order to have more degrees of freedom and possibly find a solution. maxIter represents the maximum number of repetitions of the algorithm after further splitting the regions. The default value for maxIter is equal to 1.

transSets: this is a binary variable, that can be set equal to 0 or 1. It value affects the conditions imposed for the computation of the decay condition of the Lyapunov function. Given two sets Xi and Xj, if a state transition is possible from Xi to Xj, then we distinguish two cases: if transSets==1, the decay condition is imposed from all points in Xi, if transSets==0, the decay condition is imposed only from all points of Xi that can possibly end up in Xj in one step. This last option requires the calculation of these sets, which is based on projections and can considerably increase the computation burden. The default value for transSets is equal to 0.

options: structure defining some useful tuning paramters, listed below:



Copyright is with: