Home > mpt > docs > mpt_sysStruct.m

mpt_sysStruct

PURPOSE ^

MPT_SYSSTRUCT System structure description

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

MPT_SYSSTRUCT System structure description

 System structure (sysStruct) is a structure which describes the system to be
 controlled. MPT can deal with two types of systems:
 1. Discrete-time linear time-invariant (LTI) systems
 2. Discrete-time Piecewise Affine (PWA) Systems

 Both system types can be subject to constraints imposed on control inputs and system
 outputs. In addition, constraints on slew rate of the control inputs can also
 be given.


 ---------------------------------------------------------------------------
 LTI SYSTEMS
 ---------------------------------------------------------------------------

 In general, a constrained linear time-invariant system is defined by the
 following relations:

    x(k+1) = A x(k) + B u(k)
     y(k)  = C x(k) + D u(k)

 Such an LTI system is defined by the following MANDATORY fields:

    sysStruct.A = A;
    sysStruct.B = B;
    sysStruct.C = C;
    sysStruct.D = D;

 An uncertain LTI system is driven by the following set of relations:

    x(k+1) = Aunc x(k) + Bunc u(k) + w(k)
     y(k)  = C x(k) + D u(k)

 where w(k) is an unknown, but bounded additive disturbance, i.e.
    w(n) \in W  \forall n = 0...Inf

 To specify an additive disturbance, set "sysStruct.noise = W"
 where W is a polytope bounding the disturbance.

 A polytopic uncertainty can be specified by a cell array of matrices Aunc and
 Bunc as follows:

    sysStruct.Aunc = {A1, ..., An};
    sysStruct.Bunc = {B1, ..., Bn}; 

 NOTE! sysStruct.A and sysStruct.B are still required even if you want to
 define a system with parametric uncertainties.

 ---------------------------------------------------------------------------
 PWA SYSTEMS
 ---------------------------------------------------------------------------

 PWA systems are models for describing hybrid systems. Dynamical behavior of
 such systems is captured by relations of the following form:

    x(k+1) = A_i x(k) + B_i u(k) + f_i
     y(k)  = C_i x(k) + D_i u(k) + g_i

 Each dynamics "i" is defined in a polyhedral partition bounded by the
 so-called guardlines:

   guardX_i x(k) + guardU_i u(k) <= guardC_i

 that means dynamics "i" will be applied if the above inequality is satisfied.

 Fields of sysStruct describing a PWA system are listed below:

   sysStruct.A = {A1, ..., An}                      
   sysStruct.B = {B1, ..., Bn}
   sysStruct.C = {C1, ..., Cn}
   sysStruct.D = {D1, ..., Dn}
   sysStruct.f = {f1, ..., fn}                       [optional]
   sysStruct.g = {g1, ..., gn}                       [optional]
   sysStruct.guardX = {guardX1, ..., guardXn}
   sysStruct.guardU = {guardU1, ..., guardUn}        [optional]
   sysStruct.guardC = {guardC1, ..., guardCn}

 Note that all fields have to be cell arrays of matrices of compatible
 dimensions, "n" stands for total number of different dynamics. If
 sysStruct.guardU is not provided, it is assumed to be zero.

 MPT is able to deal also with PWA systems which are affected by bounded
 additive disturbances:

   x(k+1) = A_i x(k) + B_i u(k) + f_i + w(k)

 where the disturbance w(k) is assumed to be bounded for all time instances by
 some polytope W. To indicate that your system is subject to such a
 disturbance, set 
 
   sysStruct.noise = W;

 where W is a polytope object of appropriate dimension.

 ---------------------------------------------------------------------------
 CONSTRAINTS
 ---------------------------------------------------------------------------

 MPT supports various types of system constraints, such as:

 1. input constraints (MANDATORY!):
      sysStruct.umin <= u(k) <= sysStruct.umax

 2. output constraints (optional for most cases, sometimes mandatory):
      sysStruct.ymin <= y(k) <= sysStruct.ymax   - output constraints

 3. state constraints (optional, but recommended to achieve good scaling):
      sysStruct.xmin <= x(k) <= sysStruct.xmax   - state constraints

 4. constraints on slew rate of inputs (optional):
      sysStruct.dumin <= u(k) - u(k-1) <= sysStruct.dumax

 For tracking problems (probStruct.tracking=1), it is possible to specify
 bounds on reference signals by setting following fields:
 
    sysStruct.yrefmax, sysStruct.yrefmin
    sysStruct.xrefmax, sysStruct.xrefmin

 MPT also supports one additional constraint, the so-called Pbnd constraint. If
 you define "sysStruct.Pbnd" as a polytope object of the dimension of your
 state vector, this entry will be used as a polytopic constraint on the initial
 condition, i.e.
 
    x0 \in sysStruct.Pbnd

 This is especially important for explicit controllers, since "sysStruct.Pbnd"
 there limits the state-space which will be explored.

 If "sysStruct.Pbnd" is not specified, it will be set as a "large" box of size
 defined by mptOptions.infbox (see 'help mpt_init' for details).

 NOTE! "sysStruct.Pbnd" does NOT impose any constraints on predicted states!

 It is also possible to use polytopic constraints on states, inputs and
 outputs, though not directly in the system structure. If you want to use this
 kind of constraints, you need to add them manually using the "Design your own
 MPC" function (see 'help mpt_ownmpc' for an example and more details).

 ---------------------------------------------------------------------------
 OTHERS
 ---------------------------------------------------------------------------

 Text labels can be attached to state, input and output variables:

 sysStruct.StateName = {'position', 'speed'};
 sysStruct.InputName = 'force';
 sysStruct.OutputName = 'position';

 These labels will be used as axis labels when plotting polyhedral partition
 of the explicit controller, or when visualizing trajectories.

 ---------------------------------------------------------------------------
 IMPORTING SYSTEM STRUCTURES FROM OTHER SOURCES
 ---------------------------------------------------------------------------

 The function mpt_sys() is able to create a system structure based on
 information provided in certain foreign formats. Supported formats include:
   * HYSDEL source code
   * MLD structure
   * State-Space objects of the Control Toolbox (ss)
   * Transfer-Function objects of the Control Toolbox (tf)
   * State-Space objects of the Identification Toolbox (idss)
   * Objects of the MPC Toolbox (mpc)

 For more information about conversions, see 'help mpt_sys'.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Thu 30-Mar-2006 10:26:47 by m2html © 2003