File: solve_IP.hlp

package info (click to toggle)
singular 1%3A4.0.3-p3%2Bds-5
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 33,040 kB
  • ctags: 19,347
  • sloc: cpp: 271,589; ansic: 13,500; lisp: 4,242; yacc: 1,656; lex: 1,377; makefile: 1,264; perl: 632; sh: 467; python: 233; xml: 182
file content (261 lines) | stat: -rw-r--r-- 6,982 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
USAGE: solve_IP [options] toric_file problem_file



DESCRIPTION:

solve_IP is a program for solving integer programming problems with
the Buchberger algorithm:

Let A an integral (mxn)-matrix, b a vector with m integral
coefficients and c a vector with n nonnegative real coefficients. The
solution of the IP-problem

    minimize{ cx | Ax=b, all components of x are nonnegative integers }

proceeds in two steps:

1. We compute the toric ideal of A and its Groebner basis with respect
   to a term ordering refining the cost function c.

2. We reduce the right hand vector b or an initial solution of the
   problem modulo this ideal.

For these purposes, we can use seven different algorithms:
The algorithm of Conti/Traverso (ct) can compute an optimal solution
of the IP-problem directly from the right hand vector b. The same is
true for its "positive" variant (pct) which can only be applied if A
and b have nonnegative entries, but should be faster in that case.
All other algorithms need initial solutions of the IP-problem. Except
from the elimination version of the Conti-Traverso algorithm (ect),
they should be more efficient than the algorithm mentionned before.
These are the algorithms of Pottier (pt), Bigatti/La Scala/Robbiano
(blr), Hosten/Sturmfels (hs) and Di Biase/Urbanke (du). The last two
seem to be the fastest in the actual implementation.



FILE FORMAT:

The first input file may be a MATRIX or a GROEBNER file; these two
types are called "toric files". The second input file has to be a
PROBLEM file.

If the PROBLEM file contains a positive number of problems ,i.e. right
hand vectors or initial solutions, solve_IP appends its solutions to a
SOLUTION file named like the first input file with extensions replaced
by

	.sol.<alg>

where sol stands for solution and <alg> is the abbreviation of the
used algorithm as above. When called with a MATRIX file, solve_IP
produces a GROEBNER file named like the MATRIX file with extensions
replaced by

	.GB.<alg>

where GB stands for GROEBNER.

A MATRIX file should look as follows:


  MATRIX

  columns:
  <number of columns>

  cost vector:
  <coefficients of the cost vector>

  rows:
  <number of rows>

  matrix:
  <matrix coefficients>

  positive row space vector:
  <coefficients of row space vector>


The last two lines are only needed when solve_IP is called with the
algorithms of Hosten/Sturmfels or Bigatti/La Scala/Robbiano, i.e. the
options

	-alg hs
or
	-alg blr

The other algorithms ignore these lines.

Example:


  MATRIX

  columns:
  3

  cost vector:
  1 1 1

  rows:
  2

  matrix:
  1 2 3
  4 5 6

  positive row space vector:
  1 2 3


A GROEBNER file looks as follows:


  GROEBNER

  computed with algorithm:
  <algorithm name abbreviation>       (* abbreviations as above *)
  from file(s):                       (* the following four lines are
  <name of respective MATRIX file>       optional *)
  computation time:
  <computation time in seconds>

  term ordering:
  elimination block
  <number of elimination variables>
  <LEX / DEG_LEX                      (* only if number of elimination
  / DEG_REV_LEX>                         variables >0 *)
  weighted block
  <number of weighted variables>
  <W_LEX / W_REV_LEX                  (* number of weighted variables
  / W_DEG_LEX / W_DEG_REV_LEX>           should always be >0 *)
  <weight_vector>

  size:
  <number of elements>

  Groebner basis:
  <basis elements>

  <settings for the Buchberger
   algorithm and compiler settings>  (* optional *)


The Groebner basis consists always of binomials of the form x^a - x^b
where x^a and x^b are relatively prime. Such a binomial can be
represented by the vector a-b. The basis elements in the GROEBNER file
are given by the coefficients of this vector representation.
The settings for Buchbergers algorithm and the compiler flags are
produced when the GROEBNER file is generated by a call of solve_IP
with the verbose output option

	-v, --verbose

Example (not belonging to the example above):


  GROEBNER

  computed with algorithm:
  du

  term ordering:
  elimination block:
  0
  weighted block:
  3
  W_LEX
  1 2 3

  size:
  1

  Groebner basis:
  2 3 -2			    (*  x^2 * y^3 - z^2  *)


A PROBLEM file should look as follows:


  PROBLEM

  vector size:
  <vector dimension>

  number of instances:
  <number of vectors>

  right-hand or initial solution vectors:
  <vector coefficients>


A SOLUTION file looks as follows:

  SOLUTION

  computed with algorithm:
  <algorithm name abbreviation>
  from file:                                  (* the GROEBNER file *)
  <file name>

  <right hand/initial solution> vector:
  <vector as in the problem file>
  solvable:                                   (* only if right-hand
  <YES/NO>                                       vector is given *)
  optimal solution:                           (* only in the case of
  <optimal solution vector>		         existence *)
  computation time:                           (* only for reduction *)
  <reduction time in seconds>

  ...                                         (* further vectors,
                                                 same format *)



OPTIONS:

 -alg       <alg>,
--algorithm <alg>         algorithm to use for solving the given IP
                          instances; <alg> may be
             ct           for Conti/Traverso,
             pct          for the positive Conti/Traverso,
             ect          for Conti/Traverso with elimination,
             pt           for Pottier,
             hs           for Hosten/Sturmfels,
             du           for Di Biase/Urbanke,
             blr          for Bigatti-LaScal-Robbiano.

 -p         <number>      percentage of new generators to cause an
                          autoreduction during Buchbergers algorithm;
                          <number> may be an arbitrary float, a
                          negative value allows no intermediate
                          autoreductions
			  default is
                          -p 12.0

 -S [RP] [M] [B] [M] [2]  criteria to use in Buchbergers algorithm
                          for discarding unneccessary S-pairs
             RP           relatively prime leading terms
             M            Gebauer-Moeller criterion M
             F            Gebauer-Moeller criterion F
             B            Gebauer-Moeller criterion B
             2            Buchbergers second criterion
			  default is
                          -S RP M B

 -v,
--verbose                 verbose output mode; writes the settings for
                          Buchbergers algorithm and the compiler
                          flags into the output GROEBNER file

-V <number>,
--version <number>        version of Buchbergers algorithm to use;
                          <number> may be 1, 1a, 2 or 3
			  default is
                          -V 1


When called with a GROEBNER file, these options do not affect
computation and are ignored by solve_IP.