


MPT_MPLP Explicitly solves the given linear program (LP)
[Pn,Fi,Gi,Phard,details]=mpt_mplp(Matrices,Options)
---------------------------------------------------------------------------
DESCRIPTION
---------------------------------------------------------------------------
Multiparametric linear programming
Solves the problem
V(x) = min (H + Dx)' U
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.D=D;
Matrices.bndA=bndA; Limits on exploration space, i.e. bndA*x<=bndb
Matrices.bndb
Matrices.constraintInfo;
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 (default: 1e-?)
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:
nRegions number of regions
Pn polyhedral partition
Fi,Gi optimizer matrices: u(x) = Fi * x + Gi
Bi,Ci value function matrices: J(x) = Bi * x + Ci
nHard number of hard constraints
Phard polytope given by hard constraints
nb number of constraints for each region
LISTa list of active constraints
adjacencyInfo adjacency information of the polytopic partition
adjacencyInfo.adjacencyList Adjacency list for each region of the
parition indexed by the border numbers
adjacencyInfo.tSetList List of infeasible boundaries of each region.