The following options are available for cdd. These options are
set if they appear in input file after the ``end'' command.
Independent options can be set simultaneously, but each option
must be written separately in one line, and two options
should not be written in one line. When two or more non-independent
options are specified, the last one overrides the others.
Also note that options are case-sensitive.
- hull
- option
This old option exists only for the sake of
backward compatibility. This is to enforce
the computation to be convex hull computation,
interpreting the current data as a V-representation.
Use V-representation instead.
- verify_input
- option
When this option is chosen, the program will
output the input problem as cdd+ interpreted.
The default output file is ``*.solved''.
This option helps user to verify what problem
is actually solved. The default for this option is off.
See the sample files verifyinput1.ine and verifyinput2.ine
- dynout_off
- option
When this option is chosen, the program will
not output vertices and rays to the CRT in real time.
The default is dynout_on.
- stdout_off
- option
When this option is chosen, the program will not
output any progress report of computation (iteration number. etc).
The default is stdout_on.
- logfile_on
- option
When this option is chosen, the program will output
to a specified file (*.ddl) some information on the computation history.
This can be useful when the user does not know which hyperplane order
(mincutoff, maxcutoff, mixcutoff, lexmin, lexmax, minindex, random)
is efficient for computation.
- incidence, input_incidence, #incidence
- options
When the incidence option is selected, the incidence relation for
each output with respect to input will be generated. The default filename
is *.icd if output is inequalities (i.e. *.ine), and *.ecd
1if output is extreme points and
rays (i.e. *.ext).
When the input_incidence option is selected, the incidence relation for
each input with respect to output will be generated. The default filename
is *.icd if input is inequalities (i.e. *.ine), and *.ecd
if input is extreme points and
rays (i.e. *.ext). This option was added to cdd+ ver. 0.74 and
not available in cdd.
Here, an extreme point is said to be
incident with an inequality if the inequality is satisfied by equality.
An extreme ray
is said to be incident with
an inequality
if
.
For example,
since the incidence option was set for the example input file ucube.ine in
the previous section, the program outputs the following ucube.ecd file:
*Incidences of output(=vertices/rays) and input (=hyperplanes)
* for each output, #incidence and the set of hyperplanes containing it
* or its complement with its cardinality with minus sign
*cdd input file : ucube.ine (6 x 4)
*cdd output file: ucube.ext
begin
5 6 7
3 : 1 4 5
3 : 3 4 5
3 : 2 3 5
-3 : 3 4 7
-1 : 5
end
After ``begin'', there are three numbers
.
The first number
is a number of output (vertices and rays).
The next number
is
, the number of inequalities in the input file.
The last number
is usually
, and
if the input linear inequality
system is homogeneous (i.e., has zero RHS) or the hull option is chosen.
The number
corresponds to the infinity constraint which is added
for vertex/ray enumeration when the input system is not homogeneous.
The incidence data starts right after these three numbers.
At each line, the cardinality of incident inequalities and
the list of their indices are given. There is an exception that, when
there are more incident inequalities than non-incident ones, then the program
outputs the list of non-incident inequalities with its
size with negative sign. This is to save space of output.
For example, the first output line
corresponds to the
first vertex of ucube.ext file in previous section, that is,
the vertex
. The first number
is simply the number
of incident inequalities and the rest is the indices of
those inequalities, and so the 1st, 4th and 5th inequalities are
satisfied by equality at this vertex. The last output
corresponds to the ray
. Since all inequalities
except the last (5th) inequality are incident with this ray,
the output is the (shorter) complementary list with its cardinality (=1) with negative
sign. Note that the full list would be
, where
is the infinity plane. One can ignore the infinity
plane for some purposes, but for analyzing the combinatorial
structure of polyhedra, it is
very important information.
Also, since the input_incidence option was set for the example input file ucube.ine in
the previous section, the program outputs the following ucube.icd file:
*cdd input file : ucube.ine (6 x 4)
*cdd output file: ucube.ext
*Incidence of input (=inequalities/facets) w.r.t. output (=vertices/rays).
*row 7 is redundant;dominated by: 1 2 3 4 6
*row 6 is redundant;dominated by: 1 2
begin
6 5 5
-2 : 2 3
-2 : 1 2
-2 : 1 4
-2 : 3 4
-1 : 5
2 : 4 5
1 : 5
end
After ``begin'', there are three numbers
.
The first number
is a number of input (inequalities).
The next number
is
, the number of vertices and rays in the output file.
The last number
is always
for all *.icd files. The remaining
lines can be interpreted similarly with ucube.ecd file. The input_incidence
option is not available in cdd.
The #incidence option can be used when you do not wish
to output the incidence file but to output only the cardinality of incidence
for each output, at the end of each output line.
The incidence files (adjacency file, input_adjacency as well)
can be created independently
after *.ext file is created, see ``postanalysis'' option.
- nondegenerate
- option
When this option is set, the program assumes that the input system
is not degenerate, i.e., there is no point in the space
satisfying
more than
inequalities of input with equality.
It will run faster with this option, but of course,
if this option is set for degenerate inputs, it is
quite possible that the output is incorrect.
The default is this option being off.
- adjacency
- option
This option can be used when you want to output the adjacency of output.
When the output is the list of vertices and rays, the program will
output the adjacency list. For the example input ``ucube.ine'',
the following extra file ``ucube.ead'' 2 will be created:
*Adjacency List of output (=vertices/rays)
*cdd input file : ucube.ine (6 x 4)
*cdd output file: ucube.ext
begin
5
1 3 : 2 4 5
2 3 : 1 3 5
3 3 : 2 4 5
4 3 : 1 3 5
5 4 : 1 2 3 4
end
The first number
is simply the number of outputs of cdd, the
number of vertices and rays in this case.
The second line
says
that the first output of
ucube.ext file has degree (valency)
, and its three neighbors are
2nd, 4th and 5th output.
When the computation is to obtain the hull (inequality system),
the adjacency is of course that of inequalities (i.e. facets).
The adjacency file (incidence file, input_adjacency file)
can be created independently
after *.ext file is created, see ``postanalysis'' option.
- input_adjacency
- option
This is for cdd+ and not available in cdd.
This option is for outputing the adjacency of input inequalities.
Here, two inequalities are defined to be adjacent if
they are nonredundant and there is no third input inequality
which is satisfied with equality at all points of the polyhedron
that satisfy the two inequalities with equality.
In more intuitive language, two inequalities are adjacent
if each determine a facet of the polyhedron and the intersection
of the two facets is not contained in any other facet.
The default file name for this output is *.iad. This file
lists the redundancy information of input also. For the example
``ucube.ine'' above, the following ``ucube.iad'' will
be generated:
*Adjacency List of input (=inequalities/facets)
*cdd input file : ucube.ine (6 x 4)
*cdd output file: ucube.ext
*row 7 is redundant;dominated by: 1 2 3 4 6
*row 6 is redundant;dominated by: 1 2
begin
7
1 3 : 2 4 5
2 3 : 1 3 5
3 3 : 2 4 5
4 3 : 1 3 5
5 4 : 1 2 3 4
6 0 :
7 0 :
end
Observe that the 6th inequality and the
artificially added 7th inequality (infinity)
are found redundant. The 7th inequality is redundant
because the first four facets intersects at
a single infinity point (corresponding to a unique extreme ray)
and hence the polyhedron has no infinity facet,
although the polyhedron is not bounded.
The input_adjacency file can be created independently
after *.ext file is created, see ``postanalysis'' option.
While cdd+ uses both *.ine and *.ext files to compute the adjacency
of input, it can be computed very efficiently by linear programming technique,
using only the input data. This will be explained in
the Polyhedral computation FAQ [Fuk04].
- postanalysis
- option
It is often more desirable to compute the adjacency,
input_adjacency, incidence and input_incidence relations
independently from the main (and often heavy) computation of enumerating all vertices
and extreme rays. The ``postanalysis'' option can be used together
with ``adjacency'' and/or ``incidence'' options for this purpose
to create *.adj and/or *.icd files from both *.ine and *.ext files.
If *.ine file contains this option, cdd+ will open the
corresponding *.ext file and output requested *.adj, *.iad and/or *.icd files.
An error occurs when *.ext file does not exist in the current
directory.
- lexmin, lexmax, minindex,mincutoff, maxcutoff, mixcutoff, random
- options
The double description is an incremental algorithm which
computes the vertices/rays of a polyhedron given by some
of
original inequalities from the precomputed vertices/rays of a
polyhedron given by
inequalities. It is observed that
the efficiency of the algorithm depends strongly on how
one selects the ordering of inequalities, although a little
can be said theoretically.
These options are to select the ordering of inequalities to be
added at each iteration, and it is recommended to do small
experiment to select good ordering for a specific type of problems.
Unfortunately, a good ordering depends on the problem and there does not seem
to be THE BEST ordering for every computation. From our experiences,
lexmin, lexmax, mincutoff, maxcuoff work quite well in general.
The default is lexmin ordering which simply order inequalities
with respect to lexico-graphic ordering of rows of
. The lexmax
is reverse of lexmin. The mincutoff (maxcutoff) option selects an inequality which
cuts off the minimum (maximum) number of vertices/rays of the
st polyhedron.
The mixcutoff option is the mixture of mincutoff and maxcutoff which selects
an inequality which cuts off the
st polytope as unbalanced as possible.
The maxcutoff option might be efficient if the input contains
many redundant inequalities (many interior points for hull computation).
The minindex option selects the hyperplanes from the top of
the input.
The random option selects the inequalities in a random order. This option
must be followed by a random seed which is positive integer (less than
65536). For example, random 123 specifies the random option with
the random seed 123.
- initbasis_at_bottom
- option
When this option is set, the program tries to select
the initial set of rows for the double description
method from the bottom of the input. This means that
if the last (d+1) rows are independent,
they will be chosen to initiate the algorithm.
This option is not default. The default
follows the same ordering as the ordering
of inequalities chosen. This means that if lexmin
is the ordering of inequalities, then the initial
independent rows
will be chosen sequentially with lexico-min ordering.
There are exceptions when this rule
is not applicable, i.e. when one of mincutoff or maxcutoff
options is chosen. In such cases, lexmin
ordering will be chosen.
- maximize, minimize
- options
When maximize option is set with an objective vector
, the program
simply solves the linear program:
over the input polyhedron
. The grammar is simply
| various comments |
| H-representation |
| begin |
 |
 |
