1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580
|
GLPK 4.8 (release date: Jan 12, 2005)
Core simplex method and interior-point method routines were
re-implemented and now they use a new, "storage-by-rows" sparse
matrix format (unlike previous versions where linked lists were
used to represent sparse matrices). For details see ChangeLog.
Also a minor bug was fixed in API routine lpx_read_cpxlp.
GLPK 4.7 (release date: Aug 23, 2004)
Now GLPK supports free MPS format. Two new API routines
lpx_read_freemps (to read problem data in free MPS format) and
lpx_write_freemps (to write problem data in free MPS format)
were added. This feature is also available in the solver glpsol
via new command-line options --freemps and --wfreemps. For more
details see the GLPK reference manual.
API routines lpx_read_cpxlp and lpx_write_cpxlp for reading and
writing problem data in CPLEX LP format were re-implemented to
allow long symbolic names (up to 255 characters).
The following three modules were temporarily removed from the
GLPK distribution due to licensing problems: DELI (an interface
module to Delphi), GLPKMEX (an interface module to Matlab), and
JNI (an interface module to Java).
GLPK 4.6 (release date: Aug 04, 2004)
Three new statements were implemented in the GNU MathProg
language: solve, printf, and for. Their detailed description can
be found in the GLPK documentation included in the distribution.
(See also a sample model, examples/queens.mod, which illustrates
using these new statements.)
Two new API routines were added to the package: lpx_read_prob
and lpx_write_prob. They allow reading/writing problem data in
GNU LP low-level text format.
Three new command-line options were implemented in the LP/MIP
solver glpsol: --glp (to read problem data in GNU LP format),
--wglp (to write problem data in GNU LP format), and --name (to
change problem name). Now glpsol also supports processing models
where the new statements (see above) are used.
A new version of GLPKMEX, a Matlab MEX interface to GLPK, was
included. For more details see contrib/glpkmex/ChangeLog.
GLPK 4.5 (release date: Jul 19, 2004)
The branch-and-bound solver was completely re-implemented.
Some modifications were made in memory allocation routines that
allows using the package on 64-bit platforms.
For more details see ChangeLog.
GLPK 4.4 (release date: Jan 17, 2004)
All API routines were re-implemented using new data structures.
The new implementation provides the same specifications and
functionality of API routines as the old one, however, it has
some important advantages, in particular:
* linked lists are used everywhere that allows creating and
modifying the problem object as efficiently as possible
* all data stored in the problem object are non-scaled (even if
the internal scaling is used) that prevents distortion of the
original problem data
* solution components obtained by the solver remain available
even if the problem object has been modified
* no solver-specific data are used in the new data structures
that allows attaching any external lp/mip solver using GLPK
API as an uniform interface
Note that some API routines became obsolete being replaced by
new, more convenient routines. These obsolete routines are kept
for backward compatibility, however, they will be removed in
the future. For more details please see ChangeLog and the GLPK
Reference Manual.
New edition of the GLPK Reference Manual was included in the
distribution.
GLPKMEX, a Matlab MEX interface to GLPK package, contributed by
Nicolo Giorgetti <giorgetti@dii.unisi.it> was included in the
distribution.
GLPK FAQ contributed by Harley Mackenzie <hjm@bigpond.com> was
included in the distribution.
GLPK 4.3 (release date: Dec 12, 2003)
The bug, due to which the standard math library is not linked
on building the package on some platforms, was fixed.
The following new built-in functions were added to the MathProg
language: round, trunc, Irand224, Uniform01, Uniform, Normal01,
Normal. For details see the language description.
The MathProg syntax was changed to allow writing 'subj to' that
means 'subject to'.
The new api routine lpx_get_ray_info was added. It is intended
to determine which (non-basic) variable causes unboundness. For
details see the reference manual.
The module glpmps.c was changed to avoid compilation errors on
building the package on Mac OS X.
Several typos was fixed and some new material was added to the
GLPK documentation.
GLPK 4.2 (release date: Nov 14, 2003)
A preliminary implementation of the Integer Optimization Suite
(IOS) was included in the package. The Branch-and-Cut Framework
being completely superseded by IOS was removed from the package.
New API routine lpx_print_sens_bnds intended for bounds
sensitivity analysis was contributed to GLPK by Brady Hunsaker
<hunsaker@engr.pitt.edu>. This function is also available in
the solver glpsol (via command-line option --bounds).
An improved version of GLPK JNI (Java Native Interface) was
contributed by Chris Rosebrugh <cpr@pobox.com>.
GLPK DELI (Delphi Interface) was contributed by Ivo van Baren
<i.van.baren@freeler.nl>.
Several makefiles were added to allow compiling GLPK on some
non-GNU 32-bit platforms:
* Windows single-threaded static library, Visual C++ 6.0
* Windows multi-threaded dynamic library, Visual C++ 6.0
* Windows single-threaded static library, Borland C++ 5.2
* DOS single-threaded static library, Digital Mars C++ 7.50
And, of course, some bugs were fixed.
For more details see ChangeLog.
GLPK 4.1 (release date: Aug 23, 2003)
Some improvements were made in the lp/mip solver routines and
several bugs were fixed in the model translator.
For more details see ChangeLog.
GLPK 4.0 (release date: May 06, 2003)
Now GLPK supports the GNU MathProg modeling language, which is
a subset of the AMPL modeling language.
The document "GLPK: Modeling Language GNU MathProg" included in
the distribution is a complete description of GNU MathProg. (See
the files lang.latex, lang.dvi, and lang.ps in the subdirectory
'doc'. See also some examples in the subdirectory 'sample'.)
New version of the solver glpsol, which supports models written
in GNU MathProg, was implemented. (Brief instructions how to use
glpsol can be found in the GNU MathProg documentation.)
The GLPK/L modeling language is no more supported. The reason is
that GNU MathProg being much more powerful completely supersedes
all features of GLPK/L.
GLPK 3.3 (release date: Mar 25, 2003)
LP PRESOLVER
------------
Now the routine lpx_simplex (which is a driver to the simplex
method for solving LP) is provided with the built-in LP
presolver, which is a program that transforms the original LP
problem to an equivalent LP problem, which may be easier for
solving with the simplex method than the original one. Once the
transformed LP has been solver, the presolver transforms its
basic solution back to a corresponding basic solution of the
original problem. For details about this feature please see the
GLPK reference manual.
Currently the LP presolver implements the following features:
* removing empty rows;
* removing empty columns;
* removing free rows;
* removing fixed columns;
* removing row singletons, which have the form of equations;
* removing row singletons, which have the form of inequalities;
* removing column singletons, which are implied slack variables;
* fixing and removing column singletons, which are implied free
variables;
* removing forcing rows that involves fixing and removing the
corresponding columns;
* checking for primal and dual infeasibilities.
The LP presolver is also used by default in the stand-alone
program glpsol. In order *not* to use it, the option --nopresol
should be specified in the command-line.
CHANGES IN GLPK/L
-----------------
The syntax and semantics of the GLPK/L modeling language was
changed to allow declaration of "interval" sets. This means that
now the user can declare a set, for example, as:
set task = [8:11];
that is exactly equivalent to the following declaration:
set task = (task_8, task_9, task_10, task_11);
For details see the language description.
JAVA INTERFACE
--------------
Now GLPK includes the package GLPK JNI (Java Native Interface)
that implements Java binding for GLPK. It allows Java programs
to utilize GLPK in solving LP and MIP problems. For details see
a brief user's guide in the subdirectory contrib/java-binding.
This package was developed and programmed by Yuri Victorovich
<yuri@gjt.org>, who contributed it to GLPK.
GLPK 3.2.4 (release date: Feb 18, 2003)
This is a bug-fix release. For details see ChangeLog.
GLPK 3.2.3 (release date: Nov 11, 2002)
A new implementation of the api routine lpx_integer which now
is based on the b&b driver (which is based on the implicit
enumeration suite) was included in the package. This new
implementation has exactly the same functionality as the old
version, so all changes are transparent to the api user.
Four new api routines were included in the package:
lpx_check_kkt checks Karush-Kuhn-Tucker optmality conditions;
lpx_read_bas reads predifined basis in MPS format;
lpx_write_bas writes current basis in MPS format;
lpx_write_lpt writes problem data in CPLEX LP format.
Also other minor improvements were made (for details see the
file 'ChangeLog').
GLPK 3.2.2 (release date: Oct 14, 2002)
The api routine lpx_read_lpt was included in the package. It
is similar to the routine lpx_read_mps and intended to read
LP/MIP data prepared in CPLEX LP format. Description of this
format is given in the GLPK reference manual, a new edition of
which was also included in the distribution (see the files
'refman.latex', 'refman.dvi', 'refman.ps' in the subdirectory
'doc'). In order to use data files in CPLEX LP format with the
solver glpsol the option '--lpt' should be specified in the
command line.
Several bugs were fixed and some minor improvements were made
(for details see the file 'ChangeLog').
GLPK 3.2.1 (release date: Aug 12, 2002)
Now GLPK includes a preliminary implementation of the
branch-and-cut framework, which is a set of data structures and
routines intended for developing branch-and-cut methods for
solving mixed-integer and combinatorial optimization problems.
Detailed decsription of the branch-and-cut framework is given in
the document "GLPK: A Preliminary Implementation of the
Branch-And-Cut Framework" included in the distribution (see the
file 'brcut.txt' in the subdirectory 'doc').
In order to illustrate how the GLPK branch-and-cut framework
can be used for solving a particular optimization problem there
is an example included in the package. This is a stand-alone
program, TSPSOL, which is intended for solving to optimality the
symmetric Traveling Salesman Problem (TSP), a classical problem
of the combinatorial optimization (see the file 'tspsol.c' in
the subdirectory 'sample').
GLPK 3.2 (release date: Jul 15, 2002)
New edition of the document "GLPK: Reference Manual" was
included (see the files 'refman.latex', 'refman.dvi', and
'refman.ps' in the subdirectory 'doc').
New edition of the document "GLPK: Modeling Language GLPK/L" was
included (see the files 'lang.latex', 'lang.dvi', and 'lang.ps'
in the subdirectory 'doc').
The following new API routines were added to the package:
lpx_transform_row (transform explicitly specified row);
lpx_transform_col (transform explicitly specified column);
lpx_prim_ratio_test (perform primal ratio test);
lpx_dual_ratio_test (perform dual ratio test);
lpx_interior (solve LP problem using interior point method);
lpx_get_ips_stat (query status of interior point solution);
lpx_get_ips_row (obtain row interior point solution);
lpx_get_ips_col (obtain column interior point solution);
lpx_get_ips_obj (obtain interior point value of obj.func.);
lpx_read_lpm (read LP/MIP model written in GLPK/L);
lpx_write_mps (write problem data using MPS format);
lpx_print_ips (print interior point solution).
Detailed description of all these new API routines are given in
the new edition of the reference manual.
New version of the stand-alone solver glpsol (which is based on
the new API) was implemented.
So long as the new API (introduced in glpk 3.0) now provides
all the functions, which were provided by the old API, the old
API routines were removed from the package at all.
GLPK 3.1 (release date: May 27, 2002)
A preliminary implementation of new API routines was completed
and included in the package.
These new API routines provide much more flexible interaction
between the application program, LP/MIP problem instances, and
solver routines. Based on completely changed data structures
they are, however, similar to the API routines and provide the
same functionality. Please note that three routines, namely,
solving LPs using interior point method, reading model written
in the GLPK/L modeling language, and writing problem data in
the MPS format, are not implemented in the new API, however,
these routines are planned to be implemented in the next version
of the package.
A description of the new API routines is given in the document
"GLPK Reference Manual", a draft edition of which is included
in the package (see the files 'refman.latex', 'refman.dvi', and
'refman.ps' in the subdirectory 'doc').
Although the old API routines are kept in the package, they are
no longer supported and will be removed in the future.
GLPK 3.0.8 (release date: May 13, 2002)
A preliminary implementation of new API routines was included
in the package. These new API routines are intended to provide
much more flexible interaction between the application program,
LP/MIP problem and solver routines. See the document "New GLPK
API Routines" (the file 'newapi.txt' in the subdirectory 'doc')
also included in the package.
The api routines glp_simplex2, glp_call_ipm1, glp_call_bbm1 were
renamed, respectively, to glp_simplex, glp_interior, glp_integer
in order to reflect changes in implementation. The api routines
glp_call_rsm1, glp_simplex1, glp_pivot_in, glp_pivout_out were
removed from the package since they are completely supreseded by
the new API routines (however, these routines still can be found
in the subdirectory 'oldsrc'). Please consult a new edition of
the document "GLPK User's Guide" about all these changes in the
existing api routines.
The document "GLPK Library Reference" was removed from the
package (into the subdirectory 'oldsrc') since it describes the
obsolete library routines, most of which are no longer used.
GLPK 3.0.7 (release date: Apr 22, 2002)
A new, more efficient implementation of the primal/dual simplex
method was included in the package. Due to some improvements the
simplex-based solver allows solving many LP problems faster and
provides more reliable results. Note that the new implementation
is currently incomplete and available only via the api routine
glp_simplex2.
All the changes are transparent on API level.
GLPK 3.0.6 (release date: Mar 28, 2002)
New version of LU-factorization and basis maintenance routines
(based on Forrest-Tomlin updating technique) was implemented.
Since these new routines functionally supersede some routines
(which implement other forms of the basis matrix) and make them
obsolete, the latter were removed from the package (they still
can be found in the subdirectory 'oldsrc').
All the changes are transparent on API level.
GLPK 3.0.5 (release date: Jan 29, 2002)
New edition of the document "GLPK User's Guide" was included in
the distribution. Now it describes all additional API routines,
which were recently added to the package.
Structure of the package was re-organized in order to make its
maintenance easier (all small files in the subdurectory 'source'
were merged in bigger units). These changes are transparent for
the user.
GLPK 3.0.4 (release date: Dec 10, 2001)
A new, more efficient implementation of the two-phase primal
simplex method was included in the package. Due to some new
features (an advanced initial basis, projected steepest edge,
recursive updating values and reduced costs) the new LP solver
is faster and numerically more stable than the old one.
The new LP solver is available as API routine glp_simplex2 and
has the same purpose as API routine glp_call_rsm1. For detailed
specification see the file 'newapi.txt' in the directory 'doc'.
Now the new LP solver is also used by default to solve an
initial LP problem in the branch-and-bound routine glp_call_bbm1
instead the routine rsm1_driver. Note that the branch-and-bound
procedure itself is still based on rsm1_driver.
The new LP solver is also used as default solver in GLPSOL for
solving LP and MIP problems. In order to choose the old solver
the option '--old-sim' can be specified in the command line.
GLPK 3.0.3 (release date: Oct 03, 2001)
Some minor changes were made in the simplex method routines in
order to improve numerical stability of the method.
GLPK 3.0.2 (release date: Sep 24, 2001)
A new implementation of the basis maintaining routines was
included in the package. These routines, which are based on so
called FHV-factorization (a variety of LU-factorization) of the
basis matrix and Gustavson's data structures, allows performing
the main operations faster at the expense of some worsening
numerical accuracy.
AFI (Advanced Form of the Inverse), which is the form of the
basis matrix based on FHV-factorization, is available via the
parameter form = 3 (on API level) or via the option --afi (in
GLPSOL solver).
GLPK 3.0.1 (release date: Aug 01, 2001)
Old GLPK API routines have been removed from the package.
New GLPK API routines were added:
- scaling routines;
- a routine for writing problem data in MPS format;
- a comprehensive driver to the simplex method;
- basis maintaining routines.
A description of the new API routines is given in the document
"Additional GLPK API Routines". This document is included into
the distribution in plain text format (see the file 'newapi.txt'
in the subdirectory 'doc').
Now the distribution includes a non-trivial example of using
GLPK as a base LP solver for Concorde, a well known program that
solves Traveling Salesman Problem (TSP). For further details see
comments in the file 'sample/lpglpk30.c'.
GLPK 3.0 (release date: Jul 19, 2001)
Now GLPK is provided with new API, which being more flexible
can be used in more complex algorithmic schemes.
New edition of the document "GLPK User's Guide" is included in
the distribution. Now it completely corresponds to the new GLPK
API routines.
Old API routines are not removed yet from the package, however
they became obsolete and therefore should not be used. Since now
the header glpk.h corresponds to new API, in order to compile
existing programs that use old GLPK API routines the statement
#define GLP_OLD_API
should be inserted before the statement
#include "glpk.h"
GLPK 2.4.1 (release date: Jun 14, 2001)
The document "Modeling language GLPK/L" is included into the
distribution in texinfo format.
New edition of the document "GLPK User's Guide" is included in
the distribution. Now it describes all additional API routines
which were recently added to the package.
GLPK 2.4 (release date: May 10, 2001)
Now GLPK includes an implementation of a preliminary version
of the GLPK/L modeling language. This language is intended for
writing mathematcal programming models. The name GLPK/L is
derived from GNU Linear Programming Kit Language.
A brief description of the GLPK/L language is given in the
document "GLPK/L Modeling Language: A Brief Description". This
document is included into the distribution in plain text format
(see the file 'language.txt' in the subdirectory 'doc').
The language processor (which is a program that analyzes model
description written in GLPK/L and translates it to internal data
structures) is available as the GLPK API routine.
The stand-alone solver GLPSOL now is able: a) to process model
descriptions written in the GLPK/L language; b) to solve pure LP
problems using the interior point method (therefore the program
GLPIPM was removed from the package).
GLPK 2.3 (release date: Apr 09, 2001)
New edition of the document "GLPK User's Guide" is included in
the distribution. Now it describes all additional API routines
which were recently added to the package.
The MIP solver was fully re-programmed in order to improve its
robustness and performance. In particular, a basis recovering
procedure was implemented (this procedure allows switching to
the primal simplex method in case when the dual simplex method
fails).
GLPK 2.2 (release date: Mar 15, 2001)
Now GLPK includes a tentative implementation of the
branch-and-bound procedure based on the dual simplex method for
mixed integer linear programming (MIP).
Complete description of this new feature of the package is given
in the preliminary document "Mixed Integer Linear Programming
Using GLPK Version 2.2 (Supplement to GLPK User's Guide)". This
document is included into the distribution in plain text format
(see the file 'mip.txt' in the subdirectory 'doc').
The MIP solver (glp_integer) can be used as GLPK API routine in
the same way as the pure LP solver (glp_simplex).
The stand-alone program 'glpsol' is now able to solve LP as well
as MIP problems.
Note that the current version of GLPK MIP solver is based on
easiest heuristics for branching and backtrackng. Therefore the
solver is fit mainly for MIP problems which are not very hard
and have few integer variables.
GLPK 2.1 (release date: Feb 19, 2001)
The document "GLPK Implementation of the Revised Simplex Method"
is included into the distribution. This document describes most
of routines related to the revised simplex method.
GLPK 2.0 (release date: Jan 25, 2001)
Now GLPK includes a tentative implementation of the primal-dual
interior point method for large-scale linear programming.
The interior point solver can be used as GLPK API routine in the
same manner as the simplex method solver (glp_simplex):
ret = glp_interior();
Note that currently the interior point solver implemented in
GLPK doesn't include many important features, in particular:
* it can't process dense columns; therefore if the problem has
dense columns, the solving will be extremely inefficient;
* it has no special features against numerical unstability;
some problems may cause premature termination of the solving
when the matrix A*D*A' becomes ill-conditioned;
* it computes only values of primal (auxiliary and structural)
variables and doesn't compute values of dual variables (i.e.
reduced costs) which are just set to zero;
* it doesn't identify optimal basis corresponding to the found
interior point solution; all variables in the found solution
are just marked as basic variables.
GLPK also includes a stand-alone program 'glpipm' which is a
demo based on the interior point method. It may be used in the
same way as the program 'glpsol' that is based on the simplex
method.
|