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