Home > mpt > solvers > mpt_mplp.m

mpt_mplp

PURPOSE ^

MPT_MPLP Explicitly solves the given linear program (LP)

SYNOPSIS ^

function [Pn,Fi,Gi,activeConstraints,Phard,details]=mpt_mplp(Matrices,Options)

DESCRIPTION ^

MPT_MPLP Explicitly solves the given linear program (LP)

 [Pn,Fi,Gi,activeConstraints,Phard,details]=mpt_mplp(Matrices,Options)

 ---------------------------------------------------------------------------
 DESCRIPTION
 ---------------------------------------------------------------------------
 Multiparametric linear programming

 Solves the problem
   V(x) = min H U + F x
           U
   s.t.   G U <= W + E x
          bndA*x <= bndb

 As a solution we get 'nR' regions
   Pn(i)={x : H x <= K}
 
 with the optimal control law
   U = Fi{i} x + Gi{i}

 and the corresponding cost function expression
   V(x) = Bi{i} x + Ci{i}
  
 ---------------------------------------------------------------------------
 INPUT
 ---------------------------------------------------------------------------
 Matrices - a struct with all the parameters which are needed.
            See description above for explanation.
   Matrices.H=H;
   Matrices.G=G;   
   Matrices.W=W;
   Matrices.E=E;
   Matrices.bndA=bndA;   Limits on exploration space, i.e. bndA*x<=bndb
   Matrices.bndb=bndb;

 Options.mplpver      - version of mpLP solver to use (3 is default)
 Options.verbose      - level of verbosity
 Options.lpsolver     - which LP solver to use (help mpt_solveLP)
 Options.max_iter     - maximum number of iterations of the algorithm
 Options.step_size    - length of step over a facet
 Options.f_perturb    - Perturbation of the optimization direction
 Options.nu           - How many elements to extract from the optimizer (to
                        deal with slacks) 
 Options.debug_level  
           Due to numerical problems tiny regions are sometimes difficult to
           calculate, i.e. are not identified at all. This may create "gaps"
           in the computed control law. For the exploration, these will be
           jumped over and the exploration in the state space will continue.
           "debug_level" can have three values:
       
           0: No debug done
           1: A tolerance is given to find gap in the region partition,
              small empty regions inside the region partition will be discarded.
              Note that this is generally not a problem, since the feedback law 
              is continuous and can therefore be interpolated easily.
              Correction to the calculation of the outer hull.
           2: Zero tolerance to find gap in the region partition, empty regions
              if they exist, will be detected, i.e. the user will be notified.
              Correction to the calculation of the outer hull.

 Note: If Options is missing or some of the fields are not defined, the default
       values from mptOptions will be used

 ---------------------------------------------------------------------------
 OUTPUT                                                                                                    
 ---------------------------------------------------------------------------
 Pn,Fi,Gi           - for region Pn(i).H*x <= Pn(i).K computed input is
                      U=Fi{i}*x+Gi{i}   
 activeConstraints  - Cell Array which stores the active constraints 
                      of the optimizer in each region.
 Phard              - Defines the feasible state space partition (i.e. union of
                      all regions) as Phard.H*x<=Phard.K
 details            - a structure with the following fields:
     nR      number of regions
     Pn      polyhedral partition
     Fi      control law
     Gi      control law
     BC      connection list
     Bi      value function
     Ci      value function
     nHard   number of hard constraints
     Phard   polytope given by hard constraints
     nb      number of constraints for each region
     LISTa   list of active constraints

 see also MPT_CONSTRUCTMATRICES, MPT_MPQP, MPT_OPTCONTROL, 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