Home > mpt > extras > control > mpt_yalmipcftoc.m

mpt_yalmipcftoc

PURPOSE ^

MPT_YALMIPCFTOC CFTOC of PWA systems

SYNOPSIS ^

function [ctrl, F, obj, variables] = mpt_yalmipcftoc(sysStruct, probStruct, Options)

DESCRIPTION ^

 MPT_YALMIPCFTOC CFTOC of PWA systems

 ctrl = mpt_yalmipcftoc(sysStruct, probStruct)
 ctrl = mpt_yalmipcftoc(sysStruct, probStruct, Options)

 ---------------------------------------------------------------------------
 DESCRIPTION
 ---------------------------------------------------------------------------
 Computes the explicit solution of a given CFTOC problem with either linear
 or quadratic cost function. Supports PWA and LTI systems with
 boolean/integer/alphabet inputs (sysStruct.Uset), time-varying penalties, soft
 constraints (probStruct.{S|Sx|Su|Sy}), move blocking (probStruct.Nc), terminal
 state constraints (probStruct.xN), multiple target sets (probStruct.Tset),
 computes stabilizing sets for 2-norm problems.

 There a two approaches:
  1. one-shot formulation
  2. dynamic programming (DP) formulation

 You can choose the DP formulation by setting Options.dp=1

 By default we use the DP formulation if the cost function is linear, otherwise
 we use the one-shot formulation.

 Following problem formulations are supported:
  * terminal state constraints - when probStruct.xN is given, terminal state
                                 constraint is added (x(N)==probStruct.xN)
  * time-varying penalties     - when probStruct.Q, probStruct.R, probStruct.Qy
                                 are given as cell arrays
  * multi-model dynamics       - allows to specify one model per prediction
                                 step. to use this feature, specify sysStruct
                                 as a cell array of system structures.
  * move blocking              - if probStruct.Nc is given, first Nc control
                                 moves are considered free (i.e.
                                 u_0...u_(Nc-1)), while all  subsequent control
                                 moves (u_Nc...u_(N-1)) are equal to u_(Nc-1).
                                 works also for PWA and MLD systems!
  * soft constraints - if "probStruct.Sx" is specified, uses soft state
                       constraints.
                     - probStruct.sxmax - maximum allowed violation of each
                       state constraint. e.g. probStruct.sxmax=[10;0] allows to
                       violate 1st state constraint by 10, while keeping the
                       second constraint hard (i.e. no violation are allowed)
                     - probStruct.Sy, probStruct.symax - softening of output
                       constraints
                     - probStruct.Su, probStruct.sumax - softening of input
                       constraints
  * penalize switching of PWA dynamics - probStruct.Qdyn, probStruct.Qswitch

 ---------------------------------------------------------------------------
 INPUT
 ---------------------------------------------------------------------------
 sysStruct         - System structure in the sysStruct format
 probStruct        - Problem structure in the probStruct format
 Options           - Additional options
    .verbose       - level of verbosity
    .mp.algorithm  - which enumeration algorithm to use
                     (Options.mp_algorithm=3 uses different enumeration)
    .mp.presolve   - perform pre-solving if this option is true (default)
    .dp            - if set to 1, use the DP formulation
    .force_mld     - force MLD dynamics (mainly for explicit controllers)
    .force_pwa     - force PWA dynamics (mainly for on-line controllers)

 ---------------------------------------------------------------------------
 OUTPUT
 ---------------------------------------------------------------------------
 ctrl              - MPTCTRL object 

 see also MPT_CONTROL, MPT_OPTCONTROLPWA

CROSS-REFERENCE INFORMATION ^

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