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