coop is an application of
rmd
(rigorous MAXDET) which is a mathematically rigorous wrapper for the
package
MAXDET
of Wu, Vandenberghe and Boyd.
coop can be used to approximate
optimal lattice sphere coverings. Furthermore,
coop gives
lower and upper bounds of the covering density for the optimal lattice
covering. This part of the computation uses rational arithmetic only
and it is mathematically rigorous.
For the underlying
theory, notation and terminology see the paper "Determinant
maximization with linear matrix inequality constraints" of
Vandenberghe, Boyd and Wu, and our paper "Computational approaches to
lattice packing and covering problems" (
math.MG/0403272).
USAGE:
coop [options] < file
Options:
h show this help
b read and exclude boundary facets
c certify local optimality
d x set duality gap to x
i read interior point
m N set maximum iterations to N
q quick and dirty (nonrigorous)
v be verbose
n be nonverbose
INPUT:
input files (preferably with extension
.coop)
are plain text files containing the following information:
 dimension: d
 number of simplices: n
 simplices: n matrices with d rows and d columns, where in every
row the coordinates of one vertex is represented, we assume that every
simplex has the origin as a vertex
 number of basis vectors: m
 basis vectors: G_1, ..., G_m as lower triangular matrices with d
rows and d columns
 number of inequalities: k
 with b, a vector in {0,1}^k: 1 if the corresponding
inequality defines a facet of the
feasible region that contains nonpositive forms only,
0 otherwise
 inequalities: matrix with k rows and m columns (a_{ij})
 with i, interior point: (x_1, ..., x_m) a point which satisfies
Q(x_1,...,x_m) = x_1G_1 + ... + x_mG_m is positive definite, a_{i1}x_1
+ ... + a_{im} x_m >= 0, i = 1,...,k, and all circumradii of
the simplices are less or equal 1 with respect to Q(x_1,...,x_m)
 without m, maximum number of iterations: how many iterations should MAXDET
perform
 without d, absolute gap (convergence criterion): stop when the gap between primal and dual solution is less then absolute gap
EXAMPLES:

Input:
Create a file input.coop containing (in that order) dimension, data for simplex, basis, inequalities, maximum number of iterations and duality gap:
2
1
1 0
1 1
3
1
0 0
0
1 0
0
0 1
3
0 2 0
0 2 2
2 2 0
100
1e5
Call:
coop < input.coop
Output:
*** co ***
*** op ***
* computed interior point
1 0.5 1
 SOLVING MAXDET PROBLEM
 starting MAXDET (workspace = 535)
iters primal dual
2 1.642480 7.642480
4 1.909503 1.909738
6 1.909543 1.909543
9 1.909543 1.909543
 MAXDET stopped because duality_gap reached.
 primal value = 1.909542505
 dual value = 1.909542505
 minimizer = 3 1.5 3
 minimizer_approx = [100000000000000000000 299999999999802691164 149999999999901367787 299999999999801536532]
 CHECKING PRIMAL SOLUTION
 G(x) is positive definite.
 F(x) is positive semidefinite.
 upper_bound ~ 1.909542505
 CHECKING DUAL SOLUTION
 Tr G_i W + Tr F_i Z = c_i.
 W is positive definite.
 Z is positive semidefinite.
 lower_bound ~ 1.909542505
 duality_gap ~ 7.929101818e12
***********
* SUMMARY *
***********
* minimizer_approx = [100000000000000000000 299999999999802691164 149999999999901367787 299999999999801536532]
* theta_lower_bound = 1/sqrt(exp(198230321/25000000000000000000  log(740740740741719125903704026765674793287/5000000000000000000000000000000000000000)))
~ 0.3849001795
* theta_upper_bound = 1/sqrt(exp(0  log(10000000000000000000000000000000000000000/67499999999910857972700029430282418325879)))
~ 0.3849001795
* duality_gap ~ 7.929101818e12
* Thanks for your patience...

Input:
Take same input as in the previous example, but possibly without
number of maximum iterations and duality gap.
Call:
coop d 0.0001 m 50 c < input.coop
Output:
*** co ***
*** op ***
* computed interior point
1 0.5 1
 SOLVING MAXDET PROBLEM
 starting MAXDET (workspace = 535)
iters primal dual
2 1.642480 7.642480
4 1.909503 1.909738
6 1.909542 1.909544
 MAXDET stopped because duality_gap reached.
 primal value = 1.909542278
 dual value = 1.909543638
 minimizer = 2.99999966 1.49999983 2.99999966
 minimizer_approx = [50000000000000000000 149999983003100068046 74999991501550047493 149999983003099490730]
 CHECKING PRIMAL SOLUTION
 G(x) is positive definite.
 F(x) is positive semidefinite.
 upper_bound ~ 1.909542278
 CHECKING DUAL SOLUTION
 Tr G_i W + Tr F_i Z = c_i.
 W is positive definite.
 Z is positive semidefinite.
 lower_bound ~ 1.909543638
 duality_gap ~ 1.359752956e06
* TRYING TO OBTAIN ADDITIONAL CERTIFICATES
* NO CERTIFICATE for "opt lies on boundary"
* CERTIFIED "opt does not lie on facet 1"
* CERTIFIED "opt does not lie on facet 2"
* CERTIFIED "opt does not lie on facet 3"
***********
* SUMMARY *
***********
* CERTIFICATE for optimum in int(cone)
* minimizer_approx = [50000000000000000000 149999983003100068046 74999991501550047493 149999983003099490730]
* theta_lower_bound = 1/sqrt(exp(33993823892359/25000000000000000000  log(185185227152847362204403558894956470769/1250000000000000000000000000000000000000)))
~ 0.3848999614
* theta_upper_bound = 1/sqrt(exp(0  log(2500000000000000000000000000000000000000/16874996175697643363415514173940390628531)))
~ 0.3849002231
* duality_gap ~ 1.359752956e06
* Thanks for your patience...

Input:
Same as in the previous examples.
Call:
coop d 0.0001 m 50 q < file.coop
Output:
*** co ***
*** op ***
* computed interior point
1 0.5 1
* theta_lower_bound ~ 0.3848999614
* theta_upper_bound ~ 0.3849002231
INTERPRETATION:

An interior point is computed and then an approximated minimizer is obtained,
together with a certified duality gap.

In addition to the previous example coop tries to compute certificates for the approximated
minimizer, that prove that it lies in the interior
(implying that it gives a local minimum for the covering problem)
or on the boundary of the cone given by the inequalities.

A lower and upper bound is attained in
"quickanddirtymode".
INSTALLATION:
To install
coop
(as well as
pacoop and
rmd)
you have to install
NTL
(A Library for doing Number Theory) of Victor Shoup before.
Then download the
complete rmd package
and run
make. You may have to
edit the variable
CXXFlags in the
Makefile so that it finds NTL.
If you have trouble to install our software,
please feel free to contact us.