numbertype |
 |
 |
|
| end |
| maximize |
 |
| |
|
|
The minimize option works exactly same way for minimization of
a linear objective function.
See the sample input file ``lptest.ine''. The program cdd
will output both primal and dual optimal solutions if the LP
is solvable. If the LP is infeasible (dual infeasible), then
it will output an evidence.
For the moment, one can use either the dual simplex
method (option ``dual-simplex'', default)
or the criss-cross method by Terlaky-Wang.
The latter method can be specified
by option ``criss-cross'' and is very sensible to the ordering
of inequalities. The ordering options such as maxindex, lexmin and
random will affect the behavior of this solver. Try to use
a different ordering, if the computation takes too much time.
Also, in order to see the intermediate LP sign tableau
one can use ``show_tableau'' option. Also use ``manual_pivot''
option to select pivots manually. Of course, these options are
intended for very small problems.
The minimize and maximize options should be used only in H-representation
(*.ine) files, and the output filename is ``*.lps''.
- find_interior
- option
This is for cdd+ and not available in cdd.
When this option is set, the program solves the linear program:
subject to
, where
is the
column vector of all
's. If the optimum value is zero,
the polyhedron has no interior point. If the optimum value is
negative then the polyhedron is empty. If the LP is dual inconsistent,
then the polyhedron admits unbounded inscribed balls. To find any
interior point in this last case, one must add some inequality(ies)
to bound the polyhedron.
This option should be used only in H-representation
(*.ine) files, and the output filename is ``*.lps''.
- facet_listing, vertex_listing
- options
These are for cdd+ and not available in cdd.
When the option ``facet_listing'' is set, the program checks for each i-th row of the input
whether the associated inequality
determines a facet
of the polyhedron. This option should be used only in H-representation
(*.ine) files, and the output filename is ``*.fis''.
When the option ``vertex_listing'' is set, the program
checks for each i-th row of the input
whether the associated point
determines a vertex
of the polyhedron. This option should be used only in V-representation
(*.ext) files, and the output filename is ``*.vis''.
After *.vis or *.fis file (say test.vis) is obtained,
one can get the minimal nonredundant
system by using the included gawk script get_essential:
% get_essential < test.vis >test\_ess.ine
You must have a gnu gawk command accessible at
the current unix directory. One must edit the new file
test_ess.ine slightly according to the instruction
written in the file.
- facet_listing_external, vertex_listing_external
- options
These options can be used to apply facet_listing and vertex_listing
with a (possibly large) external file. When the option facet_listing_external
is set with *.ine file, cdd+ will open an external file *.ine.external (in H-format)
and verify for each inequality of the external file whether it changes the
original polyhedron (represented by *.ine) if it is added. The option
vertex_listing_external can be set in *.ext file and works similarly.
Since cdd+ reads each line of the external file one by one, the file
can be very large, say of few hundred thousands lines.
- tope_listing
- option
This is for cdd+ and not available in cdd.
When this option is set, the program generates all full-dimensional
regions (which are sometimes called topes) of the arrangement
of hyperplanes
, where
. Each tope will be
represented by its location vector, i.e.
a sign vector in
whose
-component
indicates the (positive or negative) side of the hyperplane
the tope is located. This procedure assumes that the input
polyhedron is full-dimensional and thus the vector of all
's
determines a tope. This option should be used only in H-representation
(*.ine) files, and the output filename is ``*.tis''.
- partial_enumeration, equality, linearity, strict_inequality
- options
With partial_enumeration option
(or equivalently equality or linearity options),
one can enumerate only those
vertices and rays that are lying on the set of hyperplanes
associated with specified inequality numbers. If you want
to compute all vertices/rays lying on hyperplanes
associated with
inequalities
(
), then
the option should be specified as
| various comments |
| H-representation |
| begin |
 |
 |
