rev |
line source |
alpar@9
|
1 GLPK 4.47 (release date: Sep 09, 2011)
|
alpar@9
|
2
|
alpar@9
|
3 The new API routine glp_intfeas1 was added to the package.
|
alpar@9
|
4 This routine is a tentative implementation of the integer (0-1)
|
alpar@9
|
5 feasibility solver based on the CNF-SAT solver (which currently
|
alpar@9
|
6 is MiniSat). It may be used in the same way as glp_intopt to
|
alpar@9
|
7 find either any integer feasible solution or a solution, for
|
alpar@9
|
8 which the objective function is not worse than the specified
|
alpar@9
|
9 value. Detailed description of this routine can be found in the
|
alpar@9
|
10 document "CNF Satisfiability Problem", which is included in the
|
alpar@9
|
11 distribution (see doc/cnfsat.pdf).
|
alpar@9
|
12
|
alpar@9
|
13 The following two options were added to glpsol:
|
alpar@9
|
14
|
alpar@9
|
15 --minisat translate 0-1 feasibility problem to CNF-SAT
|
alpar@9
|
16 problem and solve it with glp_intfeas1/MiniSat
|
alpar@9
|
17 (if the problem instance is already in CNF-SAT
|
alpar@9
|
18 format, no translation is performed)
|
alpar@9
|
19
|
alpar@9
|
20 --objbnd bound add inequality obj <= bound (minimization) or
|
alpar@9
|
21 obj >= bound (maximization) to 0-1 feasibility
|
alpar@9
|
22 problem (this option assumes --minisat)
|
alpar@9
|
23
|
alpar@9
|
24 The paint-by-numbers puzzle model (pbn.mod) included in the
|
alpar@9
|
25 distribution is a nice example of the 0-1 feasibility problem,
|
alpar@9
|
26 which can be efficiently solved with glp_intfeas1/MiniSat. This
|
alpar@9
|
27 model along with a brief instruction (pbn.pdf) and benchmark
|
alpar@9
|
28 examples from <webpbn.com> encoded in GNU MathProg (*.dat) can
|
alpar@9
|
29 be found in subdirectory examples/pbn/.
|
alpar@9
|
30
|
alpar@9
|
31 The glpsol lp/mip solver was modified to bypass postprocessing
|
alpar@9
|
32 of MathProg models if the solution reported is neither optimal
|
alpar@9
|
33 nor feasible.
|
alpar@9
|
34
|
alpar@9
|
35 A minor bug in examples/Makefile.am was fixed to correctly
|
alpar@9
|
36 build glpk in a separate directory. Thanks to Marco Atzeri
|
alpar@9
|
37 <marco.atzeri@gmail.com> for bug report and patch.
|
alpar@9
|
38
|
alpar@9
|
39 GLPK 4.46 (release date: Aug 09, 2011)
|
alpar@9
|
40
|
alpar@9
|
41 The following new API routines were added:
|
alpar@9
|
42
|
alpar@9
|
43 glp_read_cnfsat read CNF-SAT problem data in DIMACS format
|
alpar@9
|
44 glp_check_cnfsat check for CNF-SAT problem instance
|
alpar@9
|
45 glp_write_cnfsat write CNF-SAT problem data in DIMACS format
|
alpar@9
|
46 glp_minisat1 solve CNF-SAT problem instance with MiniSat
|
alpar@9
|
47
|
alpar@9
|
48 The routine glp_minisat1 is a driver to MiniSat, a CNF-SAT
|
alpar@9
|
49 solver developed by Niklas Een and Niklas Sorensson, Chalmers
|
alpar@9
|
50 University of Technology, Sweden. This routine is similar to
|
alpar@9
|
51 the routine glp_intopt, however, it is intended to solve a 0-1
|
alpar@9
|
52 programming problem instance, which is the MIP translation of
|
alpar@9
|
53 a CNF-SAT problem instance.
|
alpar@9
|
54
|
alpar@9
|
55 Detailed description of these new API routines can be found in
|
alpar@9
|
56 the document "CNF Satisfiability Problem", which is included in
|
alpar@9
|
57 the distribution (see files doc/cnfsat.tex and doc/cnfsat.pdf).
|
alpar@9
|
58
|
alpar@9
|
59 The following new glpsol command-line options were added:
|
alpar@9
|
60
|
alpar@9
|
61 --cnf filename read CNF-SAT problem instance in DIMACS
|
alpar@9
|
62 format from filename and translate it to MIP
|
alpar@9
|
63 --wcnf filename write CNF-SAT problem instance in DIMACS
|
alpar@9
|
64 format to filename
|
alpar@9
|
65 --minisat solve CNF-SAT problem instance with MiniSat
|
alpar@9
|
66 solver
|
alpar@9
|
67
|
alpar@9
|
68 The zlib compression library (version 1.2.5) was ANSIfied,
|
alpar@9
|
69 modified according to GLPK requirements and included in the
|
alpar@9
|
70 distribution as an external software module. Thus, now this
|
alpar@9
|
71 feature is platform independent.
|
alpar@9
|
72
|
alpar@9
|
73 Some bugs were fixed in the SQL table driver. Thanks to Xypron
|
alpar@9
|
74 <xypron.glpk@gmx.de>.
|
alpar@9
|
75
|
alpar@9
|
76 GLPK 4.45 (release date: Dec 05, 2010)
|
alpar@9
|
77
|
alpar@9
|
78 This is a bug-fix release.
|
alpar@9
|
79
|
alpar@9
|
80 Several bugs/typos were fixed. Thanks to
|
alpar@9
|
81 Xypron <xypron.glpk@gmx.de>,
|
alpar@9
|
82 Robbie Morrison <robbie@actrix.co.nz>, and
|
alpar@9
|
83 Ali Baharev <ali.baharev@gmail.com> for reports.
|
alpar@9
|
84
|
alpar@9
|
85 Some glpk documents was re-formatted and merged into a single
|
alpar@9
|
86 document. Now the glpk documentation consists of the following
|
alpar@9
|
87 three main documents (all included in the distribution):
|
alpar@9
|
88
|
alpar@9
|
89 GLPK: Reference Manual
|
alpar@9
|
90
|
alpar@9
|
91 GLPK: Graph and Network Routines
|
alpar@9
|
92
|
alpar@9
|
93 Modeling Language GNU MathProg: Language Reference
|
alpar@9
|
94
|
alpar@9
|
95 GLPK 4.44 (release date: Jun 03, 2010)
|
alpar@9
|
96
|
alpar@9
|
97 The following suffixes for variables and constraints were
|
alpar@9
|
98 implemented in the MathProg language:
|
alpar@9
|
99
|
alpar@9
|
100 .lb (lower bound),
|
alpar@9
|
101 .ub (upper bound),
|
alpar@9
|
102 .status (status in the solution),
|
alpar@9
|
103 .val (primal value), and
|
alpar@9
|
104 .dual (dual value).
|
alpar@9
|
105
|
alpar@9
|
106 Thanks to Xypron <xypron.glpk@gmx.de> for draft implementation
|
alpar@9
|
107 and testing.
|
alpar@9
|
108
|
alpar@9
|
109 Now the MathProg language allows comment records (marked by
|
alpar@9
|
110 '#' in the very first position) in CSV data files read with the
|
alpar@9
|
111 table statements. Note that the comment records may appear only
|
alpar@9
|
112 in the beginning of a CSV data file.
|
alpar@9
|
113
|
alpar@9
|
114 The API routine glp_cpp to solve the Critical Path Problem was
|
alpar@9
|
115 added and documented.
|
alpar@9
|
116
|
alpar@9
|
117 GLPK 4.43 (release date: Feb 20, 2010)
|
alpar@9
|
118
|
alpar@9
|
119 This is a maintainer release.
|
alpar@9
|
120
|
alpar@9
|
121 `configure.ac' was changed to allow building the package under
|
alpar@9
|
122 Mac OS and Darwin with ODBC support.
|
alpar@9
|
123 Thanks to Xypron <xypron.glpk@gmx.de> for suggestions and Noli
|
alpar@9
|
124 Sicad <nsicad@gmail.com> for testing.
|
alpar@9
|
125
|
alpar@9
|
126 The SQL table driver was improved to process NULL data. Thanks
|
alpar@9
|
127 to Xypron <xypron.glpk@gmx.de>.
|
alpar@9
|
128
|
alpar@9
|
129 Some bugs were fixed in the LP/MIP preprocessor.
|
alpar@9
|
130
|
alpar@9
|
131 GLPK 4.42 (release date: Jan 13, 2010)
|
alpar@9
|
132
|
alpar@9
|
133 The following new API routines were added:
|
alpar@9
|
134
|
alpar@9
|
135 glp_check_dup check for duplicate elements in sparse
|
alpar@9
|
136 matrix
|
alpar@9
|
137 glp_sort_matrix sort elements of the constraint matrix
|
alpar@9
|
138 glp_read_prob read problem data in GLPK format
|
alpar@9
|
139 glp_write_prob write problem data in GLPK format
|
alpar@9
|
140 glp_analyze_bound analyze active bound of non-basic variable
|
alpar@9
|
141 glp_analyze_coef analyze objective coefficient at basic
|
alpar@9
|
142 variable
|
alpar@9
|
143 glp_print_ranges print sensitivity analysis report (this
|
alpar@9
|
144 routine replaces lpx_print_sens_bnds and
|
alpar@9
|
145 makes it deprecated)
|
alpar@9
|
146
|
alpar@9
|
147 For description of these new routines and the GLPK LP/MIP
|
alpar@9
|
148 format see a new edition of the reference manual included in
|
alpar@9
|
149 the distribution. (Chapter "Graph and network API routines" was
|
alpar@9
|
150 carried out from the main reference manual and included in the
|
alpar@9
|
151 distribution as a separate document.)
|
alpar@9
|
152
|
alpar@9
|
153 The following new command-line options were added to the stand-
|
alpar@9
|
154 alone solver glpsol:
|
alpar@9
|
155 --glp filename read problem data in GLPK format
|
alpar@9
|
156 --wglp filename write problem data in GLPK format
|
alpar@9
|
157 --ranges filename print sensitivity analysis report (this
|
alpar@9
|
158 option replaces --bounds)
|
alpar@9
|
159
|
alpar@9
|
160 Now all GLPK routines performing file I/O support special
|
alpar@9
|
161 filenames "/dev/stdin", "/dev/stdout", and "/dev/stderr", which
|
alpar@9
|
162 can be specified in the same way as regular filenames. This
|
alpar@9
|
163 feature is plaform-independent.
|
alpar@9
|
164
|
alpar@9
|
165 GLPK 4.41 (release date: Dec 21, 2009)
|
alpar@9
|
166
|
alpar@9
|
167 The following new API routies were added:
|
alpar@9
|
168
|
alpar@9
|
169 glp_transform_row transform explicitly specified row
|
alpar@9
|
170 glp_transform_col transform explicitly specified column
|
alpar@9
|
171 glp_prim_rtest perform primal ratio test
|
alpar@9
|
172 glp_dual_rtest perform dual ratio test
|
alpar@9
|
173
|
alpar@9
|
174 For description of these new routines see a new edition of the
|
alpar@9
|
175 reference manual included in the distribution.
|
alpar@9
|
176
|
alpar@9
|
177 The following API routines are deprecated: lpx_transform_row,
|
alpar@9
|
178 lpx_transform_col, lpx_prim_ratio_test, lpx_dual_ratio_test.
|
alpar@9
|
179
|
alpar@9
|
180 Some improvements were made in the MIP solver (glp_intopt).
|
alpar@9
|
181
|
alpar@9
|
182 The SQL table driver used to read/write data in MathProg models
|
alpar@9
|
183 was changed to allow multiple arguments separated by semicolon
|
alpar@9
|
184 in SQL statements. Thanks to Xypron <xypron.glpk@gmx.de>.
|
alpar@9
|
185
|
alpar@9
|
186 Two new options were added to the glpsol stand-alone solver:
|
alpar@9
|
187 --seed value (to initialize the pseudo-random number generator
|
alpar@9
|
188 used in MathProg models with specified value), and
|
alpar@9
|
189 --ini filename (to use a basis previously saved with -w option
|
alpar@9
|
190 as an initial basis on solving similar LP's).
|
alpar@9
|
191
|
alpar@9
|
192 Two new MathProg example models were included. Thanks to
|
alpar@9
|
193 Nigel Galloway <nigel_galloway@operamail.com> and Noli Sicad
|
alpar@9
|
194 <nsicad@gmail.com> for contribution.
|
alpar@9
|
195
|
alpar@9
|
196 Scripts to build GLPK with Microsoft Visual Studio 2010 for
|
alpar@9
|
197 both 32-bit and 64-bit Windows were included. Thanks to Xypron
|
alpar@9
|
198 <xypron.glpk@gmx.de> for contribution and testing.
|
alpar@9
|
199
|
alpar@9
|
200 GLPK 4.40 (release date: Nov 03, 2009)
|
alpar@9
|
201
|
alpar@9
|
202 The following new API routines were added:
|
alpar@9
|
203
|
alpar@9
|
204 glp_del_vertices remove vertices from graph
|
alpar@9
|
205 glp_del_arc remove arc from graph
|
alpar@9
|
206 glp_wclique_exact find maximum weight clique with the exact
|
alpar@9
|
207 algorithm developed by Prof. P. Ostergard
|
alpar@9
|
208 glp_read_ccdata read graph in DIMACS clique/coloring
|
alpar@9
|
209 format
|
alpar@9
|
210 glp_write_ccdata write graph in DIMACS clique/coloring
|
alpar@9
|
211 format
|
alpar@9
|
212
|
alpar@9
|
213 For description of these new routines see a new edition of the
|
alpar@9
|
214 reference manual included in the distribution.
|
alpar@9
|
215
|
alpar@9
|
216 The hybrid pseudocost branching heuristic was included in the
|
alpar@9
|
217 MIP solver. It is available on API level (iocp.br_tech should
|
alpar@9
|
218 be set to GLP_BR_PCH) and in the stand-alone solver glpsol
|
alpar@9
|
219 (via the command-line option --pcost). This heuristic may be
|
alpar@9
|
220 useful on solving hard MIP instances.
|
alpar@9
|
221
|
alpar@9
|
222 The branching heuristic by Driebeck and Tomlin (used in the
|
alpar@9
|
223 MIP solver by default) was changed to switch to branching on
|
alpar@9
|
224 most fractional variable if an lower bound of degradation of
|
alpar@9
|
225 the objective is close to zero for all branching candidates.
|
alpar@9
|
226
|
alpar@9
|
227 A bug was fixed in the LP preprocessor (routine npp_empty_col).
|
alpar@9
|
228 Thanks to Stefan Vigerske <stefan@math.hu-berlin.de> for the
|
alpar@9
|
229 bug report.
|
alpar@9
|
230
|
alpar@9
|
231 A bug was fixed and some improvements were made in the FPUMP
|
alpar@9
|
232 heuristic module. Thanks to Xypron <xypron.glpk@gmx.de>.
|
alpar@9
|
233
|
alpar@9
|
234 A bug was fixed in the API routine glp_warm_up (dual
|
alpar@9
|
235 feasibility test was incorrect in maximization case). Thanks to
|
alpar@9
|
236 Uday Venkatadri <Uday.Venkatadri@dal.ca> for the bug report.
|
alpar@9
|
237
|
alpar@9
|
238 GLPK 4.39 (release date: Jul 26, 2009)
|
alpar@9
|
239
|
alpar@9
|
240 The following new API routines were added:
|
alpar@9
|
241
|
alpar@9
|
242 glp_warm_up "warm up" LP basis
|
alpar@9
|
243 glp_set_vertex_name assign (change) vertex name
|
alpar@9
|
244 glp_create_v_index create vertex name index
|
alpar@9
|
245 glp_find_vertex find vertex by its name
|
alpar@9
|
246 glp_delete_v_index delete vertex name index
|
alpar@9
|
247 glp_read_asnprob read assignment problem data in DIMACS
|
alpar@9
|
248 format
|
alpar@9
|
249 glp_write_asnprob write assignment problem data in DIMACS
|
alpar@9
|
250 format
|
alpar@9
|
251 glp_check_asnprob check correctness of assignment problem
|
alpar@9
|
252 data
|
alpar@9
|
253 glp_asnprob_lp convert assignment problem to LP
|
alpar@9
|
254 glp_asnprob_okalg solve assignment problem with the
|
alpar@9
|
255 out-of-kilter algorithm
|
alpar@9
|
256 glp_asnprob_hall find bipartite matching of maxumum
|
alpar@9
|
257 cardinality with Hall's algorithm
|
alpar@9
|
258
|
alpar@9
|
259 Also were added some API routines to read plain data files.
|
alpar@9
|
260
|
alpar@9
|
261 The API routines glp_read_lp and glp_write_lp to read/write
|
alpar@9
|
262 files in CPLEX LP format were re-implemented. Now glp_write_lp
|
alpar@9
|
263 correctly writes double-bounded (ranged) rows by introducing
|
alpar@9
|
264 slack variables rather than by duplicating the rows.
|
alpar@9
|
265
|
alpar@9
|
266 For description of these new routines see a new edition of the
|
alpar@9
|
267 reference manual included in the distribution.
|
alpar@9
|
268
|
alpar@9
|
269 The 'xfree(NULL)' bug was fixed in the AMD routines. Thanks to
|
alpar@9
|
270 Niels Klitgord <niels@bu.edu> for bug report.
|
alpar@9
|
271
|
alpar@9
|
272 The message "Crashing..." was changed to "Constructing initial
|
alpar@9
|
273 basis..." due to suggestion by Thomas Kahle <tom111@gmx.de>.
|
alpar@9
|
274
|
alpar@9
|
275 Some typos were corrected in glpsol output messages. Thanks to
|
alpar@9
|
276 Xypron <xypron.glpk@gmx.de> for patch.
|
alpar@9
|
277
|
alpar@9
|
278 GLPK 4.38 (release date: May 02, 2009)
|
alpar@9
|
279
|
alpar@9
|
280 API routines glp_read_mps and glp_write_mps were improved.
|
alpar@9
|
281
|
alpar@9
|
282 Some improvements were made in the dual simplex routines.
|
alpar@9
|
283
|
alpar@9
|
284 Two external software modules AMD and COLAMD were included in
|
alpar@9
|
285 the distribution (for more details please see src/amd/README
|
alpar@9
|
286 and src/colamd/README). Now they are used in the interior-point
|
alpar@9
|
287 solver to reorder the matrix prior to Cholesky factorization.
|
alpar@9
|
288
|
alpar@9
|
289 API routine glp_ipt_status may return two new statuses due to
|
alpar@9
|
290 changes in the routine glp_interior. For details please see the
|
alpar@9
|
291 reference manual included in the distribution.
|
alpar@9
|
292
|
alpar@9
|
293 A minor bug was fixed in the graph/network routines. Thanks to
|
alpar@9
|
294 Nelson H. F. Beebe <beebe@math.utah.edu> for bug report.
|
alpar@9
|
295
|
alpar@9
|
296 GLPK 4.37 (release date: Mar 29, 2009)
|
alpar@9
|
297
|
alpar@9
|
298 The 0-1 Feasibility Pump heuristic was included in the GLPK
|
alpar@9
|
299 integer optimizer glp_intopt. On API level the heuristic can be
|
alpar@9
|
300 enabled by setting the parameter fp_heur in glp_iocp to GLP_ON.
|
alpar@9
|
301 This feature is also available in the solver glpsol through
|
alpar@9
|
302 command-line option '--fpump'. For more details please see the
|
alpar@9
|
303 reference manual included in the distribution.
|
alpar@9
|
304
|
alpar@9
|
305 The following new API routines were added:
|
alpar@9
|
306
|
alpar@9
|
307 glp_print_sol write basic solution in printable format
|
alpar@9
|
308 glp_print_ipt write interior-point solution in printable
|
alpar@9
|
309 format
|
alpar@9
|
310 glp_print_mip write MIP solution in printable format
|
alpar@9
|
311 glp_read_graph read (di)graph from plain text file
|
alpar@9
|
312 glp_write_graph write (di)graph to plain text file
|
alpar@9
|
313 glp_weak_comp find all weakly connected components
|
alpar@9
|
314 glp_strong_comp find all strongly connected components
|
alpar@9
|
315
|
alpar@9
|
316 The following API routines are deprecated: lpx_print_sol,
|
alpar@9
|
317 lpx_print_ips, lpx_print_mip, lpx_print_prob (the latter is
|
alpar@9
|
318 equivalent to glp_write_lp).
|
alpar@9
|
319
|
alpar@9
|
320 A bug was fixed in the interior-point solver (glp_interior) to
|
alpar@9
|
321 correctly compute dual solution components when the problem is
|
alpar@9
|
322 scaled.
|
alpar@9
|
323
|
alpar@9
|
324 The files configure.ac and Makefile.am were changed:
|
alpar@9
|
325 (a) to allow using autoreconf/autoheader;
|
alpar@9
|
326 (b) to allow building the package in a directory other than its
|
alpar@9
|
327 source directory.
|
alpar@9
|
328 Thanks to Marco Atzeri <marco_atzeri@yahoo.it> for bug report.
|
alpar@9
|
329
|
alpar@9
|
330 An example model in the GNU MathProg language was added.
|
alpar@9
|
331 Thanks to Larry D'Agostino <Larry.D'Agostino@gmacrescap.com> for
|
alpar@9
|
332 contribution.
|
alpar@9
|
333
|
alpar@9
|
334 GLPK 4.36 (release date: Feb 06, 2009)
|
alpar@9
|
335
|
alpar@9
|
336 The following new API routines were added to the package:
|
alpar@9
|
337
|
alpar@9
|
338 glp_mincost_okalg find minimum-cost flow with out-of-kilter
|
alpar@9
|
339 algorithm
|
alpar@9
|
340 glp_maxflow_ffalg find maximal flow with Ford-Fulkerson
|
alpar@9
|
341 algorithm
|
alpar@9
|
342
|
alpar@9
|
343 For detailed description of these new routines and related data
|
alpar@9
|
344 structures see chapter "Graph and Network API Routines" in a new
|
alpar@9
|
345 edition of the reference manual included in the distribution.
|
alpar@9
|
346
|
alpar@9
|
347 The following two new command-line options were added to the
|
alpar@9
|
348 solver glpsol:
|
alpar@9
|
349
|
alpar@9
|
350 --mincost read min-cost flow data in DIMACS format
|
alpar@9
|
351 --maxflow read maximum flow data in DIMACS format
|
alpar@9
|
352
|
alpar@9
|
353 Duplicate symbols in the header glpk.h were removed to allow
|
alpar@9
|
354 using swig.
|
alpar@9
|
355 Thanks to Kelly Westbrooks <kellywestbrooks@yahoo.com> and
|
alpar@9
|
356 Nigel Galloway <nigel_galloway@operamail.com> for suggestion.
|
alpar@9
|
357
|
alpar@9
|
358 A minor defect was fixed in the routine glp_write_lp.
|
alpar@9
|
359 Thanks to Sebastien Briais <sbriais@free.fr> for bug report.
|
alpar@9
|
360
|
alpar@9
|
361 A minor bug was fixed in the SQL module.
|
alpar@9
|
362 Thanks to Xypron <xypron.glpk@gmx.de> for patch.
|
alpar@9
|
363
|
alpar@9
|
364 Some new example models in the GNU MathProg modeling language
|
alpar@9
|
365 were added. Thanks to Sebastian Nowozin <nowozin@gmail.com> and
|
alpar@9
|
366 Nigel Galloway <nigel_galloway@operamail.com> for contribution.
|
alpar@9
|
367
|
alpar@9
|
368 GLPK 4.35 (release date: Jan 09, 2009)
|
alpar@9
|
369
|
alpar@9
|
370 The following new API routines were added to the package:
|
alpar@9
|
371
|
alpar@9
|
372 glp_create_graph create graph
|
alpar@9
|
373 glp_set_graph_name assign (change) graph name
|
alpar@9
|
374 glp_add_vertices add new vertices to graph
|
alpar@9
|
375 glp_add_arc add new arc to graph
|
alpar@9
|
376 glp_erase_graph erase graph content
|
alpar@9
|
377 glp_delete_graph delete graph
|
alpar@9
|
378 glp_read_mincost read minimum cost flow problem data in
|
alpar@9
|
379 DIMACS format
|
alpar@9
|
380 glp_write_mincost write minimum cost flow problem data in
|
alpar@9
|
381 DIMACS format
|
alpar@9
|
382 glp_mincost_lp convert minimum cost flow problem to LP
|
alpar@9
|
383 glp_netgen Klingman's network problem generator
|
alpar@9
|
384 glp_gridgen grid-like network problem generator
|
alpar@9
|
385 glp_read_maxflow read maximum flow problem data in DIMACS
|
alpar@9
|
386 format
|
alpar@9
|
387 glp_write_maxflow write maximum flow problem data in DIMACS
|
alpar@9
|
388 format
|
alpar@9
|
389 glp_maxflow_lp convert maximum flow problem to LP
|
alpar@9
|
390 glp_rmfgen Goldfarb's maximum flow problem generator
|
alpar@9
|
391
|
alpar@9
|
392 For detailed description of these new routines and related data
|
alpar@9
|
393 structures see chapter "Graph and Network API Routines" in a new
|
alpar@9
|
394 edition of the reference manual included in the distribution.
|
alpar@9
|
395
|
alpar@9
|
396 A minor change were made in the internal routine xputc. Thanks
|
alpar@9
|
397 to Luiz Bettoni <bettoni@cpgei.ct.utfpr.edu.br> for suggestion.
|
alpar@9
|
398
|
alpar@9
|
399 A minor bug was fixed in the internal routine mpl_fn_time2str.
|
alpar@9
|
400 Thanks to Stefan Vigerske <stefan@vigerske.de> for bug report.
|
alpar@9
|
401
|
alpar@9
|
402 GLPK 4.34 (release date: Dec 04, 2008)
|
alpar@9
|
403
|
alpar@9
|
404 The GNU MathProg modeling language was supplemented with three
|
alpar@9
|
405 new built-in functions:
|
alpar@9
|
406
|
alpar@9
|
407 gmtime obtaining current calendar time
|
alpar@9
|
408 str2time converting character string to calendar time
|
alpar@9
|
409 time2str converting calendar time to character string
|
alpar@9
|
410
|
alpar@9
|
411 (Thanks to Xypron <xypron.glpk@gmx.de>.)
|
alpar@9
|
412
|
alpar@9
|
413 For detailed description of these functions see Appendix A in
|
alpar@9
|
414 the document "Modeling Language GNU MathProg", a new edition of
|
alpar@9
|
415 which was included in the distribution.
|
alpar@9
|
416
|
alpar@9
|
417 A bug was fixed in the MIP solver. Thanks to Nigel Galloway
|
alpar@9
|
418 <nigel_galloway@operamail.com> for bug report.
|
alpar@9
|
419
|
alpar@9
|
420 A new makefile was added to build the GLPK DLL with Microsoft
|
alpar@9
|
421 Visual Studio Express 2008 for 64-bit Windows. Thanks to Xypron
|
alpar@9
|
422 <xypron.glpk@gmx.de> for contribution and testing.
|
alpar@9
|
423
|
alpar@9
|
424 GLPK 4.33 (release date: Oct 30, 2008)
|
alpar@9
|
425
|
alpar@9
|
426 The following new API routines were added to the package:
|
alpar@9
|
427 glp_copy_prob copy problem object content
|
alpar@9
|
428 glp_exact solve LP in exact arithmetic
|
alpar@9
|
429 (makes lpx_exact deprecated)
|
alpar@9
|
430 glp_get_unbnd_ray determine variable causing unboundedness
|
alpar@9
|
431 (makes lpx_get_ray_info deprecated)
|
alpar@9
|
432 glp_interior solve LP with interior-point method
|
alpar@9
|
433 (makes lpx_interior deprecated)
|
alpar@9
|
434
|
alpar@9
|
435 The following new API routines for processing models written in
|
alpar@9
|
436 the GNU Mathprog language were added to the package:
|
alpar@9
|
437 glp_mpl_alloc_wksp allocate the translator workspace
|
alpar@9
|
438 glp_mpl_read_model read and translate model section
|
alpar@9
|
439 glp_mpl_read_data read and translate data section
|
alpar@9
|
440 glp_mpl_generate generate the model
|
alpar@9
|
441 glp_mpl_build_prob build LP/MIP instance from the model
|
alpar@9
|
442 glp_mpl_postsolve postsolve the model
|
alpar@9
|
443 glp_mpl_free_wksp deallocate the translator workspace
|
alpar@9
|
444 (These routines make lpx_read_model deprecated.)
|
alpar@9
|
445
|
alpar@9
|
446 For description of all these new API routines see the reference
|
alpar@9
|
447 manual included in the distribution.
|
alpar@9
|
448
|
alpar@9
|
449 A crude implementation of CPLEX-like interface to GLPK API was
|
alpar@9
|
450 added to the package. Currently it allows using GLPK as a core
|
alpar@9
|
451 LP solver for Concorde, a well known computer code for solving
|
alpar@9
|
452 the symmetric TSP. For details see examples/cplex/README.
|
alpar@9
|
453
|
alpar@9
|
454 Some bugs were fixed in the SQL table driver. Thanks to Xypron
|
alpar@9
|
455 <xypron.glpk@gmx.de>.
|
alpar@9
|
456
|
alpar@9
|
457 GLPK 4.32 (release date: Oct 03, 2008)
|
alpar@9
|
458
|
alpar@9
|
459 The following new features were included in the MIP solver
|
alpar@9
|
460 (the API routine glp_intopt):
|
alpar@9
|
461
|
alpar@9
|
462 * MIP presolver
|
alpar@9
|
463 * mixed cover cut generator
|
alpar@9
|
464 * clique cut generator
|
alpar@9
|
465 * Euclidean reduction of the objective value
|
alpar@9
|
466
|
alpar@9
|
467 Due to changes the routine glp_intopt may additionally return
|
alpar@9
|
468 GLP_ENOPFS, GLP_ENODFS, and GLP_EMIPGAP.
|
alpar@9
|
469
|
alpar@9
|
470 The API routines lpx_integer are lpx_intopt are deprecated,
|
alpar@9
|
471 since they are completely superseded by glp_intopt.
|
alpar@9
|
472
|
alpar@9
|
473 The following new branch-and-cut API routines were added:
|
alpar@9
|
474 glp_ios_row_attr determine additional row attributes
|
alpar@9
|
475 glp_ios_pool_size determine current size of the cut pool
|
alpar@9
|
476 glp_ios_add_row add constraint to the cut pool
|
alpar@9
|
477 glp_ios_del_row delete constraint from the cut pool
|
alpar@9
|
478 glp_ios_clear_pool delete all constraints from the cut pool
|
alpar@9
|
479
|
alpar@9
|
480 For description of these new routines see the reference manual
|
alpar@9
|
481 included in the distribution.
|
alpar@9
|
482
|
alpar@9
|
483 The stand-alone solver glpsol was changed to allow multiple
|
alpar@9
|
484 data files.
|
alpar@9
|
485
|
alpar@9
|
486 A new edition of the supplement "Using Data Tables in the GNU
|
alpar@9
|
487 MathProg Modeling Language" was included.
|
alpar@9
|
488
|
alpar@9
|
489 As usual, some bugs were fixed (in the MathProg translator).
|
alpar@9
|
490 Thanks to Xypron <xypron.glpk@gmx.de>.
|
alpar@9
|
491
|
alpar@9
|
492 GLPK 4.31 (release date: Sep 02, 2008)
|
alpar@9
|
493
|
alpar@9
|
494 The core LP solver based on the dual simplex method was
|
alpar@9
|
495 re-implemented and now it provides both phases I and II.
|
alpar@9
|
496
|
alpar@9
|
497 The following new API routines were added:
|
alpar@9
|
498 glp_scale_prob automatic scaling of problem data
|
alpar@9
|
499 glp_std_basis construct standard initial LP basis
|
alpar@9
|
500 glp_adv_basis construct advanced initial LP basis
|
alpar@9
|
501 glp_cpx_basis construct Bixby's initial LP basis
|
alpar@9
|
502
|
alpar@9
|
503 For description of these new routines see the reference manual
|
alpar@9
|
504 included in the distribution.
|
alpar@9
|
505
|
alpar@9
|
506 The following API routines are deprecated:
|
alpar@9
|
507 lpx_scale_prob, lpx_std_basis, lpx_adv_basis, lpx_cpx_basis.
|
alpar@9
|
508
|
alpar@9
|
509 Necessary changes were made in memory allocation routines to
|
alpar@9
|
510 resolve portability issues for 64-bit platforms.
|
alpar@9
|
511
|
alpar@9
|
512 New version of the routine lpx_write_pb to write problem data
|
alpar@9
|
513 in OPB (pseudo boolean format) was added to the package. Thanks
|
alpar@9
|
514 to Oscar Gustafsson <oscarg@isy.liu.se> for the contribution.
|
alpar@9
|
515
|
alpar@9
|
516 Two new makefiles were added to build the package for 32- and
|
alpar@9
|
517 64-bit Windows with Microsoft Visual Studio Express 2008.
|
alpar@9
|
518 Thanks to Heinrich Schuchardt <heinrich.schuchardt@gmx.de> (aka
|
alpar@9
|
519 Xypron) for the contribution and testing.
|
alpar@9
|
520
|
alpar@9
|
521 Two new makefiles were added to build the package with Digital
|
alpar@9
|
522 Mars C/C++ 8.50 and Open Watcom C/C++ 1.6 (for 32-bit Windows).
|
alpar@9
|
523
|
alpar@9
|
524 GLPK 4.30 (release date: Aug 13, 2008)
|
alpar@9
|
525
|
alpar@9
|
526 The core LP solver based on the primal simplex method was
|
alpar@9
|
527 re-implemented to allow its further improvements. Currently the
|
alpar@9
|
528 new version provides the same features as the old one, however,
|
alpar@9
|
529 it is a bit faster and more numerically stable.
|
alpar@9
|
530
|
alpar@9
|
531 Some changes were made in the MathProg translator to allow <,
|
alpar@9
|
532 <=, >=, and > on comparing symbolic values. Thanks to Heinrich
|
alpar@9
|
533 Schuchardt <heinrich.schuchardt@gmx.de> for patches.
|
alpar@9
|
534
|
alpar@9
|
535 Internal routine set_d_eps in the exact LP solver was changed
|
alpar@9
|
536 to prevent approximation errors in case of integral data.
|
alpar@9
|
537 Thanks to Markus Pilz <pilz@cs.uni-bonn.de> for bug report.
|
alpar@9
|
538
|
alpar@9
|
539 GLPK 4.29 (release date: Jul 06, 2008)
|
alpar@9
|
540
|
alpar@9
|
541 The configure script was changed to disable all optional
|
alpar@9
|
542 features by default. For details please see file INSTALL.
|
alpar@9
|
543
|
alpar@9
|
544 The following new API routines were added:
|
alpar@9
|
545 glp_erase_prob erase problem object content
|
alpar@9
|
546 glp_read_mps read problem data in MPS format
|
alpar@9
|
547 glp_write_mps write problem data in MPS format
|
alpar@9
|
548 glp_read_lp read problem data in CPLEX LP format
|
alpar@9
|
549 glp_write_lp write problem data in CPLEX LP format
|
alpar@9
|
550
|
alpar@9
|
551 For description of these new routines see the reference manual
|
alpar@9
|
552 included in the distribution.
|
alpar@9
|
553
|
alpar@9
|
554 The following API routines are deprecated:
|
alpar@9
|
555 lpx_read_mps, lpx_read_freemps, lpx_write_mps,
|
alpar@9
|
556 lpx_write_freemps, lpx_read_cpxlp, and lpx_write_cpxlp.
|
alpar@9
|
557
|
alpar@9
|
558 Two bugs were fixed. Thanks to
|
alpar@9
|
559 Anne-Laurence Putz <anne-laurence.putz@eurodecision.com> and
|
alpar@9
|
560 Xypron <xypron.glpk@gmx.de> for bug report.
|
alpar@9
|
561
|
alpar@9
|
562 GLPK 4.28 (release date: Mar 25, 2008)
|
alpar@9
|
563
|
alpar@9
|
564 The iODBC and MySQL table drivers, which allows transmitting
|
alpar@9
|
565 data between MathProg model objects and relational databases,
|
alpar@9
|
566 were re-implemented to replace a static linking by a dynamic
|
alpar@9
|
567 linking to corresponding shared libraries.
|
alpar@9
|
568 Many thanks to Heinrich Schuchardt <heinrich.schuchardt@gmx.de>
|
alpar@9
|
569 for the contribution, Rafael Laboissiere <rafael@debian.org>
|
alpar@9
|
570 for useful advices concerning the shared library support under
|
alpar@9
|
571 GNU/Linux, and Vijay Patil <vijay.patil@gmail.com> for testing
|
alpar@9
|
572 this feature under Windows XP.
|
alpar@9
|
573
|
alpar@9
|
574 A new optional feature was added to the package. This feature
|
alpar@9
|
575 is based on the zlib data compression library and allows GLPK
|
alpar@9
|
576 API routines and the stand-alone solver to read and write
|
alpar@9
|
577 compressed data files performing compression/decompression "on
|
alpar@9
|
578 the fly" (compressed data files are recognized by suffix `.gz'
|
alpar@9
|
579 in the file name). It may be useful in case of large MPS files
|
alpar@9
|
580 to save the disk space (up to ten times).
|
alpar@9
|
581
|
alpar@9
|
582 The `configure' script was re-implemented. Now it supports the
|
alpar@9
|
583 following specific options:
|
alpar@9
|
584
|
alpar@9
|
585 --with-gmp Enable using the GNU MP bignum library
|
alpar@9
|
586 --without-gmp Disable using the GNU MP bignum library
|
alpar@9
|
587 --with-zlib Enable using the zlib data compression
|
alpar@9
|
588 library
|
alpar@9
|
589 --without-zlib Disable using the zlib data compression
|
alpar@9
|
590 library
|
alpar@9
|
591 --enable-dl Enable shared library support (auto check)
|
alpar@9
|
592 --enable-dl=ltdl Enable shared library support (GNU)
|
alpar@9
|
593 --enable-dl=dlfcn Enable shared library support (POSIX)
|
alpar@9
|
594 --disable-dl Disable shared library support
|
alpar@9
|
595 --enable-odbc Enable using ODBC table driver
|
alpar@9
|
596 --disable-odbc Disable using ODBC table driver
|
alpar@9
|
597 --enable-mysql Enable using MySQL table driver
|
alpar@9
|
598 --disable-mysql Disable using MySQL table driver
|
alpar@9
|
599
|
alpar@9
|
600 For more details please see file INSTALL.
|
alpar@9
|
601
|
alpar@9
|
602 GLPK 4.27 (release date: Mar 02, 2008)
|
alpar@9
|
603
|
alpar@9
|
604 Three new table drivers were added to the MathProg translator:
|
alpar@9
|
605
|
alpar@9
|
606 xBASE built-in table driver, which allows reading and writing
|
alpar@9
|
607 data in .dbf format (only C and N fields are supported);
|
alpar@9
|
608
|
alpar@9
|
609 MySQL table driver, which provides connection to a MySQL
|
alpar@9
|
610 database;
|
alpar@9
|
611
|
alpar@9
|
612 iODBC table driver, which provides connection to a database
|
alpar@9
|
613 through ODBC.
|
alpar@9
|
614
|
alpar@9
|
615 The MySQL and iODBC table drivers were contributed to GLPK by
|
alpar@9
|
616 Heinrich Schuchardt <heinrich.schuchardt@gmx.de>.
|
alpar@9
|
617
|
alpar@9
|
618 The table driver is a program module which allows transmitting
|
alpar@9
|
619 data between MathProg model objects and external data tables.
|
alpar@9
|
620
|
alpar@9
|
621 For detailed description of the table statement and table
|
alpar@9
|
622 drivers see the document "Using Data Tables in the GNU MathProg
|
alpar@9
|
623 Modeling Language" (file doc/tables.txt) included in the
|
alpar@9
|
624 distribution. Some examples which demonstrate using MySQL and
|
alpar@9
|
625 iODBC table drivers can be found in subdirectory examples/sql.
|
alpar@9
|
626
|
alpar@9
|
627 GLPK 4.26 (release date: Feb 17, 2008)
|
alpar@9
|
628
|
alpar@9
|
629 The table statement was implemented in the GNU MathProg
|
alpar@9
|
630 modeling language. This new feature allows reading data from
|
alpar@9
|
631 external tables into model objects such as sets and parameters
|
alpar@9
|
632 as well as writing results of computations to external tables.
|
alpar@9
|
633
|
alpar@9
|
634 A table is a (unordered) set of records, where each record
|
alpar@9
|
635 consists of the same number of fields, and each field is
|
alpar@9
|
636 provided with a unique symbolic name called the field name.
|
alpar@9
|
637
|
alpar@9
|
638 Currently the GLPK package has the only built-in table driver,
|
alpar@9
|
639 which supports tables in the CSV (comma-separated values) file
|
alpar@9
|
640 format. This format is very simple and supported by almost all
|
alpar@9
|
641 spreadsheets and database management systems.
|
alpar@9
|
642
|
alpar@9
|
643 Detailed description of the table statement and CSV format can
|
alpar@9
|
644 be found in file doc/tables.txt, included in the distribution.
|
alpar@9
|
645
|
alpar@9
|
646 GLPK 4.25 (release date: Dec 19, 2007)
|
alpar@9
|
647
|
alpar@9
|
648 A tentative implementation of Gomory's mixed integer cuts was
|
alpar@9
|
649 included in the branch-and-cut solver. To enable generating
|
alpar@9
|
650 Gomory's cuts the control parameter gmi_cuts passed to the
|
alpar@9
|
651 routine glp_intopt should be set to GLP_ON. This feature is
|
alpar@9
|
652 also available in the solver glpsol through command-line option
|
alpar@9
|
653 '--gomory'. For more details please see the reference manual
|
alpar@9
|
654 included in the distribution.
|
alpar@9
|
655
|
alpar@9
|
656 GLPK 4.24 (release date: Nov 21, 2007)
|
alpar@9
|
657
|
alpar@9
|
658 A tentative implementation of MIR (mixed integer rounding) cuts
|
alpar@9
|
659 was included in the MIP solver. To enable generating MIR cuts
|
alpar@9
|
660 the control parameter mir_cuts passed to the routine glp_intopt
|
alpar@9
|
661 should be set to GLP_ON. This feature is also available in the
|
alpar@9
|
662 stand-alone solver glpsol via command-line option '--mir'. For
|
alpar@9
|
663 more details please see the reference manual included in the
|
alpar@9
|
664 distribution.
|
alpar@9
|
665
|
alpar@9
|
666 The implementation is mainly based on the following two papers:
|
alpar@9
|
667
|
alpar@9
|
668 1. H. Marchand and L. A. Wolsey. Aggregation and mixed integer
|
alpar@9
|
669 rounding to solve MIPs. CORE discussion paper 9839, CORE,
|
alpar@9
|
670 Universite catholique de Louvain, June 1998.
|
alpar@9
|
671
|
alpar@9
|
672 2. G. Andreello, A. Caprara, and M. Fischetti. Embedding cuts
|
alpar@9
|
673 in a Branch&Cut framework. Preliminary draft, October 2003.
|
alpar@9
|
674
|
alpar@9
|
675 MIR cuts can be generated on any level of the search tree that
|
alpar@9
|
676 makes the GLPK MIP solver to be a real branch-and-cut solver.
|
alpar@9
|
677
|
alpar@9
|
678 A bug was fixed in the routine lpx_write_cpxlp. If a variable
|
alpar@9
|
679 x has upper bound and no lower bound, it should appear in the
|
alpar@9
|
680 bounds section as "-inf <= x <= u", not as "x <= u". Thanks to
|
alpar@9
|
681 Enric Rodriguez <erodri@lsi.upc.edu> for the bug report.
|
alpar@9
|
682
|
alpar@9
|
683 GLPK 4.23 (release date: Oct 28, 2007)
|
alpar@9
|
684
|
alpar@9
|
685 The following new API routines were added:
|
alpar@9
|
686
|
alpar@9
|
687 glp_read_sol read basic solution from text file
|
alpar@9
|
688 glp_write_sol write basic solution to text file
|
alpar@9
|
689 glp_read_ipt read interior-point solution from text file
|
alpar@9
|
690 glp_write_ipt write interior-point solution to text file
|
alpar@9
|
691 glp_read_mip read MIP solution from text file
|
alpar@9
|
692 glp_write_mip write MIP solution to text file
|
alpar@9
|
693
|
alpar@9
|
694 For description of these routines and corresponding file
|
alpar@9
|
695 formats see Chapter "API Routines", Section "Utility routines"
|
alpar@9
|
696 in the reference manual included in the distribution.
|
alpar@9
|
697
|
alpar@9
|
698 Advanced API routine glp_free_env was added. It may be used by
|
alpar@9
|
699 the application program to free all resources allocated by GLPK
|
alpar@9
|
700 routines.
|
alpar@9
|
701
|
alpar@9
|
702 The following three new command-line options were added to the
|
alpar@9
|
703 solver glpsol:
|
alpar@9
|
704
|
alpar@9
|
705 --mipgap tol set relative MIP gap tolerance
|
alpar@9
|
706 -r filename read solution from filename
|
alpar@9
|
707 -w filename write solution to filename
|
alpar@9
|
708
|
alpar@9
|
709 GLPK 4.22 (release date: Sep 19, 2007)
|
alpar@9
|
710
|
alpar@9
|
711 This is a maintainer release.
|
alpar@9
|
712
|
alpar@9
|
713 A bug was fixed in the MIP preprocessor (ios_preprocess_node).
|
alpar@9
|
714 Thanks to Roberto Bagnara <bagnara@cs.unipr.it> (Department of
|
alpar@9
|
715 Mathematics, University of Parma, Italy) for the bug report.
|
alpar@9
|
716
|
alpar@9
|
717 A bug was fixed in the MIP preprocessor (col_implied_bounds),
|
alpar@9
|
718 due to which constraint coefficients with small magnitude could
|
alpar@9
|
719 lead to wrong implied bounds of structural variables.
|
alpar@9
|
720
|
alpar@9
|
721 A similar bug was fixed in the routine reduce_bounds.
|
alpar@9
|
722
|
alpar@9
|
723 A bug was fixed in the routines glp_set_mat_row and
|
alpar@9
|
724 glp_set_mat_col. (The bug appeared due to incorrect removing
|
alpar@9
|
725 zero elements from the row/column lists.)
|
alpar@9
|
726
|
alpar@9
|
727 A bug was fixed in the API routines lpx_read_mps and
|
alpar@9
|
728 lpx_read_freemps, due to which bounds of type LI specified in
|
alpar@9
|
729 BOUNDS section were incorrectly processed.
|
alpar@9
|
730
|
alpar@9
|
731 A call to standard function vsprintf was replaced by a call to
|
alpar@9
|
732 vsnprintf for security reasons. Many thanks to Peter T. Breuer
|
alpar@9
|
733 <ptb@inv.it.uc3m.es> and Rafael Laboissiere <rafael@debian.org>.
|
alpar@9
|
734
|
alpar@9
|
735 GLPK 4.21 (release date: Aug 28, 2007)
|
alpar@9
|
736
|
alpar@9
|
737 Additional reasons for calling the callback routine used in the
|
alpar@9
|
738 MIP solver (glp_intopt) were introduced. Currently the following
|
alpar@9
|
739 reasons are supported:
|
alpar@9
|
740
|
alpar@9
|
741 * request for subproblem selection
|
alpar@9
|
742 * request for preprocessing
|
alpar@9
|
743 * request for row generation
|
alpar@9
|
744 * request for heuristic solution
|
alpar@9
|
745 * request for cut generation
|
alpar@9
|
746 * request for branching
|
alpar@9
|
747 * better integer solution found
|
alpar@9
|
748
|
alpar@9
|
749 A basic preprocessing component used to improve subproblem
|
alpar@9
|
750 formulations by tightening bounds of variables was included in
|
alpar@9
|
751 the MIP solver. Depending on the control parameter pp_tech
|
alpar@9
|
752 passed to the routine glp_intopt the preprocessing can be
|
alpar@9
|
753 performed either on the root level or on all levels (default)
|
alpar@9
|
754 or can be disabled.
|
alpar@9
|
755
|
alpar@9
|
756 Backtracking heuristic used by default in the MIP solver was
|
alpar@9
|
757 changed to the "best local bound".
|
alpar@9
|
758
|
alpar@9
|
759 For more details see Chapter "Advanced API routines", Section
|
alpar@9
|
760 "Branch-and-bound interface routines" in a new edition of the
|
alpar@9
|
761 reference manual included in the distribution.
|
alpar@9
|
762
|
alpar@9
|
763 GLPK 4.20 (release date: Jul 26, 2007)
|
alpar@9
|
764
|
alpar@9
|
765 API routine lpx_integer was replaced by API routine glp_intopt,
|
alpar@9
|
766 which provides equivalent functionality and additionally allows
|
alpar@9
|
767 the application to control the solution process by means of the
|
alpar@9
|
768 user-written callback routine, which is called by the solver at
|
alpar@9
|
769 various points of the branch-and-bound algorithm. Besides, the
|
alpar@9
|
770 new MIP solver allows generating "lazy" constraints and cutting
|
alpar@9
|
771 planes on all levels of the branch-and-bound tree, not only on
|
alpar@9
|
772 the root level. The routine lpx_integer is also still available
|
alpar@9
|
773 for the backward compatibility.
|
alpar@9
|
774
|
alpar@9
|
775 The following new advanced API routines, which may be called
|
alpar@9
|
776 from the B&B callback routine, were included in the package:
|
alpar@9
|
777
|
alpar@9
|
778 glp_ios_reason determine reason for calling callback
|
alpar@9
|
779 routine
|
alpar@9
|
780 glp_ios_get_prob access the problem object
|
alpar@9
|
781 glp_ios_tree_size determine size of the branch-and-bound tree
|
alpar@9
|
782 glp_ios_curr_node determine current active subproblem
|
alpar@9
|
783 glp_ios_next_node determine next active subproblem
|
alpar@9
|
784 glp_ios_prev_node determine previous active subproblem
|
alpar@9
|
785 glp_ios_up_node determine parent subproblem
|
alpar@9
|
786 glp_ios_node_level determine subproblem level
|
alpar@9
|
787 glp_ios_node_bound determine subproblem local bound
|
alpar@9
|
788 glp_ios_mip_gap compute relative MIP gap
|
alpar@9
|
789 glp_ios_heur_sol provide solution found by heuristic
|
alpar@9
|
790 glp_ios_terminate terminate the solution process
|
alpar@9
|
791
|
alpar@9
|
792 For description of these routines see Chapter "Advanced API
|
alpar@9
|
793 routines", Section "Branch-and-bound interface routines" in a
|
alpar@9
|
794 new edition of the reference manual, which was included in the
|
alpar@9
|
795 distribution.
|
alpar@9
|
796
|
alpar@9
|
797 Old version of the integer optimization suite (IOS) as well as
|
alpar@9
|
798 TSP solver tspsol based on it are no longer supported and were
|
alpar@9
|
799 removed from the package.
|
alpar@9
|
800
|
alpar@9
|
801 A minor error in the MIP presolver was fixed; thanks to Graham
|
alpar@9
|
802 Rockwell <bionomicron@gmail.com> for the bug report.
|
alpar@9
|
803
|
alpar@9
|
804 GLPK 4.19 (release date: Jul 05, 2007)
|
alpar@9
|
805
|
alpar@9
|
806 The principal change is upgrading to GPLv3.
|
alpar@9
|
807
|
alpar@9
|
808 A serious bug in the routine glp_del_cols was fixed; thanks to
|
alpar@9
|
809 Cedric[FR] <fox2113@wanadoo.fr> for the bug report. The bug
|
alpar@9
|
810 appeared because on deleting non-basic columns the basis header
|
alpar@9
|
811 remained valid, however, contained invalid (old) column ordinal
|
alpar@9
|
812 numbers.
|
alpar@9
|
813
|
alpar@9
|
814 A new advanced API routine glp_mem_limit was added.
|
alpar@9
|
815
|
alpar@9
|
816 The case GLP_EBOUND was added to the routine lpx_simplex.
|
alpar@9
|
817 Thanks to Cameron Kellough <Cameron.Kellough@sri.com> for the
|
alpar@9
|
818 bug report.
|
alpar@9
|
819
|
alpar@9
|
820 An API routine lpx_write_pb to write the problem instance in
|
alpar@9
|
821 OPB (pseudo boolean) format format was added. Thanks to Oscar
|
alpar@9
|
822 Gustafsson <oscarg@isy.liu.se> for the contribution.
|
alpar@9
|
823
|
alpar@9
|
824 Two new options --wpb and --wnpb were added to glpsol to write
|
alpar@9
|
825 the problem instance in OPB format.
|
alpar@9
|
826
|
alpar@9
|
827 GLPK 4.18 (release date: Jun 25, 2007)
|
alpar@9
|
828
|
alpar@9
|
829 The following new API routines were added:
|
alpar@9
|
830
|
alpar@9
|
831 glp_set_rii set (change) row scale factor
|
alpar@9
|
832 glp_set_sjj set (change) column scale factor
|
alpar@9
|
833 glp_get_rii retrieve row scale factor
|
alpar@9
|
834 glp_get_sjj retrieve column scale factor
|
alpar@9
|
835 glp_simplex solve LP problem with the simplex method
|
alpar@9
|
836 (this routine replaces lpx_simplex, which is
|
alpar@9
|
837 also available for backward compatibility)
|
alpar@9
|
838 glp_init_smcp initialize simplex method control params
|
alpar@9
|
839 glp_bf_exists check if the basis factorization exists
|
alpar@9
|
840 glp_factorize compute the basis factorization
|
alpar@9
|
841 glp_bf_updated check if the basis factorization has been
|
alpar@9
|
842 updated
|
alpar@9
|
843 glp_get_bfcp retrieve basis factorization control params
|
alpar@9
|
844 glp_set_bfcp change basis factorization control params
|
alpar@9
|
845 glp_get_bhead retrieve the basis header information
|
alpar@9
|
846 glp_get_row_bind retrieve row index in the basis header
|
alpar@9
|
847 glp_get_col_bind retrieve column index in the basis header
|
alpar@9
|
848 glp_ftran perform forward transformation
|
alpar@9
|
849 glp_btran perform backward transformation
|
alpar@9
|
850
|
alpar@9
|
851 For description of all these routines see a new edition of the
|
alpar@9
|
852 reference manual included in the distribution.
|
alpar@9
|
853
|
alpar@9
|
854 Type names ulong_t and uldiv_t were changed to glp_ulong and
|
alpar@9
|
855 glp_uldiv to avoid conflicts with standard type names on some
|
alpar@9
|
856 platforms. Thanks to Boris Wirtz <Boris.Wirtz@uni-oldenburg.de>
|
alpar@9
|
857 for the bug report.
|
alpar@9
|
858
|
alpar@9
|
859 Some new examples in the MathProg language were added. Thanks
|
alpar@9
|
860 to Sebastian Nowozin <nowozin@gmail.com>.
|
alpar@9
|
861
|
alpar@9
|
862 GLPK 4.17 (release date: May 26, 2007)
|
alpar@9
|
863
|
alpar@9
|
864 API routines glp_set_mat_row, glp_set_mat_col, and glp_load_mat
|
alpar@9
|
865 were modified to allow zero constraint coefficients (which are
|
alpar@9
|
866 not stored in the constraint matrix). Note that constraint
|
alpar@9
|
867 coefficients with duplicate row/column indices are not allowed.
|
alpar@9
|
868
|
alpar@9
|
869 Another form of LP basis factorization was implemented in the
|
alpar@9
|
870 package. It is based on LU-factorization of an initial basis
|
alpar@9
|
871 and Schur complement to reflect changes in the basis. Currently
|
alpar@9
|
872 the implementation is incomplete and provides only updating the
|
alpar@9
|
873 factorization on replacing a column of the basis matrix. On API
|
alpar@9
|
874 level the user can set the control parameter LPX_K_BFTYPE to
|
alpar@9
|
875 choose between the folloiwng forms of LP basis factorization to
|
alpar@9
|
876 be used in the simplex method routines:
|
alpar@9
|
877 1) LU + Forrest-Tomlin update;
|
alpar@9
|
878 2) LU + Schur complement + Bartels-Golub update;
|
alpar@9
|
879 3) LU + Schur complement + Givens rotation update.
|
alpar@9
|
880 The GLPK implementation is similar to LUSOL/LUMOD developed by
|
alpar@9
|
881 Michael A. Saunders.
|
alpar@9
|
882
|
alpar@9
|
883 The user can choose the form of LP basis factorzation used by
|
alpar@9
|
884 the simplex method routines by specifying the folloiwng options
|
alpar@9
|
885 of glpsol: --luf, --cbg, --cgr.
|
alpar@9
|
886
|
alpar@9
|
887 GLPK 4.16 (release date: May 05, 2007)
|
alpar@9
|
888
|
alpar@9
|
889 A number of basic GLPK API routines, which now are in the
|
alpar@9
|
890 stable stable, were renamed to be prefixed with 'glp_'. Note
|
alpar@9
|
891 that all these routines are available via their old names
|
alpar@9
|
892 prefixed with 'lpx_' that keeps the downward compatibility with
|
alpar@9
|
893 older versions of the package.
|
alpar@9
|
894
|
alpar@9
|
895 Three new GLPK API routines were added to the package:
|
alpar@9
|
896 glp_version, glp_term_hook, and glp_mem_usage; for more details
|
alpar@9
|
897 see a new edition of the GLPK reference manual included in the
|
alpar@9
|
898 distribution. The routine glp_version reports the actual version
|
alpar@9
|
899 of the GLPK library and also can be used (along with the header
|
alpar@9
|
900 glpk.h) in Autotools specification files to check if the GLPK
|
alpar@9
|
901 library has been installed.
|
alpar@9
|
902
|
alpar@9
|
903 The header glpk.h was changed to conform to C++ environment.
|
alpar@9
|
904
|
alpar@9
|
905 GLPK 4.15 (release date: Feb 18, 2007)
|
alpar@9
|
906
|
alpar@9
|
907 Autotools specification files (configure.ac, Makefile.am) were
|
alpar@9
|
908 changed to use GNU Libtool. This allows building the static as
|
alpar@9
|
909 well as shared GLPK library.
|
alpar@9
|
910
|
alpar@9
|
911 GLPK 4.14 (release date: Feb 05, 2007)
|
alpar@9
|
912
|
alpar@9
|
913 Now GLPK conforms to ILP32, LLP64, and LP64 programming models
|
alpar@9
|
914 (the latter seems to be the ultimate choice regarding 64-bit
|
alpar@9
|
915 architectures). Note that GLPK itself is a 32-bit application,
|
alpar@9
|
916 and the conformity only means that the package works correctly
|
alpar@9
|
917 on all these arenae. Nevertheless, on 64-bit platforms it is
|
alpar@9
|
918 possible to use more than 4GB of memory, if necessary.
|
alpar@9
|
919
|
alpar@9
|
920 GLPK 4.13 (release date: Nov 13, 2006)
|
alpar@9
|
921
|
alpar@9
|
922 A tentative implementation of the "exact" simplex method based
|
alpar@9
|
923 on bignum (rational) arithmetic was included in the package.
|
alpar@9
|
924
|
alpar@9
|
925 On API level this new feature is available through the routine
|
alpar@9
|
926 lpx_exact, which is similar to the routine lpx_simplex.
|
alpar@9
|
927
|
alpar@9
|
928 In the solver glpsol this feature is available through two new
|
alpar@9
|
929 command-line options: --exact and --xcheck. If the '--exact'
|
alpar@9
|
930 option is specified, glpsol solves LP instance using the exact
|
alpar@9
|
931 simplex method; in case of MIP it is used to obtain optimal
|
alpar@9
|
932 solution of LP relaxation. If the --xcheck option is specified,
|
alpar@9
|
933 LP instance (or LP relaxation) is solved using the standard
|
alpar@9
|
934 (floating-point) simplex method, however, then glpsol calls the
|
alpar@9
|
935 exact simplex routine to make sure that the final LP basis is
|
alpar@9
|
936 exactly optimal, and if it is not, to perform some additional
|
alpar@9
|
937 simplex iterations in exact arithmetic.
|
alpar@9
|
938
|
alpar@9
|
939 GLPK 4.12 (release date: Nov 08, 2006)
|
alpar@9
|
940
|
alpar@9
|
941 A tentative implementation of some simplex method routines
|
alpar@9
|
942 based on exact (bignum) arithmetic was included in the package.
|
alpar@9
|
943 Currently these routines provide computing LU-factorization of
|
alpar@9
|
944 the basis matrix and computing components of basic solution.
|
alpar@9
|
945
|
alpar@9
|
946 These routines were used to implement a routine, which checks
|
alpar@9
|
947 primal and dual feasibility of basic solution exactly, i.e. in
|
alpar@9
|
948 rational numbers, without round-off errors. In glpsol this
|
alpar@9
|
949 feature is available through the command-line option --xcheck.
|
alpar@9
|
950
|
alpar@9
|
951 GLPK has its own low-level routines implementing operations on
|
alpar@9
|
952 integer and rational numbers that makes it independent on other
|
alpar@9
|
953 software packages. However, to attain a much better performance
|
alpar@9
|
954 it is highly recommended to install (before configuring GLPK)
|
alpar@9
|
955 the GNU Multiple Precision Arithmetic Library (GMP). Using GMP
|
alpar@9
|
956 makes computations 100-200 times faster.
|
alpar@9
|
957
|
alpar@9
|
958 GLPK 4.11 (release date: Jul 25, 2006)
|
alpar@9
|
959
|
alpar@9
|
960 Three new built-in functions in the modeling language were
|
alpar@9
|
961 implemented: card (cardinality of set), length (length of
|
alpar@9
|
962 character string), and substr (substring of character string).
|
alpar@9
|
963 Another improvement concerns the printf statement which now
|
alpar@9
|
964 allows redirecting its output to a specified file. These new
|
alpar@9
|
965 features are illustrated in example models crypto.mod and
|
alpar@9
|
966 graph.mod included in the distribution. For more details see
|
alpar@9
|
967 the document "Modeling Language GNU MathProg".
|
alpar@9
|
968
|
alpar@9
|
969 Four batch files (along with corresponding makefiles) were
|
alpar@9
|
970 included in the distribution to simplify building GLPK under
|
alpar@9
|
971 MS Windows; see them in subdirectory 'w32'.
|
alpar@9
|
972
|
alpar@9
|
973 GLPK 4.10 (release date: May 11, 2006)
|
alpar@9
|
974
|
alpar@9
|
975 Cutting planes of two new classes were implemented: mixed cover
|
alpar@9
|
976 cuts and clique cuts. On API level this feature can be enabled
|
alpar@9
|
977 by setting control parameter LPX_K_USECUTS passed to the routine
|
alpar@9
|
978 lpx_intopt. In glpsol this feature is available through the
|
alpar@9
|
979 command-line options --cover and --clique. For more details see
|
alpar@9
|
980 the reference manual.
|
alpar@9
|
981
|
alpar@9
|
982 Now the routines lpx_read_mps and lpx_read_freemps support LI
|
alpar@9
|
983 bound type. It is similar to LO, however, indicates the column
|
alpar@9
|
984 as of integer kind.
|
alpar@9
|
985
|
alpar@9
|
986 GLPK 4.9 (release date: Jan 17, 2006)
|
alpar@9
|
987
|
alpar@9
|
988 An advanced MIP solver was implemented. It includes:
|
alpar@9
|
989
|
alpar@9
|
990 - basic presolving technique (removing free, singleton and
|
alpar@9
|
991 redundant rows, improving bounds of columns, removing fixed
|
alpar@9
|
992 columns, reducing constraint coefficents);
|
alpar@9
|
993
|
alpar@9
|
994 - generating cutting planes to improve LP relaxation (currently
|
alpar@9
|
995 only Gomory's mixed integer cuts are implemented);
|
alpar@9
|
996
|
alpar@9
|
997 - using the branch-and-bound method to solve resultant MIP;
|
alpar@9
|
998
|
alpar@9
|
999 - recovering solution of the original MIP.
|
alpar@9
|
1000
|
alpar@9
|
1001 The solver is available on API level via the routine lpx_intopt
|
alpar@9
|
1002 (see the reference manual). It is similar to the routine
|
alpar@9
|
1003 lpx_integer, however, does not require initial solution of LP
|
alpar@9
|
1004 relaxation.
|
alpar@9
|
1005
|
alpar@9
|
1006 The solver is also available in the command-line utility glpsol
|
alpar@9
|
1007 via two options: --intopt (only presolving) and --cuts (assumes
|
alpar@9
|
1008 --intopt plus generating cuts).
|
alpar@9
|
1009
|
alpar@9
|
1010 Note that efficiency of the MIP solver strongly depends on the
|
alpar@9
|
1011 internal structure of the problem to be solved. For some hard
|
alpar@9
|
1012 instances it is very efficient, but for other instances it may
|
alpar@9
|
1013 be significantly worse than the standard branch-and-bound.
|
alpar@9
|
1014
|
alpar@9
|
1015 For some comparative benchmarks see doc/bench1.txt.
|
alpar@9
|
1016
|
alpar@9
|
1017 Well, what else...
|
alpar@9
|
1018
|
alpar@9
|
1019 Three built-in functions were added to MathProg: sin, cos, and
|
alpar@9
|
1020 atan (the latter allows one or two arguments).
|
alpar@9
|
1021
|
alpar@9
|
1022 Some bugs were fixed.
|
alpar@9
|
1023
|
alpar@9
|
1024 Several new examples in MathProg were included: color.mod
|
alpar@9
|
1025 (graph coloring problem), tsp.mod (traveling salesman problem),
|
alpar@9
|
1026 and pbn.mod (paint-by-numbers puzzle).
|
alpar@9
|
1027
|
alpar@9
|
1028 GLPK 4.8 (release date: Jan 12, 2005)
|
alpar@9
|
1029
|
alpar@9
|
1030 Core simplex method and interior-point method routines were
|
alpar@9
|
1031 re-implemented and now they use a new, "storage-by-rows" sparse
|
alpar@9
|
1032 matrix format (unlike previous versions where linked lists were
|
alpar@9
|
1033 used to represent sparse matrices). For details see ChangeLog.
|
alpar@9
|
1034
|
alpar@9
|
1035 Also a minor bug was fixed in API routine lpx_read_cpxlp.
|
alpar@9
|
1036
|
alpar@9
|
1037 GLPK 4.7 (release date: Aug 23, 2004)
|
alpar@9
|
1038
|
alpar@9
|
1039 Now GLPK supports free MPS format. Two new API routines
|
alpar@9
|
1040 lpx_read_freemps (to read problem data in free MPS format) and
|
alpar@9
|
1041 lpx_write_freemps (to write problem data in free MPS format)
|
alpar@9
|
1042 were added. This feature is also available in the solver glpsol
|
alpar@9
|
1043 via new command-line options --freemps and --wfreemps. For more
|
alpar@9
|
1044 details see the GLPK reference manual.
|
alpar@9
|
1045
|
alpar@9
|
1046 API routines lpx_read_cpxlp and lpx_write_cpxlp for reading and
|
alpar@9
|
1047 writing problem data in CPLEX LP format were re-implemented to
|
alpar@9
|
1048 allow long symbolic names (up to 255 characters).
|
alpar@9
|
1049
|
alpar@9
|
1050 The following three modules were temporarily removed from the
|
alpar@9
|
1051 GLPK distribution due to licensing problems: DELI (an interface
|
alpar@9
|
1052 module to Delphi), GLPKMEX (an interface module to Matlab), and
|
alpar@9
|
1053 JNI (an interface module to Java).
|
alpar@9
|
1054
|
alpar@9
|
1055 GLPK 4.6 (release date: Aug 04, 2004)
|
alpar@9
|
1056
|
alpar@9
|
1057 Three new statements were implemented in the GNU MathProg
|
alpar@9
|
1058 language: solve, printf, and for. Their detailed description can
|
alpar@9
|
1059 be found in the GLPK documentation included in the distribution.
|
alpar@9
|
1060 (See also a sample model, examples/queens.mod, which illustrates
|
alpar@9
|
1061 using these new statements.)
|
alpar@9
|
1062
|
alpar@9
|
1063 Two new API routines were added to the package: lpx_read_prob
|
alpar@9
|
1064 and lpx_write_prob. They allow reading/writing problem data in
|
alpar@9
|
1065 GNU LP low-level text format.
|
alpar@9
|
1066
|
alpar@9
|
1067 Three new command-line options were implemented in the LP/MIP
|
alpar@9
|
1068 solver glpsol: --glp (to read problem data in GNU LP format),
|
alpar@9
|
1069 --wglp (to write problem data in GNU LP format), and --name (to
|
alpar@9
|
1070 change problem name). Now glpsol also supports processing models
|
alpar@9
|
1071 where the new statements (see above) are used.
|
alpar@9
|
1072
|
alpar@9
|
1073 A new version of GLPKMEX, a Matlab MEX interface to GLPK, was
|
alpar@9
|
1074 included. For more details see contrib/glpkmex/ChangeLog.
|
alpar@9
|
1075
|
alpar@9
|
1076 GLPK 4.5 (release date: Jul 19, 2004)
|
alpar@9
|
1077
|
alpar@9
|
1078 The branch-and-bound solver was completely re-implemented.
|
alpar@9
|
1079
|
alpar@9
|
1080 Some modifications were made in memory allocation routines that
|
alpar@9
|
1081 allows using the package on 64-bit platforms.
|
alpar@9
|
1082
|
alpar@9
|
1083 For more details see ChangeLog.
|
alpar@9
|
1084
|
alpar@9
|
1085 GLPK 4.4 (release date: Jan 17, 2004)
|
alpar@9
|
1086
|
alpar@9
|
1087 All API routines were re-implemented using new data structures.
|
alpar@9
|
1088 The new implementation provides the same specifications and
|
alpar@9
|
1089 functionality of API routines as the old one, however, it has
|
alpar@9
|
1090 some important advantages, in particular:
|
alpar@9
|
1091 * linked lists are used everywhere that allows creating and
|
alpar@9
|
1092 modifying the problem object as efficiently as possible
|
alpar@9
|
1093 * all data stored in the problem object are non-scaled (even if
|
alpar@9
|
1094 the internal scaling is used) that prevents distortion of the
|
alpar@9
|
1095 original problem data
|
alpar@9
|
1096 * solution components obtained by the solver remain available
|
alpar@9
|
1097 even if the problem object has been modified
|
alpar@9
|
1098 * no solver-specific data are used in the new data structures
|
alpar@9
|
1099 that allows attaching any external lp/mip solver using GLPK
|
alpar@9
|
1100 API as an uniform interface
|
alpar@9
|
1101 Note that some API routines became obsolete being replaced by
|
alpar@9
|
1102 new, more convenient routines. These obsolete routines are kept
|
alpar@9
|
1103 for backward compatibility, however, they will be removed in
|
alpar@9
|
1104 the future. For more details please see ChangeLog and the GLPK
|
alpar@9
|
1105 Reference Manual.
|
alpar@9
|
1106
|
alpar@9
|
1107 New edition of the GLPK Reference Manual was included in the
|
alpar@9
|
1108 distribution.
|
alpar@9
|
1109
|
alpar@9
|
1110 GLPKMEX, a Matlab MEX interface to GLPK package, contributed by
|
alpar@9
|
1111 Nicolo Giorgetti <giorgetti@dii.unisi.it> was included in the
|
alpar@9
|
1112 distribution.
|
alpar@9
|
1113
|
alpar@9
|
1114 GLPK FAQ contributed by Harley Mackenzie <hjm@bigpond.com> was
|
alpar@9
|
1115 included in the distribution.
|
alpar@9
|
1116
|
alpar@9
|
1117 GLPK 4.3 (release date: Dec 12, 2003)
|
alpar@9
|
1118
|
alpar@9
|
1119 The bug, due to which the standard math library is not linked
|
alpar@9
|
1120 on building the package on some platforms, was fixed.
|
alpar@9
|
1121
|
alpar@9
|
1122 The following new built-in functions were added to the MathProg
|
alpar@9
|
1123 language: round, trunc, Irand224, Uniform01, Uniform, Normal01,
|
alpar@9
|
1124 Normal. For details see the language description.
|
alpar@9
|
1125
|
alpar@9
|
1126 The MathProg syntax was changed to allow writing 'subj to' that
|
alpar@9
|
1127 means 'subject to'.
|
alpar@9
|
1128
|
alpar@9
|
1129 The new api routine lpx_get_ray_info was added. It is intended
|
alpar@9
|
1130 to determine which (non-basic) variable causes unboundness. For
|
alpar@9
|
1131 details see the reference manual.
|
alpar@9
|
1132
|
alpar@9
|
1133 The module glpmps.c was changed to avoid compilation errors on
|
alpar@9
|
1134 building the package on Mac OS X.
|
alpar@9
|
1135
|
alpar@9
|
1136 Several typos was fixed and some new material was added to the
|
alpar@9
|
1137 GLPK documentation.
|
alpar@9
|
1138
|
alpar@9
|
1139 GLPK 4.2 (release date: Nov 14, 2003)
|
alpar@9
|
1140
|
alpar@9
|
1141 A preliminary implementation of the Integer Optimization Suite
|
alpar@9
|
1142 (IOS) was included in the package. The Branch-and-Cut Framework
|
alpar@9
|
1143 being completely superseded by IOS was removed from the package.
|
alpar@9
|
1144
|
alpar@9
|
1145 New API routine lpx_print_sens_bnds intended for bounds
|
alpar@9
|
1146 sensitivity analysis was contributed to GLPK by Brady Hunsaker
|
alpar@9
|
1147 <hunsaker@engr.pitt.edu>. This function is also available in
|
alpar@9
|
1148 the solver glpsol (via command-line option --bounds).
|
alpar@9
|
1149
|
alpar@9
|
1150 An improved version of GLPK JNI (Java Native Interface) was
|
alpar@9
|
1151 contributed by Chris Rosebrugh <cpr@pobox.com>.
|
alpar@9
|
1152
|
alpar@9
|
1153 GLPK DELI (Delphi Interface) was contributed by Ivo van Baren
|
alpar@9
|
1154 <i.van.baren@freeler.nl>.
|
alpar@9
|
1155
|
alpar@9
|
1156 Several makefiles were added to allow compiling GLPK on some
|
alpar@9
|
1157 non-GNU 32-bit platforms:
|
alpar@9
|
1158 * Windows single-threaded static library, Visual C++ 6.0
|
alpar@9
|
1159 * Windows multi-threaded dynamic library, Visual C++ 6.0
|
alpar@9
|
1160 * Windows single-threaded static library, Borland C++ 5.2
|
alpar@9
|
1161 * DOS single-threaded static library, Digital Mars C++ 7.50
|
alpar@9
|
1162
|
alpar@9
|
1163 And, of course, some bugs were fixed.
|
alpar@9
|
1164
|
alpar@9
|
1165 For more details see ChangeLog.
|
alpar@9
|
1166
|
alpar@9
|
1167 GLPK 4.1 (release date: Aug 23, 2003)
|
alpar@9
|
1168
|
alpar@9
|
1169 Some improvements were made in the lp/mip solver routines and
|
alpar@9
|
1170 several bugs were fixed in the model translator.
|
alpar@9
|
1171
|
alpar@9
|
1172 For more details see ChangeLog.
|
alpar@9
|
1173
|
alpar@9
|
1174 GLPK 4.0 (release date: May 06, 2003)
|
alpar@9
|
1175
|
alpar@9
|
1176 Now GLPK supports the GNU MathProg modeling language, which is
|
alpar@9
|
1177 a subset of the AMPL modeling language.
|
alpar@9
|
1178
|
alpar@9
|
1179 The document "GLPK: Modeling Language GNU MathProg" included in
|
alpar@9
|
1180 the distribution is a complete description of GNU MathProg. (See
|
alpar@9
|
1181 the files lang.latex, lang.dvi, and lang.ps in the subdirectory
|
alpar@9
|
1182 'doc'. See also some examples in the subdirectory 'sample'.)
|
alpar@9
|
1183
|
alpar@9
|
1184 New version of the solver glpsol, which supports models written
|
alpar@9
|
1185 in GNU MathProg, was implemented. (Brief instructions how to use
|
alpar@9
|
1186 glpsol can be found in the GNU MathProg documentation.)
|
alpar@9
|
1187
|
alpar@9
|
1188 The GLPK/L modeling language is no more supported. The reason is
|
alpar@9
|
1189 that GNU MathProg being much more powerful completely supersedes
|
alpar@9
|
1190 all features of GLPK/L.
|
alpar@9
|
1191
|
alpar@9
|
1192 GLPK 3.3 (release date: Mar 25, 2003)
|
alpar@9
|
1193
|
alpar@9
|
1194 LP PRESOLVER
|
alpar@9
|
1195 ------------
|
alpar@9
|
1196
|
alpar@9
|
1197 Now the routine lpx_simplex (which is a driver to the simplex
|
alpar@9
|
1198 method for solving LP) is provided with the built-in LP
|
alpar@9
|
1199 presolver, which is a program that transforms the original LP
|
alpar@9
|
1200 problem to an equivalent LP problem, which may be easier for
|
alpar@9
|
1201 solving with the simplex method than the original one. Once the
|
alpar@9
|
1202 transformed LP has been solver, the presolver transforms its
|
alpar@9
|
1203 basic solution back to a corresponding basic solution of the
|
alpar@9
|
1204 original problem. For details about this feature please see the
|
alpar@9
|
1205 GLPK reference manual.
|
alpar@9
|
1206
|
alpar@9
|
1207 Currently the LP presolver implements the following features:
|
alpar@9
|
1208 * removing empty rows;
|
alpar@9
|
1209 * removing empty columns;
|
alpar@9
|
1210 * removing free rows;
|
alpar@9
|
1211 * removing fixed columns;
|
alpar@9
|
1212 * removing row singletons, which have the form of equations;
|
alpar@9
|
1213 * removing row singletons, which have the form of inequalities;
|
alpar@9
|
1214 * removing column singletons, which are implied slack variables;
|
alpar@9
|
1215 * fixing and removing column singletons, which are implied free
|
alpar@9
|
1216 variables;
|
alpar@9
|
1217 * removing forcing rows that involves fixing and removing the
|
alpar@9
|
1218 corresponding columns;
|
alpar@9
|
1219 * checking for primal and dual infeasibilities.
|
alpar@9
|
1220
|
alpar@9
|
1221 The LP presolver is also used by default in the stand-alone
|
alpar@9
|
1222 program glpsol. In order *not* to use it, the option --nopresol
|
alpar@9
|
1223 should be specified in the command-line.
|
alpar@9
|
1224
|
alpar@9
|
1225 CHANGES IN GLPK/L
|
alpar@9
|
1226 -----------------
|
alpar@9
|
1227
|
alpar@9
|
1228 The syntax and semantics of the GLPK/L modeling language was
|
alpar@9
|
1229 changed to allow declaration of "interval" sets. This means that
|
alpar@9
|
1230 now the user can declare a set, for example, as:
|
alpar@9
|
1231
|
alpar@9
|
1232 set task = [8:11];
|
alpar@9
|
1233
|
alpar@9
|
1234 that is exactly equivalent to the following declaration:
|
alpar@9
|
1235
|
alpar@9
|
1236 set task = (task_8, task_9, task_10, task_11);
|
alpar@9
|
1237
|
alpar@9
|
1238 For details see the language description.
|
alpar@9
|
1239
|
alpar@9
|
1240 JAVA INTERFACE
|
alpar@9
|
1241 --------------
|
alpar@9
|
1242
|
alpar@9
|
1243 Now GLPK includes the package GLPK JNI (Java Native Interface)
|
alpar@9
|
1244 that implements Java binding for GLPK. It allows Java programs
|
alpar@9
|
1245 to utilize GLPK in solving LP and MIP problems. For details see
|
alpar@9
|
1246 a brief user's guide in the subdirectory contrib/java-binding.
|
alpar@9
|
1247 This package was developed and programmed by Yuri Victorovich
|
alpar@9
|
1248 <yuri@gjt.org>, who contributed it to GLPK.
|
alpar@9
|
1249
|
alpar@9
|
1250 GLPK 3.2.4 (release date: Feb 18, 2003)
|
alpar@9
|
1251
|
alpar@9
|
1252 This is a bug-fix release. For details see ChangeLog.
|
alpar@9
|
1253
|
alpar@9
|
1254 GLPK 3.2.3 (release date: Nov 11, 2002)
|
alpar@9
|
1255
|
alpar@9
|
1256 A new implementation of the api routine lpx_integer which now
|
alpar@9
|
1257 is based on the b&b driver (which is based on the implicit
|
alpar@9
|
1258 enumeration suite) was included in the package. This new
|
alpar@9
|
1259 implementation has exactly the same functionality as the old
|
alpar@9
|
1260 version, so all changes are transparent to the api user.
|
alpar@9
|
1261
|
alpar@9
|
1262 Four new api routines were included in the package:
|
alpar@9
|
1263 lpx_check_kkt checks Karush-Kuhn-Tucker optmality conditions;
|
alpar@9
|
1264 lpx_read_bas reads predifined basis in MPS format;
|
alpar@9
|
1265 lpx_write_bas writes current basis in MPS format;
|
alpar@9
|
1266 lpx_write_lpt writes problem data in CPLEX LP format.
|
alpar@9
|
1267
|
alpar@9
|
1268 Also other minor improvements were made (for details see the
|
alpar@9
|
1269 file 'ChangeLog').
|
alpar@9
|
1270
|
alpar@9
|
1271 GLPK 3.2.2 (release date: Oct 14, 2002)
|
alpar@9
|
1272
|
alpar@9
|
1273 The api routine lpx_read_lpt was included in the package. It
|
alpar@9
|
1274 is similar to the routine lpx_read_mps and intended to read
|
alpar@9
|
1275 LP/MIP data prepared in CPLEX LP format. Description of this
|
alpar@9
|
1276 format is given in the GLPK reference manual, a new edition of
|
alpar@9
|
1277 which was also included in the distribution (see the files
|
alpar@9
|
1278 'refman.latex', 'refman.dvi', 'refman.ps' in the subdirectory
|
alpar@9
|
1279 'doc'). In order to use data files in CPLEX LP format with the
|
alpar@9
|
1280 solver glpsol the option '--lpt' should be specified in the
|
alpar@9
|
1281 command line.
|
alpar@9
|
1282
|
alpar@9
|
1283 Several bugs were fixed and some minor improvements were made
|
alpar@9
|
1284 (for details see the file 'ChangeLog').
|
alpar@9
|
1285
|
alpar@9
|
1286 GLPK 3.2.1 (release date: Aug 12, 2002)
|
alpar@9
|
1287
|
alpar@9
|
1288 Now GLPK includes a preliminary implementation of the
|
alpar@9
|
1289 branch-and-cut framework, which is a set of data structures and
|
alpar@9
|
1290 routines intended for developing branch-and-cut methods for
|
alpar@9
|
1291 solving mixed-integer and combinatorial optimization problems.
|
alpar@9
|
1292
|
alpar@9
|
1293 Detailed decsription of the branch-and-cut framework is given in
|
alpar@9
|
1294 the document "GLPK: A Preliminary Implementation of the
|
alpar@9
|
1295 Branch-And-Cut Framework" included in the distribution (see the
|
alpar@9
|
1296 file 'brcut.txt' in the subdirectory 'doc').
|
alpar@9
|
1297
|
alpar@9
|
1298 In order to illustrate how the GLPK branch-and-cut framework
|
alpar@9
|
1299 can be used for solving a particular optimization problem there
|
alpar@9
|
1300 is an example included in the package. This is a stand-alone
|
alpar@9
|
1301 program, TSPSOL, which is intended for solving to optimality the
|
alpar@9
|
1302 symmetric Traveling Salesman Problem (TSP), a classical problem
|
alpar@9
|
1303 of the combinatorial optimization (see the file 'tspsol.c' in
|
alpar@9
|
1304 the subdirectory 'sample').
|
alpar@9
|
1305
|
alpar@9
|
1306 GLPK 3.2 (release date: Jul 15, 2002)
|
alpar@9
|
1307
|
alpar@9
|
1308 New edition of the document "GLPK: Reference Manual" was
|
alpar@9
|
1309 included (see the files 'refman.latex', 'refman.dvi', and
|
alpar@9
|
1310 'refman.ps' in the subdirectory 'doc').
|
alpar@9
|
1311
|
alpar@9
|
1312 New edition of the document "GLPK: Modeling Language GLPK/L" was
|
alpar@9
|
1313 included (see the files 'lang.latex', 'lang.dvi', and 'lang.ps'
|
alpar@9
|
1314 in the subdirectory 'doc').
|
alpar@9
|
1315
|
alpar@9
|
1316 The following new API routines were added to the package:
|
alpar@9
|
1317
|
alpar@9
|
1318 lpx_transform_row (transform explicitly specified row);
|
alpar@9
|
1319 lpx_transform_col (transform explicitly specified column);
|
alpar@9
|
1320 lpx_prim_ratio_test (perform primal ratio test);
|
alpar@9
|
1321 lpx_dual_ratio_test (perform dual ratio test);
|
alpar@9
|
1322 lpx_interior (solve LP problem using interior point method);
|
alpar@9
|
1323 lpx_get_ips_stat (query status of interior point solution);
|
alpar@9
|
1324 lpx_get_ips_row (obtain row interior point solution);
|
alpar@9
|
1325 lpx_get_ips_col (obtain column interior point solution);
|
alpar@9
|
1326 lpx_get_ips_obj (obtain interior point value of obj.func.);
|
alpar@9
|
1327 lpx_read_lpm (read LP/MIP model written in GLPK/L);
|
alpar@9
|
1328 lpx_write_mps (write problem data using MPS format);
|
alpar@9
|
1329 lpx_print_ips (print interior point solution).
|
alpar@9
|
1330
|
alpar@9
|
1331 Detailed description of all these new API routines are given in
|
alpar@9
|
1332 the new edition of the reference manual.
|
alpar@9
|
1333
|
alpar@9
|
1334 New version of the stand-alone solver glpsol (which is based on
|
alpar@9
|
1335 the new API) was implemented.
|
alpar@9
|
1336
|
alpar@9
|
1337 So long as the new API (introduced in glpk 3.0) now provides
|
alpar@9
|
1338 all the functions, which were provided by the old API, the old
|
alpar@9
|
1339 API routines were removed from the package at all.
|
alpar@9
|
1340
|
alpar@9
|
1341 GLPK 3.1 (release date: May 27, 2002)
|
alpar@9
|
1342
|
alpar@9
|
1343 A preliminary implementation of new API routines was completed
|
alpar@9
|
1344 and included in the package.
|
alpar@9
|
1345
|
alpar@9
|
1346 These new API routines provide much more flexible interaction
|
alpar@9
|
1347 between the application program, LP/MIP problem instances, and
|
alpar@9
|
1348 solver routines. Based on completely changed data structures
|
alpar@9
|
1349 they are, however, similar to the API routines and provide the
|
alpar@9
|
1350 same functionality. Please note that three routines, namely,
|
alpar@9
|
1351 solving LPs using interior point method, reading model written
|
alpar@9
|
1352 in the GLPK/L modeling language, and writing problem data in
|
alpar@9
|
1353 the MPS format, are not implemented in the new API, however,
|
alpar@9
|
1354 these routines are planned to be implemented in the next version
|
alpar@9
|
1355 of the package.
|
alpar@9
|
1356
|
alpar@9
|
1357 A description of the new API routines is given in the document
|
alpar@9
|
1358 "GLPK Reference Manual", a draft edition of which is included
|
alpar@9
|
1359 in the package (see the files 'refman.latex', 'refman.dvi', and
|
alpar@9
|
1360 'refman.ps' in the subdirectory 'doc').
|
alpar@9
|
1361
|
alpar@9
|
1362 Although the old API routines are kept in the package, they are
|
alpar@9
|
1363 no longer supported and will be removed in the future.
|
alpar@9
|
1364
|
alpar@9
|
1365 GLPK 3.0.8 (release date: May 13, 2002)
|
alpar@9
|
1366
|
alpar@9
|
1367 A preliminary implementation of new API routines was included
|
alpar@9
|
1368 in the package. These new API routines are intended to provide
|
alpar@9
|
1369 much more flexible interaction between the application program,
|
alpar@9
|
1370 LP/MIP problem and solver routines. See the document "New GLPK
|
alpar@9
|
1371 API Routines" (the file 'newapi.txt' in the subdirectory 'doc')
|
alpar@9
|
1372 also included in the package.
|
alpar@9
|
1373
|
alpar@9
|
1374 The api routines glp_simplex2, glp_call_ipm1, glp_call_bbm1 were
|
alpar@9
|
1375 renamed, respectively, to glp_simplex, glp_interior, glp_integer
|
alpar@9
|
1376 in order to reflect changes in implementation. The api routines
|
alpar@9
|
1377 glp_call_rsm1, glp_simplex1, glp_pivot_in, glp_pivout_out were
|
alpar@9
|
1378 removed from the package since they are completely supreseded by
|
alpar@9
|
1379 the new API routines (however, these routines still can be found
|
alpar@9
|
1380 in the subdirectory 'oldsrc'). Please consult a new edition of
|
alpar@9
|
1381 the document "GLPK User's Guide" about all these changes in the
|
alpar@9
|
1382 existing api routines.
|
alpar@9
|
1383
|
alpar@9
|
1384 The document "GLPK Library Reference" was removed from the
|
alpar@9
|
1385 package (into the subdirectory 'oldsrc') since it describes the
|
alpar@9
|
1386 obsolete library routines, most of which are no longer used.
|
alpar@9
|
1387
|
alpar@9
|
1388 GLPK 3.0.7 (release date: Apr 22, 2002)
|
alpar@9
|
1389
|
alpar@9
|
1390 A new, more efficient implementation of the primal/dual simplex
|
alpar@9
|
1391 method was included in the package. Due to some improvements the
|
alpar@9
|
1392 simplex-based solver allows solving many LP problems faster and
|
alpar@9
|
1393 provides more reliable results. Note that the new implementation
|
alpar@9
|
1394 is currently incomplete and available only via the api routine
|
alpar@9
|
1395 glp_simplex2.
|
alpar@9
|
1396
|
alpar@9
|
1397 All the changes are transparent on API level.
|
alpar@9
|
1398
|
alpar@9
|
1399 GLPK 3.0.6 (release date: Mar 28, 2002)
|
alpar@9
|
1400
|
alpar@9
|
1401 New version of LU-factorization and basis maintenance routines
|
alpar@9
|
1402 (based on Forrest-Tomlin updating technique) was implemented.
|
alpar@9
|
1403 Since these new routines functionally supersede some routines
|
alpar@9
|
1404 (which implement other forms of the basis matrix) and make them
|
alpar@9
|
1405 obsolete, the latter were removed from the package (they still
|
alpar@9
|
1406 can be found in the subdirectory 'oldsrc').
|
alpar@9
|
1407
|
alpar@9
|
1408 All the changes are transparent on API level.
|
alpar@9
|
1409
|
alpar@9
|
1410 GLPK 3.0.5 (release date: Jan 29, 2002)
|
alpar@9
|
1411
|
alpar@9
|
1412 New edition of the document "GLPK User's Guide" was included in
|
alpar@9
|
1413 the distribution. Now it describes all additional API routines,
|
alpar@9
|
1414 which were recently added to the package.
|
alpar@9
|
1415
|
alpar@9
|
1416 Structure of the package was re-organized in order to make its
|
alpar@9
|
1417 maintenance easier (all small files in the subdurectory 'source'
|
alpar@9
|
1418 were merged in bigger units). These changes are transparent for
|
alpar@9
|
1419 the user.
|
alpar@9
|
1420
|
alpar@9
|
1421 GLPK 3.0.4 (release date: Dec 10, 2001)
|
alpar@9
|
1422
|
alpar@9
|
1423 A new, more efficient implementation of the two-phase primal
|
alpar@9
|
1424 simplex method was included in the package. Due to some new
|
alpar@9
|
1425 features (an advanced initial basis, projected steepest edge,
|
alpar@9
|
1426 recursive updating values and reduced costs) the new LP solver
|
alpar@9
|
1427 is faster and numerically more stable than the old one.
|
alpar@9
|
1428
|
alpar@9
|
1429 The new LP solver is available as API routine glp_simplex2 and
|
alpar@9
|
1430 has the same purpose as API routine glp_call_rsm1. For detailed
|
alpar@9
|
1431 specification see the file 'newapi.txt' in the directory 'doc'.
|
alpar@9
|
1432
|
alpar@9
|
1433 Now the new LP solver is also used by default to solve an
|
alpar@9
|
1434 initial LP problem in the branch-and-bound routine glp_call_bbm1
|
alpar@9
|
1435 instead the routine rsm1_driver. Note that the branch-and-bound
|
alpar@9
|
1436 procedure itself is still based on rsm1_driver.
|
alpar@9
|
1437
|
alpar@9
|
1438 The new LP solver is also used as default solver in GLPSOL for
|
alpar@9
|
1439 solving LP and MIP problems. In order to choose the old solver
|
alpar@9
|
1440 the option '--old-sim' can be specified in the command line.
|
alpar@9
|
1441
|
alpar@9
|
1442 GLPK 3.0.3 (release date: Oct 03, 2001)
|
alpar@9
|
1443
|
alpar@9
|
1444 Some minor changes were made in the simplex method routines in
|
alpar@9
|
1445 order to improve numerical stability of the method.
|
alpar@9
|
1446
|
alpar@9
|
1447 GLPK 3.0.2 (release date: Sep 24, 2001)
|
alpar@9
|
1448
|
alpar@9
|
1449 A new implementation of the basis maintaining routines was
|
alpar@9
|
1450 included in the package. These routines, which are based on so
|
alpar@9
|
1451 called FHV-factorization (a variety of LU-factorization) of the
|
alpar@9
|
1452 basis matrix and Gustavson's data structures, allows performing
|
alpar@9
|
1453 the main operations faster at the expense of some worsening
|
alpar@9
|
1454 numerical accuracy.
|
alpar@9
|
1455
|
alpar@9
|
1456 AFI (Advanced Form of the Inverse), which is the form of the
|
alpar@9
|
1457 basis matrix based on FHV-factorization, is available via the
|
alpar@9
|
1458 parameter form = 3 (on API level) or via the option --afi (in
|
alpar@9
|
1459 GLPSOL solver).
|
alpar@9
|
1460
|
alpar@9
|
1461 GLPK 3.0.1 (release date: Aug 01, 2001)
|
alpar@9
|
1462
|
alpar@9
|
1463 Old GLPK API routines have been removed from the package.
|
alpar@9
|
1464
|
alpar@9
|
1465 New GLPK API routines were added:
|
alpar@9
|
1466
|
alpar@9
|
1467 - scaling routines;
|
alpar@9
|
1468
|
alpar@9
|
1469 - a routine for writing problem data in MPS format;
|
alpar@9
|
1470
|
alpar@9
|
1471 - a comprehensive driver to the simplex method;
|
alpar@9
|
1472
|
alpar@9
|
1473 - basis maintaining routines.
|
alpar@9
|
1474
|
alpar@9
|
1475 A description of the new API routines is given in the document
|
alpar@9
|
1476 "Additional GLPK API Routines". This document is included into
|
alpar@9
|
1477 the distribution in plain text format (see the file 'newapi.txt'
|
alpar@9
|
1478 in the subdirectory 'doc').
|
alpar@9
|
1479
|
alpar@9
|
1480 Now the distribution includes a non-trivial example of using
|
alpar@9
|
1481 GLPK as a base LP solver for Concorde, a well known program that
|
alpar@9
|
1482 solves Traveling Salesman Problem (TSP). For further details see
|
alpar@9
|
1483 comments in the file 'sample/lpglpk30.c'.
|
alpar@9
|
1484
|
alpar@9
|
1485 GLPK 3.0 (release date: Jul 19, 2001)
|
alpar@9
|
1486
|
alpar@9
|
1487 Now GLPK is provided with new API, which being more flexible
|
alpar@9
|
1488 can be used in more complex algorithmic schemes.
|
alpar@9
|
1489
|
alpar@9
|
1490 New edition of the document "GLPK User's Guide" is included in
|
alpar@9
|
1491 the distribution. Now it completely corresponds to the new GLPK
|
alpar@9
|
1492 API routines.
|
alpar@9
|
1493
|
alpar@9
|
1494 Old API routines are not removed yet from the package, however
|
alpar@9
|
1495 they became obsolete and therefore should not be used. Since now
|
alpar@9
|
1496 the header glpk.h corresponds to new API, in order to compile
|
alpar@9
|
1497 existing programs that use old GLPK API routines the statement
|
alpar@9
|
1498
|
alpar@9
|
1499 #define GLP_OLD_API
|
alpar@9
|
1500
|
alpar@9
|
1501 should be inserted before the statement
|
alpar@9
|
1502
|
alpar@9
|
1503 #include "glpk.h"
|
alpar@9
|
1504
|
alpar@9
|
1505 GLPK 2.4.1 (release date: Jun 14, 2001)
|
alpar@9
|
1506
|
alpar@9
|
1507 The document "Modeling language GLPK/L" is included into the
|
alpar@9
|
1508 distribution in texinfo format.
|
alpar@9
|
1509
|
alpar@9
|
1510 New edition of the document "GLPK User's Guide" is included in
|
alpar@9
|
1511 the distribution. Now it describes all additional API routines
|
alpar@9
|
1512 which were recently added to the package.
|
alpar@9
|
1513
|
alpar@9
|
1514 GLPK 2.4 (release date: May 10, 2001)
|
alpar@9
|
1515
|
alpar@9
|
1516 Now GLPK includes an implementation of a preliminary version
|
alpar@9
|
1517 of the GLPK/L modeling language. This language is intended for
|
alpar@9
|
1518 writing mathematcal programming models. The name GLPK/L is
|
alpar@9
|
1519 derived from GNU Linear Programming Kit Language.
|
alpar@9
|
1520
|
alpar@9
|
1521 A brief description of the GLPK/L language is given in the
|
alpar@9
|
1522 document "GLPK/L Modeling Language: A Brief Description". This
|
alpar@9
|
1523 document is included into the distribution in plain text format
|
alpar@9
|
1524 (see the file 'language.txt' in the subdirectory 'doc').
|
alpar@9
|
1525
|
alpar@9
|
1526 The language processor (which is a program that analyzes model
|
alpar@9
|
1527 description written in GLPK/L and translates it to internal data
|
alpar@9
|
1528 structures) is available as the GLPK API routine.
|
alpar@9
|
1529
|
alpar@9
|
1530 The stand-alone solver GLPSOL now is able: a) to process model
|
alpar@9
|
1531 descriptions written in the GLPK/L language; b) to solve pure LP
|
alpar@9
|
1532 problems using the interior point method (therefore the program
|
alpar@9
|
1533 GLPIPM was removed from the package).
|
alpar@9
|
1534
|
alpar@9
|
1535 GLPK 2.3 (release date: Apr 09, 2001)
|
alpar@9
|
1536
|
alpar@9
|
1537 New edition of the document "GLPK User's Guide" is included in
|
alpar@9
|
1538 the distribution. Now it describes all additional API routines
|
alpar@9
|
1539 which were recently added to the package.
|
alpar@9
|
1540
|
alpar@9
|
1541 The MIP solver was fully re-programmed in order to improve its
|
alpar@9
|
1542 robustness and performance. In particular, a basis recovering
|
alpar@9
|
1543 procedure was implemented (this procedure allows switching to
|
alpar@9
|
1544 the primal simplex method in case when the dual simplex method
|
alpar@9
|
1545 fails).
|
alpar@9
|
1546
|
alpar@9
|
1547 GLPK 2.2 (release date: Mar 15, 2001)
|
alpar@9
|
1548
|
alpar@9
|
1549 Now GLPK includes a tentative implementation of the
|
alpar@9
|
1550 branch-and-bound procedure based on the dual simplex method for
|
alpar@9
|
1551 mixed integer linear programming (MIP).
|
alpar@9
|
1552
|
alpar@9
|
1553 Complete description of this new feature of the package is given
|
alpar@9
|
1554 in the preliminary document "Mixed Integer Linear Programming
|
alpar@9
|
1555 Using GLPK Version 2.2 (Supplement to GLPK User's Guide)". This
|
alpar@9
|
1556 document is included into the distribution in plain text format
|
alpar@9
|
1557 (see the file 'mip.txt' in the subdirectory 'doc').
|
alpar@9
|
1558
|
alpar@9
|
1559 The MIP solver (glp_integer) can be used as GLPK API routine in
|
alpar@9
|
1560 the same way as the pure LP solver (glp_simplex).
|
alpar@9
|
1561
|
alpar@9
|
1562 The stand-alone program 'glpsol' is now able to solve LP as well
|
alpar@9
|
1563 as MIP problems.
|
alpar@9
|
1564
|
alpar@9
|
1565 Note that the current version of GLPK MIP solver is based on
|
alpar@9
|
1566 easiest heuristics for branching and backtrackng. Therefore the
|
alpar@9
|
1567 solver is fit mainly for MIP problems which are not very hard
|
alpar@9
|
1568 and have few integer variables.
|
alpar@9
|
1569
|
alpar@9
|
1570 GLPK 2.1 (release date: Feb 19, 2001)
|
alpar@9
|
1571
|
alpar@9
|
1572 The document "GLPK Implementation of the Revised Simplex Method"
|
alpar@9
|
1573 is included into the distribution. This document describes most
|
alpar@9
|
1574 of routines related to the revised simplex method.
|
alpar@9
|
1575
|
alpar@9
|
1576 GLPK 2.0 (release date: Jan 25, 2001)
|
alpar@9
|
1577
|
alpar@9
|
1578 Now GLPK includes a tentative implementation of the primal-dual
|
alpar@9
|
1579 interior point method for large-scale linear programming.
|
alpar@9
|
1580
|
alpar@9
|
1581 The interior point solver can be used as GLPK API routine in the
|
alpar@9
|
1582 same manner as the simplex method solver (glp_simplex):
|
alpar@9
|
1583
|
alpar@9
|
1584 ret = glp_interior();
|
alpar@9
|
1585
|
alpar@9
|
1586 Note that currently the interior point solver implemented in
|
alpar@9
|
1587 GLPK doesn't include many important features, in particular:
|
alpar@9
|
1588
|
alpar@9
|
1589 * it can't process dense columns; therefore if the problem has
|
alpar@9
|
1590 dense columns, the solving will be extremely inefficient;
|
alpar@9
|
1591
|
alpar@9
|
1592 * it has no special features against numerical unstability;
|
alpar@9
|
1593 some problems may cause premature termination of the solving
|
alpar@9
|
1594 when the matrix A*D*A' becomes ill-conditioned;
|
alpar@9
|
1595
|
alpar@9
|
1596 * it computes only values of primal (auxiliary and structural)
|
alpar@9
|
1597 variables and doesn't compute values of dual variables (i.e.
|
alpar@9
|
1598 reduced costs) which are just set to zero;
|
alpar@9
|
1599
|
alpar@9
|
1600 * it doesn't identify optimal basis corresponding to the found
|
alpar@9
|
1601 interior point solution; all variables in the found solution
|
alpar@9
|
1602 are just marked as basic variables.
|
alpar@9
|
1603
|
alpar@9
|
1604 GLPK also includes a stand-alone program 'glpipm' which is a
|
alpar@9
|
1605 demo based on the interior point method. It may be used in the
|
alpar@9
|
1606 same way as the program 'glpsol' that is based on the simplex
|
alpar@9
|
1607 method.
|