Polyhedron
Purpose
Create a Polyhedron object.
Syntax
P = Polyhedron(param, value, ...)
P = Polyhedron(dat)
P = Polyhedron(con, var)
P = Polyhedron(Q)
Description
Creates a Polyhedron:

or

- Polyhedral data specified as param, value pairs (detailed below).
- Polyhedral data given in a structure. The same data as described
below for param/value pair, but given as a structure.
- Yalmip description con[straints]
var[iables] specified
- Polyhedron
specified.
The polyhedron object is a handle object. This means that executing
does NOT create a copy of
, both only another object by the same name. If you
want to copy
, then call
.
This class repreents the following polyhedra:
-
Unbounded polyhedra
All polyhedra can be decomposed into the sum of a bounded polytope a cone:

and satisfy the Minkowski-Weyl theorem and can therefore be represented
either as the intersection of a finite number of inequalities, or as the convex
combination of a finite number of vertices (or rays).
MPT will store all irredundant polyhedra as a decomposition into a polytope and a cone.
-
Lower-dimensional polyhedra
Theoretically there is no difference between full-dimensional and lower-dimensional
polyhedra either in representation or in the algorithms that operate on them. However,
experience has shown that if the affine hull of the polyhedron is not taken into account
explicitly, then virtually all algorithms will fail.
MPT will store a polyhedron as the intersection of a full-dimensional polyhedron and an affine hull.
-
Upointed Polyhedra
Operations on polyhedra with non-empty lineality space (i.e. unpointed polyhedra) adds
significant complexity and difficulty. Thankfully, all convex sets can be decomposed into
the Minkowski sum of their lineality space, with their restriction onto a linear subspace
U that is perpendicular to
where
has an empty lineality space. Therefore, it is always possible to
represent an unpointed polyhedron as the lifting of a pointed one:

where
is pointed and
with n > m.
The requirement of dealing with an additional lifting operation for all polyhedra will add
more coding complexity to MPT than desired. Therefore, in the interest of
simplicity, MPT will handle unpointed polyhedra only in halfspace form, where the
lifting map is not required, and any operation that cannot function on lifted polyhedra
will return an error.
MPT will have a limited ability to operate on unpointed polyhedra. It will
handle unpointed polyhedra only in halfspace form, where the lifting map is not
required, and any operation that does not function on unpointed
polyhedra will throw an exception.
Input Arguments
P |
Polyhedron in any format
Class: Polyhedron
|
H |
Inequality description (must be full-dimensional)
Class: double
|
He |
Affine set
Class: double
|
V |
Points defining the set .
Class: double
|
R |
Rays defining the set .
Class: double
|
irredundantVRep |
If true, then the given V-representation is assumed irredundant.
Class: logical Allowed values:
|
irredundantHRep |
If true, then the given H-representation is assumed irredundant.
Class: logical Allowed values:
|
lb |
Add a constraint of the form .
Class: double
|
ub |
Add a constraint of the form .
Class: double
|
Output Arguments
P |
Object of the Polyhedron class. |
Example(s)
Example
1
Create V-PolyhedronP = Polyhedron([2 2;-5 -2; -5 3])
Polyhedron in R^2 with representations:
H-rep : Unknown (call computeHRep() to compute)
V-rep (redundant) : Vertices 3 | Rays 0
Functions : none
Create H-PolyhedronQ = Polyhedron([1 -1;0.5 -2;-1 0.4; -1 -2],[1;2;3;4])
Polyhedron in R^2 with representations:
H-rep (redundant) : Inequalities 4 | Equalities 0
V-rep : Unknown (call computeVRep() to compute)
Functions : none
Plot the polyhedra plot([P,Q]);

Example
2
Import polyhedron from YALMIPDefine yalmip variables and the set x = sdpvar(3,1);
S = set([-1;-2;-3]<= x <= [1;2;3]);
Construct polyhedron P = Polyhedron(S,x)
Polyhedron in R^3 with representations:
H-rep (redundant) : Inequalities 6 | Equalities 0
V-rep : Unknown (call computeVRep() to compute)
Functions : none
Plot the polyhedron plot(P);

See Also
yset
© 2010-2013 Colin Neil Jones: EPF Lausanne, colin.jones@epfl.ch