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