lemon-project-template-glpk

annotate deps/glpk/NEWS @ 11:4fc6ad2fb8a6

Test GLPK in src/main.cc
author Alpar Juttner <alpar@cs.elte.hu>
date Sun, 06 Nov 2011 21:43:29 +0100
parents
children
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.