Classes
ipo::Separation Namespace Reference

Detailed Description

This namespace contains classes that allow the separation of facets of a polyhedron. If the given point is not in the affine hull, it may also yield a violated equation. Use it as follows:

// ..
// Create an oracle and a point to be separated.
// ...
// We first compute the affine hull.
UniqueRationalVectors points(oracle->numVariables());
UniqueRationalVectors rays(oracle->numVariables());
soplex::LPRowSetRational equations;
AffineHull::QuietOutput hullOutput;
AffineHull::Result hull;
hull.run(points, rays, equations, oracle, hullOutput);
// We now create the separator...
Separation::ProgressOutput separateOutput;
Separation::Result separator(points, rays, hull.spanningPoints(),
hull.spanningRays(), hull.basicColumns(), oracle);
// ... and separate a point.
separator.separatePoint(point, separateOutput);
if (separate.violation() <= 0)
std::cout << "The ";
// We extract the inequality and print it.
soplex::LPRowRational inequality;
separator.inequality(inequality);
oracle->printRow(std::cout, inequality);

There are different output classes, namely

Classes

struct  Certificate
 A certificate structure for faces. More...
 
class  DebugOutput
 Very verbose output class for the facet separation. More...
 
class  ProgressOutput
 Pretty output class for the facet separation. More...
 
class  QuietOutput
 Quiet output class for the facet separation. More...
 
class  Result
 Actual results of a facet separation. More...