20091104
gurobi.c, README.gurobi: fix a glitch with iisfind=1 on infeasible
problems: solve_result_num previously indicated a failure rather
than infeasible.
20091214
gurobi.c: add "cutoff" keyword to possibilities for $gurobi_options.
makefile.u: add rule for xsum.out.
README.gurobi: add brief MacOSX discussion.
20100309
gurobi.c: fix bugs in handling .ref and .sosno suffixes.
20100418
gurobi.c: extend for Gubobi 3.0; should continue to work with older
versions of Gurobi as well. New facilities include keywords for
requesting .sol files of alternative MIP solutions; new synonym
lpmethod for simplex and a way to select the (new) barrier algorithm
(lpmethod=2); new tolerances and an iteration limit for the barrier
method; control of crossover from barrier solution to basic solution;
"mipfocus" to help direct the MIP solver; "predual" to present the
dual of an LP to the solver; "pumppasses" to control the feasibility
pump; and "symmetry" to control the MIP solver's detection of
symmetry. See the output of "gurobi -=" for a summary of the
currently available keywords. Complete list of new keywords for
Gurobi 3.0: aggfill, ams_eps, ams_epsabs, ams_limit, ams_stub,
barconvtol, barcorrectors, bariterlim, barorder, crossover,
crossoverbasis, lpmethod, mipfocus, mipgapabs, networkcuts, param,
paramfile, predeprow, predual, prepases, pumppasses, resultfile,
rins, submipcuts, symmetry.
20100424
gurobi.c: fix a couple of typos in the "-=" output; correct
spelling of "prepasses" and for now make "prepases" a deprecated
synonym for "prepasses".
20100512
gurobi.c: adjust for a gratuitous parameter name change
("LogfileName" to "LogFile") between versions 2 and 3.
20100523
gurobi.c: adding keyword return_mipgap for returning suffixes
absmipgap and relmipgap on objectives and problems. (These values
could already be computed from the bestbound suffix.)
20100720
gurobi.c: distinguish explicitly zero initial guesses from those
that are zero by default. This affects MIP starting guesses.
20100928
gurobi.c: expand description of sos2 (shown with "gurobi -=").
20101021
gurobi.c: fix some bugs in statmsg() with error messages not
normally seen.
20101105
gurobi.c, README.gurobi: update for Gurobi 4.0.
20101115
gurobi.c: fix a bug (introduced in adjustments for Gurobi 4) that
sometimes caused the constant term in objectives to be treated as 0.
This affected the objective value reported.
20101207
gurobi.c, README.gurobi: set solve_result_num = 567 if the problem has
complementarity constraints.
20110322
gurobi.c: fix a bug in handling problems with integer variables
(including binary variables) and piecewise-linear terms: the wrong
variables were likely treated as integer. Fix a bug with "writeprob"
that could occur in problems with piecewise-linear terms: a call on
GRBupdatemodel() was missing, which could affect, e.g., a *.lp file
specified by writeprob.
20110426
gurobi.c, README.gurobi: update to Gurobi 4.5. The updated gurobi.c
should still work with earlier versions. The new .unbdd and .dunbdd
suffixes (for primal and dual rays of unboundedness) are not yet
reliable.
20110728
gurobi.c: fix a glitch with sos=1 in $gurobi_options that prevented
.sosno and .ref from being used in problems with only continuous
variables.
20110920
gurobi.c: add "method"; move the "lpmethod" description to "method"
and list lpmethod as a synonym for method. (Driver date 20110907.)
README.gurobi, makefile.*: minor tweaks for less dependence on the
particular version of Gurobi.
20111109
gurobi.c: fix a minor glitch in reporting the names of alternate
solution files generated when ams_stub is specified in $gurobi_options.
Update for use with Gurobi 4.6; new keywords:
presparsify
priorities
sifting
siftmethod
zeroobjnodes
The priorities keyword controls whether variable.priority values, if
available, are passed to Gurobi. (Default = yes.)
20120504
gurobi.c, README.gurobi, makefile.u: update for Gurobi 5.0. The
updated gurobi.c should still work with earlier versions of Gurobi.
20120511
gurobi.c: fix a bug (fault) in supplying a warm start.
20120524
gurobi.c: fix a typo in the "gurobi -=" output.
20120606
gurobi.c: fix a glitch in providing a dual initial guess (when
available from a previous solve) in problems with quadratic constraints,
leading to the message "Index out of range for attribute 'DStart'."
20120828
gurobi.c: on MIP problems, when basis >= 2 and method >= 2, change
method to 1 before trying to get the requested output basis. Also
adjust the description of "method" and remove "rootmethod", which
went away in Gurobi 4.0.
20120927
gurobi.c: adjust to return dual variables on quadratically constrained
problems with integer variables when qcpdual=1 is specified.
Also, for debugging, add ".fix_lp" and ".fix_mps" to the suffixes
accepted by the "writeprob" keyword.
20121006
Add keyword "version", to report version details before solving
the problem.
20121101
Fix a bug with problems involving both nonconvex piecewise-linear
terms and range constraints. The adjustments for ranges were wrong,
resulting in the error message "Index is out of range" or other trouble.
20121116
Minor tweaks to two error messages and other minor cleanups.
20130109
Update for Gurobi 5.1: add keywords impstartnodes and seed.
20130204
Fix an off-by-one error in the description of sos2 in the -= output.
20130206
Fix a possible fault, introduced 20120504 (for Gurobi versions >= 5),
with problems having a dual initial guess but no incoming basis.
20130328
Update for Gurobi 5.5: add keywords
concurrentmip
feasrelaxbigm
impstartnodes
numericfocus
seed
server
server_password
server_port
server_priority
server_timeout
serverlic
tunebase
tuneoutput
tuneresults
tunetimelimit
tunetrials
20130419
Correct the descriptions of "aggfill" (default value) and "cutoff" in
the "-=" output. When the objective is no better than cutoff, report
"objective cutoff" rather than "cutoff reached".
20131003
Updates for Gurobi 5.6. New keywords
disconnected
pool_mip
pool_password
pool_servers
pool_tunejobs
presos1bigm
presos2bigm
See the output of "gurobi -=" for details.
20131101
Add keyword "objrep" with description
objrep Whether to replace
minimize obj: v;
with
minimize obj: f(x)
when variable v appears linearly in exactly one
constraint of the form
s.t. c: v >= f(x);
or
s.t. c: v == f(x);
Possible objrep values:
0 = no
1 = yes for v >= f(x)
2 = yes for v == f(x) (default)
3 = yes in both cases
For maximization problems, ">= f(x)" is changed to
"<= f(x)" in the description above.
20131113
Fix a typo in the "gurobi -=" output: change "tuneparbase" to "tunebase"
(twice, in the description of "tunebase").
20131114
Fix a glitch, probably introduced in version 20131003, that kept "cuts"
from being recognized in $gurobi_options.
20140313
Fix a glitch (possible fault) with objrep.
20140324
Add ".rew" and ".rlp" to the possible suffixes used with "writeprob".
20141123
Updates for Gurobi 6.0. New keywords
lazy
pl_bigm
pool_mip
pool_password
pool_servers
See the output of "gurobi -=" for details.
On MIP problems, suppress returning a basis or solution sensitivities
unless a feasible solution has been found. New option basisdebug:
specifying basisdebug=1 restores the old behavior of trying to return
a basis and/or solution sensitivities (if requested) even when the
problem is infeasible or unbounded. Specifying basisdebug=2 causes
the "basis" and "solnsense" keywords to be honored only if an optimal
solution is found.
20141204
gurobi.c: add possible call on mqpcheckv_free(). Should be invisible,
aside from using less memory on some problems.
20141209
gurobi.c: add scale=2 to the description of scale.
20141223
gurobi.c: minor tweak for efficiency: do not check for a quadratic
objective if there are no nonlinear objectives.
20150102
gurobi.c: when server=... is specified, replay other option settings
so they affect the new Gurobi environment.
20150209
gurobi.c: when writeprob=... is specified and variable or constraint
names are available (via option gurobi_auxfiles), pass them to Gurobi
so they appear in the file or files written for writeprob keywords.
20150226
gurobi.c: when suffixes absmipgap, bestbound, and/or relmipgap
are requested, return them (as the description of "return_mipgap"
in the "gurobi -=" output says they should be) with infinite values
if no integer feasible solution has yet been found. Expand the
description of "bestbound" in the "gurobi -=" output.
20150228
gurobi.c: rework logic for suffixes absmipgap, bestbound, and
relmipgap so .bestbound can be returned in more cases.
20150304
gurobi.c: add keyword "pool_distmip" for specifying how many
machines from the server pool (if specified by pool_servers) should
be used for solving each MIP instance.
20150324
gurobi.c: correct description of keyword "threads", which applies
to the barrier algorithm as well as to MIP problems.
20150422
gurobi.c: arrange to return iis_table (for symbolic names of .iis
values) when returning an IIS that only involves constraints.
Hitherto, iis_table was only returned when returning an IIS that
involved some variables.
20150527
gurobi.c: fix glitches with compilation when DISALLOW_GUROBI_SERVER
is defined.
20151029
gurobi.c: update to Gurobi 6.5. New possible values 2, 3, and 4
for keyword "warmstart". See the "gurobi -=" output for details.
20151120
gurobi.c: adjust message about Gurobi not handling free rows.
20151125
gurobi.c: fix a glitch with "warmstart": the default and upper
limit values were interchanged.
20151223
gurobi.c: tweak error messages about bad incoming .sstatus values:
e.g., instead of _cstat[n] or _rstat[n], mention var_name(n).sstatus
or con_name(n).sstatus.
20160118
gurobi.c and README.gurobi: replace solve_result_num value 600 with
405 or 415 (for interrupted with or without a feasible solution,
respectively) and add new solve_result_num value 411, 412, 413 for
iteration, node, and time limits without a feasible solution.
20160310
gurobi.c: try to give a better error message (than "invalid license")
when the Gurobi compute server is used and no license is available.
20160607
gurobi.c: allow serverlic file to accept "computeserver" as a synonym
for "server" and "password" as a synonym for "server_password".
20161026
gurobi.c, README.gurobi: update for Gurobi 7.0. New keywords:
ams_mode, bestbndstop, bestobjstop, cloudid, cloudkey, cloudpool,
degenmoves, infproofcuts, multiobj, multiobjmethod, poolsearchmode,
poolsolutions. See the "gurobi -=" output for details.
20161028
gurobi.c, README.gurobi: fix a bug with indicator constraints
that affected some indicator constraints. Add keywords round and
round_reptol; see the "gurobi -=" output for details.
20161108
gurobi.c: add keywords miqcpmethod and premiqcpform. See the
"gurobi -=" output for details.
20170116
gurobi.c: fix a glitch with multiple objectives: the objective
used was not transmitted (via the .sol file) to the AMPL session.
20170307
gurobi.c: fix bugs setting solve_result_num values 101, 102, 103,
502, 524. Add possible solve_result_num values 104 and 570. Fix a
fault that happened if bestbndstop or bestobjstop was reached and a
solution was not available.
README.gurobi: add descriptions of solve_result_num values 103, 104,
and 570.
20170419
gurobi.c: fix glitches with "multiobj=1".
20170707
gurobi.c: add solve_result_num values 540, 541, 542 for trouble
with Gurobi Compute servers.
20170712
gurobi.c: update for Gurobi 7.5. New keyword startnodelimit.
When multiobj=1, objective-specific convergence tolerances and method
values may be assigned via keywords of the form obj_n_name, such
as obj_1_method for assigning a method value for the first objective.
20171211
gurobi.c, README.gurobi: adjust treatment of multiobj=1 and its
description. When asked to deal with multiple objectives, Gurobi
apparently ignores the originally supplied objective, requiring it to
be supplied a second time. Moreover, all objectives must be linear.
An attempt to supply, say, a quadratic objective when multiobj=1 now
results in new solve_result_num value 543.
20171215
gurobi.c: When multiobj=1 and there are several objectives,
report the value of each objective in the solve_message.
20180425
gurobi.c: update to Gurobi 8.0. New keywords cloudpriority,
partitionplace, server_insecure; withdrawn keyword: server_port.
See the "gurobi -=" output for details.
20180601
gurobi.c: for consistency with the cplex driver, add keywords
poolgap, poolgapabs, and poolstub as synonyms for ams_eps,
ams_epsabs, and ams_stub, respectively, and return in suffix
npool the number of alternative MIP solution files written.
These files have names obtained by appending "1.sol", "2.sol",
etc., to ams_stub. Suffix npool is on the objective and problem.
When ams_stub (or poolstub) is specified but ams_mode (or
poolsearchmode) is not, assume ams_mode=2.
20181017
gurobi.c: update to Gurobi 8.1. New possible value 2 for
"preqlinearize". See the "gurobi -=" output for details.
Also fix possible trouble (e.g., a fault) when "objrep" causes
one or more constraints, other then the last, to be removed.
20181023
gurobi.c: Adjust copyright text in "gurobi -v" output.
20181204
gurobi.c: move possible #define of NO_MOkwf up before the first
"#ifndef NO_MOkwf". This only matters for Gurobi versions prior
to 7.5.
20190315
gurobi.c: tweak for use with Gurobi versions prior to 7.0.
20190430
gurobi.c: allow alternate MIP solutions to be written (when
available) even if timelim is specified and is reached.
20191202
gurobi.c: update to Gurobi 9.0.0. New keywords: bqpcuts,
nonconvex, relaxliftcuts, rltcuts. See the "gurobi -=" output
for details.
20191211
gurobi.c: allow quadratic equality constraints when
"nonconvex=2" is specified.
20191216
gurobi.c: when "ams_stub=..." and "ams_mode=2" are specified
and one solution is found, set npool = 1 (rather then 0).
20200131
gurobi.c: when a "quadratic" constraints has no quadratic terms,
treat it as linear. Example: var x; var y; s.t. c: x*(y-y) == 0.
20200411
gurobi.c: when all variables are continuous and ams_stub is
specified, set .npool := 1 and make the solution available as
(ams_stub & '1.sol').
20200917
gurobi.c: Update to Gurobi 9.0.3. New keyword kappa to request
computation of a condition number of an optimal basis. To bypass a
gurobi bug with nonlinear constraints, for now an irreducible set of
infeasible constraints (keyword iisfind) will only be sought among
linear constraints.
20201130
gurobi.c: Update to Gurobi 9.1, which contains performance
improvements and bug fixes. Added new possible value (-1) to suffix
lazy to specify predefined user cuts. Added keywords integrality,
norelheurtime, norelheurwork; see "gurobi -=" for details.
No changes to gurobi.c for later GUROBI versions through 9.1.1.
20210929
gurobi.c: Fix a bug that caused an incoming basis to be ignored
when no constraints were in the basis.
20211001
gurobi.c: Fix a mistake in the changes of 20210929, and fix a
couple of glitches with #if lines.
20211008
gurobi.c: Fix a glitch with range constraints (only seen with AMPL's
option presolve 0).
20220124
gurobi.c: Update for Gurobi 9.5. New keywords: cloudhost,
concurrentwin, liftprojectcuts, lpwarmstart, memlimit, nlpheur,
presos1enc, presos2enc, work, worklimit; see "gurobi -=" for details.
New input suffixes (influencing Gurobi's behavior): iisforce,
iisforcelb, iisforceub, poolignore. New output suffixes (returned by
Gurobi on request): concurrentwinmethod, maxvio, sensrhshi2,
sensrhslo2, work.
20230310
gurobi.c: adjust to account for the fact that suf_sos() may change
nranges (the number of range constraints).