numbertype |
 |
 |
|
| end |
| partial_enumeration |
 |
| |
|
|
The strict_inequality option follows the same
grammar as partial_enumeration or equality.
With this, cdd outputs only those vertices and rays not satisfying
any of the specified inequalities with equality. See the sample files,
partialtest1.ine and partialtest2.ine.
These options make no effect on LP maximization or minimization.
- preprojection
- option
This option is for a preprocessing
of orthogonal projection of the polyhedron to the subspace of
spanned by a subset of variables.
That is, if the inequality inequality system is
of two-block form
,
and the variable indices for
, say
,
are listed in the input file as
| H-representation |
| begin |
 |
 |
numbertype |
 |
 |
|
| end |
| preprojection |
 |
| |
|
|
Then, cdd+ will output the inequality system,
, together with the list
of extreme
rays of the homogeneous cone
.
Consequently, the inequality system
represents the projection of the original polyhedron onto
-space with possible redundancy. The default file names
for the inequality system output and the extremal ray output are
*sub.ine and *.ext, respectively if the input file is named *.ine.
There is a supplementary C program, called domcheck,
written by F. Margot, EPFL, which generates quickly a minimal
(i.e. nonredundant) system from these two outputs.
This program can be obtained from the standard ftp site for cdd.
- zero_tolerance
- option
This option is for cdd+ and not available in cdd.
This affects only the floating-point computation with cddf+.
This is to change the zero tolerance for floating point computation
to a user-specified value.
The default value is set in cddtype.h file as
. This should not
be changed if you are not familiar with pitfalls of
floating-point computation. A tolerance value should follow the option
with blank(s) or a line break. If a tolerance is too small (e.g.
), or if it is too big (e.g.
), the computation
will most likely fail.
- round_output_off, output_digits
- options
These options are for cdd+ and not available in cdd.
This affects only the floating-point computation with cddf+.
This is to modify the default output format of numbers. The default is
to output a number with 8 digits in scientific notation, except when
the nearest integer is within
, it outputs the integer.
The first option is to cancel the latter rounding. This is recommended
when zero_tolerance option above is used to change the tolerance.
The second option followed by a positive integer will set the number of
digits for each number to the integer.