Main content

Running polco


java -jar polco.jar --help

A help message is displayed, with detailed information about usage, options and input and output formats


java -jar polco.jar --version

Displays the current version of the polco tool.


To run the program with more memory, use the Java Virtual Machine options Xms and Xmx. The following call runs with 1G initial memory, and allows Java to allocate up to 2G:

java -Xms1g -Xmx2g -jar polco.jar -kind text -iq -out text ccp6.txt


Inequality matrix

java -jar polco.jar -kind text -iq -out text ccp6.txt

  • Computes 368 facets of the 0/1 cut polytope on the complete graph over 6 vertices
  • Download sample input file (IQ, 1 KB)

Equality and inequality matrix

java -jar polco.jar -kind text -eq coli.eq -iq -out zip

Polymake files (.poly)

java -jar polco.jar -kind polymake -in CUT6.poly -out text cut6.txt

H– and V–format files (.ine/.ext)

java -jar polco.jar -kind cdd -in ccc6.ext -out text ccc6.txt

Calling polco from another Java program

You can also use polco as library within another Java program. An a example usage is given in the javadoc comments of the adapter package.


The algorithm enumerates extreme rays of a polyhedral cone. The input of the algorithm is a homogeneous system of linear equalities (matrix A) and inequalities (B). The output is a matrix R with extreme rays as column vectors.

Algorithm input and output are formalized below, transformations for inhomogeneous systems (polytopes) and for facet enumerations follow.

We recommend the Polyhedral FAQ homepage to get more information about polyhedral computation.

Standard case

Input: equality matrix Ae×d and inequality matrix Bi×d
Output: extreme ray matrix Rd×n

Polyhedral cone P:

P = { A x = 0 , B x0 }
P = { x = R c for some c0 }

Inhomogeneous case (vertex enumeration for polyhedron or polytope)

Note: A polytope is a bounded convex polyhedron. We use the term polyhedron in the following.

P' = { A' x = a , B' xb }

Can be seen as intersection of a d+1 dimensional polyhedral cone P and a hyperplane. To transform into the standard case, we set:

A = [ a , -A' ]
B = [ b , -B' ]

The resulting extreme rays rj(d+1)×1 of P (columns in output matrix R) are interpreted as follows:

rj(1) = 0r'j = [ rj(2) , rj(3) , ... , rj(d+1) ]T
is an extreme ray of the polyhedron P' (an unbounded direction)rj(1) > 0v'j = [ rj(2) , rj(3) , ... , rj(d+1) ]T / rj(1)
is a vertex of the polyhedron P'

Facet enumeration (convex hull)

Input: extreme ray matrix R'
Output: inequality matrix B'

Use standard extreme ray enumeration with input inequality matrix B and output extreme ray matrix R as follows:

B = R'T
B' = RT

API / Javadoc & Source files


  • own development for numeric & matrix computations, a simple Java database, logging etc.
  • dom4j easy to use library for XML, XPath and XSLT
  • hdf-java Java wrapper to access the HDF native interface, used to write HDF5 files.
  • JMatIO Matlab's MAT-file I/O API in pure Java, supports Matlab 5 MAT-flie format reading and writing
Page URL:
Wed Mar 29 03:40:47 CEST 2017
© 2017 Eidgenössische Technische Hochschule Zürich