GLPK Changelog

What's new in GLPK 4.53

Feb 14, 2014
  • src/glpmps.c (glp_read_mps)
  • The code was changed to remove free rows at the end.
  • src/glpcpx.c (glp_read_lp)
  • A bug was fixed (explicit bounds for binaries not set).
  • src/glpenv07.c (z_fgetc)
  • A bug was fixed (Z_STREAM_END -> Z_OK). Thanks to Achim Gaedke
  • for bug report.
  • src/glpenv07.c
  • Replaced by src/env/stream.c.
  • src/glpenv08.c
  • Replaced by src/env/dlsup.c.
  • src/bflib/ifu.h, src/bflib/ifu.c
  • Re-implemented.
  • src/glpscf.h, src/glpscf.c
  • Replaced by IFU.
  • * src/glplpf.h, src/glplpf.c
  • Changed due to IFU.
  • * src/glpbfd.c
  • Changed due to LPF.
  • * src/glpapi06.c
  • Two API routines glp_get_it_cnt and glp_set_it_cnt were added.
  • Thanks to Joey Rios for suggestion.
  • * src/glplpx.h, src/glplpx01.c, src/glplpx02.c, src/glplpx03.c
  • All obsolete API routines were completely removed.
  • * examples/oldapi/lpx.h, examples/oldapi/lpx.c
  • A set of routines that simulate the old GLPK API (as defined
  • in 4.48) were added. Thanks to Jan Engelhardt
  • for suggestion.
  • * src/zlib/*
  • zlib 1.2.7 was downgraded to zlib 1.2.5 (from glpk 4.50) due to
  • bugs detected in zlib 1.2.7 on some 64-bit platforms. Thanks to
  • Carlo Baldassi for bug report.
  • * src/glpsql.c
  • Alignment bug was fixed. Thanks to Xypron
  • for suggestion.
  • * src/glpsql.c
  • #include and #include were commented
  • out to fix a namespace bug on compiling with MariaDB. Thanks to
  • Xypron for suggestion.

New in GLPK 4.52.1 (Feb 14, 2014)

  • src/Makefile.am
  • Version information bug was fixed.
  • src/proxy/proxy.c
  • A minor bug (incorrect use of glp_term_out) was fixed.
  • src/glpios03.c
  • The simple rounding heuristic routine was changed to check only
  • global constraints.
  • src/glpcpx.c
  • The code was changed to issue the warning message 'lower/upper
  • bound redefined' only once.

New in GLPK 4.52 (Jul 19, 2013)

  • Greedy heuristic to find maximum weight clique was implemented.
  • Conflict graph routines (used to generate clique cuts) were implemented.
  • New version of the clique cut generator was implemented. Now it is able to efficiently process very large and/or dense conflict graphs. Old rudimentary version was removed from the package.
  • Two data files for the maximum independent set problem (MISP) were added to illustrate efficiency of using the clique cuts.
  • Simple rounding heuristic applied for every node subproblem was implemented.
  • Some bugs were fixed in the proximity search heuristic routine.
  • New command-line option '--proxy [nnn]' was added to glpsol to enable using the proximity search heuristic.
  • A feature was added to switch to the primal simplex in case of stalling due to dual degeneracy (for GLP_DUALP only).
  • A bug (incorrect processing of LI column indicator) was fixed in the mps format reading routine.

New in GLPK 4.51 (Jun 21, 2013)

  • src/bflib/sgf.c, src/bflib/sgf.h
  • Singleton and dense phases of sparse Gaussian factorizer were implemented.
  • src/bflib/lufint.c, src/bflib/lufint.h
  • Interface routines to LU-factorization were added.
  • src/bflib/fhvint.c, src/bflib/fhvint.h
  • Interface routines to FHV-factorization were changed to use lufint.c routines.
  • src/glplpf.c, src/glplpf.h
  • Routines implementing Schur-complement version of the LP basis factorization were changed to use lufint.c routines.
  • src/glpbfd.c, src/glpbfd.h
  • Interface routines to the LP basis factorization were changed due to changes in glplpf.c routines.
  • src/glpluf.c, src/glpluf.c
  • Old version of LU-factorization was removed from the package. (This old version was used for 10 years since 3.0.6.)
  • src/misc/triang.c, src/misc/triang.h
  • Routine to find maximal triangular part of rectangular matrix was added.
  • src/glpini01.c
  • The API routine glp_adv_basis that constructs advanced initial LP basis was replaced by an improved version, which (unlike the old version) takes into account numerical values of constraint coefficients.
  • src/proxy/
  • Routines that implement the proximity search heuristic for MIP were added.
  • src/glpk.h
  • iocp.ps_heur was added to enable/disable proxy heuristic.
  • glpsol
  • --proxy command-line option was added.
  • src/zlib/
  • zlib general purpose compression library, version 1.2.7, was ANSIfied and modified according to GLPK requirements and included in the distribution as an external software module.
  • src/glpk.h, src/env/time.c
  • The API routine glp_time was changed to return double rather than glp_long.
  • src/glplib02.c
  • Routines that implement glp_long type (64-bit arithmetic) were removed from the package.
  • src/glpk.h, src/env/alloc.c
  • New API routine glp_alloc was added. It makes obsolete two API routines glp_malloc and glp_calloc which were replaced by macros to use glp_alloc (hence 36:0:0).
  • src/glpios10.c
  • A bug was fixed that caused numerical instability in the FPUMP heuristic (the bug was introduced in glpk 4.40).

New in GLPK 4.50 (Jun 3, 2013)

  • src/Makefile.am
  • Though API was not changed since 4.49, symbols _glp_lpx_* were removed from the export list, hence 35:0:0.
  • src/glpfhv.h, src/glpfhv.c
  • Old routines for FHV-factorization were removed.
  • src/bflib/*.h, src/bflib/*.c
  • New version of basis factorization routines, including routines for FHV-factorization, were added.
  • src/glpbfd.c
  • LP basis factorization driver was changed according to the new routines for FHV-factorization.
  • doc/glpk.tex
  • Some clarifications about using the name index routines were added.
  • doc/gmpl.tex
  • Some typos were corrected.
  • src/glprlx.c
  • A serious bug was *tentatively* fixed. This bug is inherited from the original Fortran version of the RELAX-IV code.
  • Unfortunately, the code is very intricate, so this bug is still under investigation.

New in GLPK 4.49 (Apr 17, 2013)

  • glprlx.c, glprlx.h
  • C version of the Fortran code RELAX-IV (relaxation method of Bertsekas and Tseng) was added.
  • glpapi17.c
  • API routine glp_mincost_relax4, which is a driver to RELAX-IV code, was added and documented.
  • glpnet03.c
  • API routine glp_netgen_prob (Klingman's standard network problems) was added and documented.
  • glpapi12.c
  • A bug (wrong dual feasibility test) was fixed in API routine glp_warm_up.
  • glpapi10.c
  • Obsolete API routine lpx_check_kkt was replaced by API routine glp_check_kkt.
  • glpk.h
  • All old API routines whose names begin with 'lpx_' were removed from API and no more available.
  • glpk.tex, graphs.tex
  • These documents were essentially reformatted.

New in GLPK 4.48.2 (Mar 9, 2013)

  • Patch to correct error in lpx_check_kkt.

New in GLPK 4.48.1 (Mar 9, 2013)

  • Patched to add missing symbols.
  • Patched to correct error in glp_warm_up.

New in GLPK 4.48 (Feb 2, 2013)

  • src/glpmps.c:
  • A bug in glp_write_mps was fixed. Thanks to Raniere Gaia Costa
  • da Silva for bug report.
  • glpk.h:
  • glp_prob declaration changed (now it is incomplete struct);
  • glp_tree declaration changed (now it is incomplete struct);
  • glp_tran declaration changed (now it is incomplete struct);
  • glp_long declaration removed;
  • glp_time declaration removed;
  • glp_difftime removed from API;
  • glp_data removed from API;
  • glp_sdf_* removed from API;
  • glp_mem_usage declaration changed (glp_long -> size_t);
  • glp_realloc declaration added (not documented yet).
  • glpenv.h, glpenv05.c:
  • Dynamic memory allocation routines were reimplemented.
  • glpk.h, glpnet03.c:
  • Routine glp_netgen_prob was added (not documented yet).
  • configure.ac:
  • Check for gmp.h was added.
  • w32/glpk.def, w64/glpk.def:
  • Changes were made to export only API symbols.

New in GLPK 4.47 (Sep 12, 2011)

  • New API routine glp_infeas1 to solve 0-1 feasibility problem was added and documented (see doc/cnfsat.pdf).
  • Some new preprocessor routines for SAT-CNF encoding, which are used by the routine glp_intfeas1, were added.
  • The header was modified due to additions.
  • The glpsol solver was modified to bypass model postprocessing if the solution reported is neither optimal nor feasible.
  • New glpsol options (--minisat and --objbnd) were added.
  • The paint-by-numbers puzzle model (pbn.mod) was modified to print solution in PostScript format and to check for multiple solutions. Some benchmark examples from encoded in MathProg were included in the distribution. For more details see examples/pbn/README and examples/pbn/pbn.pdf.
  • A minor bug was fixed to correctly build glpk in a separate directory.

New in GLPK 4.46 (Aug 11, 2011)

  • src/glpk.h, src/Makefile
  • glpk.h was relocated from 'include' to 'src', and 'include'
  • subdir was removed; src/Makefile.am was changed appropriately.
  • src/zlib/*.*
  • zlib general purpose compression library, version 1.2.5, was ANSIfied and modified according to GLPK requirements and included in the distribution as an external software module.
  • For details see src/zlib/README.
  • src/glpdmx.c
  • The following new API routines were added:
  • glp_read_cnfsat - read CNF-SAT problem data in DIMACS format
  • glp_check_cnfsat - check for CNF-SAT problem instance
  • glp_write_cnfsat - write CNF-SAT problem data in DIMACS format
  • src/minisat/*.*
  • MiniSat, a CNF-SAT solver, version 1.14.1, was ANSIfied and modified according to GLPK requirements and included in the distribution as an external software module.
  • For details see minisat/README and minisat/LICENSE.
  • src/glpapi19.c
  • The API routine glp_minisat1, which is a driver to the MiniSat solver, was included in the package.
  • doc/satcnf.*
  • The document "CNF Satisfiability Problem" was included in the package. It is a supplement to the GLPK Reference Manual.
  • src/glpapi20.c
  • New glpsol options (--cnf, --wcnf, and --minisat) was added.
  • glpsql.c
  • Some bugs were fixed.

New in GLPK 4.45 (Aug 11, 2011)

  • glplpx01.c
  • A bug (it_cnt) in routine reset_parms was fixed.
  • glpmpl03.c
  • A bug (print "text\") was fixed.
  • glpsql.c
  • A precision bug was fixed.
  • glpk.tex
  • Some typos were corrected.

New in GLPK 4.44 (Aug 11, 2011)

  • glpapi14.c glpmpl.h glpmpl01.c glpmpl03.c glpmpl04.c
  • Implemented suffixes for variables and constraints.
  • glpmpl06.c
  • Made changes to allow comment records in CSV files.
  • glpapi17.c
  • Added and documented new API routine glp_cpp to solve Critical
  • Path Problem.

New in GLPK 4.43 (Aug 11, 2011)

  • glplib.h, glplib.c, glpenv.h, glpenv.c
  • The module glpenv was split into two modules glpenv and glplib.
  • glpenv01.c, glpenv03.c, glpenv04.c, glpenv06.c
  • The following new API routines were added and documented:
  • glp_init_env, glp_free_env, glp_open_tee, glp_close_tee,
  • glp_error (macro), glp_difftime.
  • glpapi16.c
  • New API routine glp_top_sort (topological sorting of ayclic digraph) was added and documented.
  • glpapi17.c
  • A serious bug was fixed in the routine glp_asn_prob_hall.
  • glpnpp05.c
  • A bug was fixed in the LP/MIP preprocessor (hidden covering inequalities).
  • glpsql.c
  • Some improvements were made in the table driver (NULL data).
  • configure.ac
  • Changes were made to use .dylib rather than .so under Mac OS.

New in GLPK 4.42 (Aug 11, 2011)

  • glpapi01.c, glpapi11.c, glpapi12.c, glpdmx.c
  • The following new API routines were added and documented:
  • glp_check_dup (check for duplicate elements in sparse matrix);
  • glp_sort_matrix (sort elements of the constraint matrix);
  • glp_read_prob (read problem data in GLPK format);
  • glp_write_prob (write problem data in GLPK format);
  • glp_analyze_bound (analyze active bound of non-basic variable);
  • glp_analyze_coef (analyze obj. coefficient at basic variable);
  • glp_print_ranges (print sensitivity analysis report; replaces
  • lpx_print_sens_bnds).
  • glpapi20.c
  • New command-line options were added to glpsol:
  • glp (read problem data in GLPK format);
  • wglp (write problem data in GLPK format);
  • lp (replaces --cpxlp);
  • wlp (replaces --wcpxlp);
  • ranges (print sensitivity analysis report).
  • glpapi06.c
  • In the routine glp_init_smcp default value of the parameter out_frq was changed to 500 (it was 200).
  • glpipp.h, glpipp01.c, glpipp02.c
  • The old MIP preprocessor module was removed.
  • glpapi09.c
  • Now the MIP solver uses the new MIP preprocessor (NPP).
  • glplpx03.c
  • lpx_write_opb was disabled due to replacing IPP with NPP.
  • glpnet09.c
  • Kellerman's heuristic to cover edges by cliques was added.
  • glplib08.c
  • Recognition of special filenames "/dev/stdin", "/dev/stdout", and "/dev/stderr" was added.
  • glpk.tex
  • Chapter "Graph and network routines" was carried out from the reference manual as a separate document.

New in GLPK 4.41 (Aug 11, 2011)

  • glpapi12.c
  • The following new API routines were added:
  • glp_transform_row (replaces lpx_transform_row);
  • glp_transform_col (replaces lpx_transform_col);
  • glp_prim_rtest (replaces lpx_prim_ratio_test);
  • glp_dual_rtest (replaces lpx_dual_ratio_test).
  • Note that values returned by glp_prim_rtest and glp_dual_rtest
  • differ from the ones retutned by the deprecated routines.
  • glpnpp*.*
  • The LP/MIP preprocessor was essentially re-implemented.
  • glpios03.c
  • The feature to remove inactive cuts from the active subproblem was implemented.
  • glpios11.c
  • The feature processing cuts stored in the cut pool was improved (now it uses estimation of objective degradation).
  • glpscg.*
  • Obsolete implemetation of the conflict graph was removed.
  • glpmpl.h, glpmpl03.c, glpmpl04.c
  • FILE was replaced by XFILE to allow using GLPK I/O routines.
  • glpsql.c, examples/sql, doc/tables.tex
  • The SQL table driver was changed to allow multiple arguments separated by semicolon in SQL statements.
  • glpk.h, glpapi14.c
  • New API routine glp_time was added (not documented yet).
  • glpapi20.c
  • Two new options were added to glpsol: --seed value (initialize pseudo-random number generator used in MathProg model with specified seed value), and --ini filename (use as initial basis previously saved with -w option).
  • examples/xyacfs.mod
  • examples/dbf/*.*
  • w32/*.*, w64/*.*
  • Scripts to build GLPK with Microsoft Visual Studio 2010 were added.

New in GLPK 4.40 (Aug 11, 2011)

  • glpdmx.c
  • Two new API routines were added:
  • glp_read_ccdata (read graph in DIMACS clique/coloring format);
  • glp_write_ccdata (write graph in DIMACS clique/coloring format).
  • Also an example file examples/sample.col was added.
  • glpapi19.c, glpnet08.c
  • New API routine glp_wclique_exact was added. It is intended to
  • find a maximum weight clique with the exact algorithm
  • glpnpp02.c
  • A bug was fixed in the LP preprocessor (routine npp_empty_col).
  • glpios10.c
  • A bug was fixed and some improvements were made in the FPUMP
  • heuristic module.
  • glpapi12.c
  • A bug was fixed in the API routine glp_warm_up (dual feasibility test was incorrect in maximization case).
  • glpapi16.c
  • Two new API routines were added:
  • glp_del_vertices (remove vertices from graph);
  • glp_del_arc (remove arc from graph).
  • glpios09.c
  • The hybrid pseudocost branching heuristic was included in the
  • MIP solver. It is available on API level (iocp.br_tech should be set to GLP_BR_PCH) and in the stand-alone solver glpsol (via the command-line option --pcost). This heuristic may be useful on solving hard MIP instances.
  • glpios03.c
  • The branching heuristic was changed to switch to branching on most fractional variable if an lower bound of degradation of the objective is close to zero for all branching candidates.

New in GLPK 4.39 (Aug 11, 2011)

  • glpsdf.c
  • New API routines to read plain data files were added.
  • glpcpx.h, glpini.h, glpscl.h
  • These headers were removed.
  • glpcpx.c
  • API routines glp_read_lp and glp_write_lp to read/write files
  • in CPLEX LP format were re-implemented. Now glp_write_lp
  • correctly writes double-bounded (ranged) rows by introducing
  • slack variables rather than by duplicating the rows. The data
  • structure glp_cpxcp and routine glp_init_cpxcp were added.
  • amd/*
  • The 'xfree(NULL)' bug was fixed in the AMD routines.
  • glpapi16.c
  • New API routines glp_set_vertex_name, glp_create_v_index,
  • glp_find_vertex, and glp_delete_v_index were added.
  • glpdmx.c
  • New API routines glp_read_asnprob, glp_write_asnprob,
  • glp_read_ccformat, and glp_write_ccformat were added (the two
  • latter routines are not documented yet).
  • glpapi18.c
  • New API routines glp_check_asnprob, glp_asnprob_lp,
  • glp_asnprob_okalg, and glp_asnprob_hall were added.
  • glpini01.c, glpini02.c
  • The message "Crashing..." was changed to "Constructing initial
  • basis..."
  • glpapi14.c
  • New API routines glp_printf, glp_vprintf, glp_malloc,
  • glp_calloc, glp_free, and glp_assert were added.
  • glplpp.h, glplpp01.c, glplpp02.c
  • Old LP presolver routines were removed. Now glp_simplex uses
  • new preprocessing routines (see glpnpp).
  • glpapi12.c
  • New API routine glp_warm_up was added; it replaces the routine
  • lpx_warm_up.

New in GLPK 4.38 (Aug 11, 2011)

  • glpmps.c
  • API routines to read/write MPS files were re-implemented.
  • glpspx02.c
  • Some improvements were made in the dual simplex routine.
  • glpk.h
  • New structure glp_iptcp was added.
  • glpnpp.h, glpnpp01.c, glpnpp02.c
  • New LP/MIP preprocessor. Currently it includes only some basic
  • routines and used only in the interior-point solver.
  • glpapi08.c
  • API routine glp_interior was replaced by an improved version
  • (new LP/MIP preprocessor, new ordering algorithms).
  • New API routine glp_init_iptcp was added.
  • API routine glp_ipt_status may return two new statuses due to
  • changes in glp_interior.
  • glpsol.c
  • New command-line options were added (ordering algorithm used in
  • the interior-point solver).
  • amd/*.*, colamd/*.*
  • Two external software modules AMD and COLAMD/SYMAMD used in the
  • interior-point solver were included in the distribution.
  • For details see amd/README and colamd/README.
  • glpnet03.c, glpnet04.c, glpnet05.c
  • A minor bug was fixed (_G => G_).

New in GLPK 4.37 (Aug 11, 2011)

  • glpk.h
  • iocp.fp_heur was added to enable/disable fpump heuristic.
  • glpios10.c
  • ios_feas_pump was added (feasibility pump heuristic).
  • glpsol.c
  • fpump command-line option was added.
  • glpsds.c
  • Plain data set routines were added to facilitate reading plain
  • data in application programs. Currently these routines are not
  • in API, though declared in glpk.h.
  • glpapi08.c
  • A bug was fixed in the internal routine restore. (Due to this
  • bug dual solution components were computed incorrectly if the
  • problem was scaled.)
  • glpapi10.c, glpapi11.c
  • The following new API routines were added:
  • glp_print_sol (replaces lpx_print_sol);
  • glp_print_ipt (replaces lpx_print_ips);
  • glp_print_mip (replaces lpx_print_mip);
  • _glp_check_kkt (replaces lpx_check_kkt, lpx_check_int).
  • Now the routine lpx_print_prob (deprecated) is equivalent to
  • the routine glp_write_lp.
  • glpapi18.c, glpapi19.c
  • The following new API routines were added:
  • glp_read_graph (read graph from plain text file);
  • glp_write_graph (write graph to plain text file);
  • glp_weak_comp (find all weakly connected components);
  • glp_strong_comp (find all strongly connected components).
  • configure.ac, Makefile.am
  • Changes were made: (a) to allow using autoreconf/autoheader;
  • (b) to allow building glpk in a directory other than its source
  • directory. Thanks to Marco Atzeri for
  • bug report.
  • examples/shiftcover.mod
  • An example model in MathProg was added.