Home > mpt > extras > control > mldmpc > mpc_mip.m

mpc_mip

PURPOSE ^

===============================================================================

SYNOPSIS ^

function [ut, dt, zt, Eflag] = mpc_mip( S, xt, r, Q, pr, co, Options )

DESCRIPTION ^

===============================================================================

 Title:       mpc_mip.m

 Version:     2.0
                                                                       
 Project:     Control of MLD systems
                                                                       
 Purpose:     MPC of MLD systems                  
                                                                        
 Authors:     Tobias Geyer, Domenico Mignone, Mato Baotic
              based on mipc1.m by Alberto Bemporad, 12/5/1998 
              (C) 2005 by Michal Kvasnica

 History:     date:       subject:                             author:
              -----       --------                             -------
              2003.11.19  first public release                 Tobias Geyer
              2003.03.17  time-varying models                  Tobias & George
              2002.05.21  Added flag, removed output messages  Tobias
              2002.05.17  Added constraints on z variables     Mato & Tobias
              2002.04.19  Relaxation of MLD and terminal       Mato Baotic
                          state constraints enabled via
                          Options.relaxind
              2002.04.13  Included infinity norm case          Mato Baotic
                          (Options.norm = inf)
              2000.11.16  Initial version adapted from         Domenico Mignone
                          mipc_main.m

 Inputs:     S:  the MLD model in compact or valid format
                 If S is a cell array, every cell corresponds to a different
                 MLD model with corresponding prediction horizons given in the
                 vectors pr and co.
             x:  the current state
             r:  the reference value (see below for the possibilities)
             Q:  structure with the weight matrices (see below for details)
             pr: vector of prediction horizons
             co: vector of control horizons
             Options: further inputs (see below for the possibilities)

             All inputs, except Options are mandatory

             Details on some inputs:

             r: if r has dimension ny, it is understood as constant reference
                     for y
                if r has dimension pr*ny, it is understood as a time varying
                     reference trajectory for y
                if r is a structure, the following fields are accepted as 
                     references for the involved variables:
                     r.x reference for the state
                     r.u reference for the input
                     r.d reference for delta
                     r.z reference for z
                     r.y reference for the output
                     each field is assumed to be a constant reference, if it is
                     of dimension nx, nu, nd, nz, ny and is assumed to be a
                     time varying reference if the dimension is pr*nx, pr*nu...

             Q: the following fields can be specified
                Q.Qx weights on x
                Q.Qu weights on u
                Q.Qd weights on d
                Q.Qz weights on z
                Q.Qy weights on y

             Options accepts the following fields:
                Options.bigB             infinity for bounds on variables
                                         (default = 1e6)
                Options.epsil            global softening of ax <= b
                                         (default = 1e-7)
                Options.solver           MIQP solver for panmiqp
                                         (default = 'miqp')
                Options.solver.options   specific solver options
                                         (default = [])
                Options.saveflag         flag denoting, whether workspace is
                                         saved before/after optimization
                                         (default = 0)
                Options.savestr          name of files for saving
                                         (default = 'data')
                Options.eps2             tolerance on fulfillment of terminal 
                                         state constraints
                                         (default = 0)
                Options.umin             lower bounds for inputs
                                         (default = -bigB)
                Options.umax             upper bounds for inputs
                                         (default = bigB)
                Options.zmin             lower bounds for aux variable
                                         (default = -bigB)
                Options.zmax             upper bounds for aux variable
                                         (default = bigB)
                Options.flagihard        if 1 hard constraints on Ax<=b
                                         if 0 epsilon softening of Ax<=b
                                         (default = 1)
                Options.weps             weight in cost function if flagihard=0
                                         (default = 1)
                Options.relaxind         indices of constraints Ax<=b to be
                                         relaxed if flagihard==0. Only MLD and
                                         terminal state constraints can be relaxed.
                                         (default = [1:ne*pr+2*nx], i.e., relax
                                         *ALL* MLD and terminal state constraints
                                         and use only *ONE* slack variable)
                                         Note: if Options.relaxindex==[], relax
                                               *ALL* MLD and terminal state
                                               constraints and use *DIFFERENT*
                                               slack variable for each constraint
                Options.xopt             initial guess for the optimization
                                         (default = 0)
                Options.norm             norm used in MPC formulation
                                         {2 | inf | 1}
                                         (default = 2)
                Options.verbose          display additional information
                                         (default = 0)
                Options.removeInfBounds  if true, removes constraints of the
                                         form z <= Inf and replaces +/- Inf
                                         bounds on variables by +/- Options.bigB.
                                         (default = 0)
                Options.bounds2ineq      if true, converts bounds of variables
                                         into inequality constraints
                                         (default = 0)


 Outputs:     ut    : current input to be applied to the system
              dt    : current value of the variable delta
              zt    : current value of the variable z
              Eflag : structure for further output informations
                      Eflag.slkeps: slack variables of constraints if flagihard==0

 Notes:       Soft constraints on the whole set of inequalities (flagihard=0)
              The problem becomes:  min  J + ||weps, epsil||
                                    s.t. Ax-epsil*ones(nlin,1) <= B
                                                         epsil >= 0 
              constraint relaxations on u (flaguhard = 0)
              are only effective, if all constraints on u are expressed via
              umin and umax. If they are already included in the MLD matrices
              Ei, this relaxation has no effect.

              This is an extension to implement multiple sampling times within
              the prediction horizon. Therefore, each model has the same dimensions
              but different associated prediction horizons (and sampling times).

 Requires:    mpc_checkSysWeight
              mpc_buildmatFAST

 Contact:     Mato Baotic, baotic@control.ee.ethz.ch
              Tobias Geyer, geyer@control.ee.ethz.ch
              Michal Kvasnica, kvasnica@control.ee.ethz.ch

              Automatic Control Laboratory
              ETH Zentrum,
              Zurich, Switzerland

              Comments and bug reports are highly appreciated

CROSS-REFERENCE INFORMATION ^

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