Gurobi Optimizer v10.0.1

Bug Fixes

  • Fixed issue with occasionally returning an invalid solution status in concurrent LP when barrier encounters numerical issues
  • Fixed numerical issue in outer approximation cuts that can lead to wrong answers for MIQCPs
  • Fixed a performance issue in OBBT that can lead to overshooting the time limit
  • Fixed issue with printing internal parameter settings to the log when using distributed workers in Gurobi Instant Cloud
  • Fixed race conditions when creating multiple Gurobi environments in parallel threads
  • Fixed small memory leak in lift-and-project cut seperator
  • Fixed wrong answer arising from sub-MIP cuts with “PoolGap=0” parameter setting
  • Fixed bug with applying an invalid lifting for quadratic constraints in presolve
  • Fixed potential segmentation fault in lifting for quadratic constraints in presolve
  • Fixed rare issue with occasionally using one thread more than allowed by the “Threads” parametrer
  • Fixed bug in orbital probing that can lead to wrong answers for symmetric models
  • Fixed bug in coefficient strengthening that can lead to wrong answers for models with tiny coefficients
  • Fixed bug with reporting wrong objective values in the log file of multi-objective solves
  • Fixed handling of user callback function when copying a model
  • Fixed inconsistency with handling variable bounds that are exactly -1e+20 or +1e+20
  • Fixed presolve reduction when general integer variables appear as squares in quadratic objective function
  • Fixed presolve reduction on quadratic objectives with maximization senseFixed bug in non-convex MIQCP with accepting an infeasible solution after domains became too tiny to branch on
  • Fixed bug with running feasibility pump multiple times during the solve
  • Fixed issue with wrong SOS types returned for remote environments and empty SOSs
  • Fixed inconsistency between version information in local and Compute Server log output
  • Fixed recording when computeIIS() is called for a Compute Server session
  • Fixed segmentation fault when writing an IIS model and variable or constraint tags are present
  • Fixed segmentation fault when using NodeMethod=2 for MIQCPs
  • Fixed issue that number of open Gurobi environments in a process was limited by OS resources
  • Fixed bug with creating the fixed model for models that contain SOS2 constraints
  • Fixed wrong answer for MIQCPs with MIQCPMethod=0 and constraints marked as lazy
  • Fixed issue with returning an internal error code 100001 on a non-convex MIQCP
  • Fixed segmentation fault when setting Crossover=0 in a multi-objective environment for a multi-objective LP
  • Fixed numerical issue in parallel column presolve reduction for variables with huge bounds
  • Fixed bug with calculating an IIS for a model that contains semi-continuous or semi-integer variables
  • Shut off messages from WLS module if OutputFlag is set to 0
  • Fixed an infinite recursion in a heuristic for MIQCPs that leads to a stack overflow
  • Fixed numerical issue in handling models with independent components that can lead to wrong answers
  • Fixed potential segmentation fault when displaying the tuner results
  • Fixed numerical issue in presolve when merging piece-wise linear constraints modeled by linear constraints
  • Fixed bug with not discarding multi-objective changes from update cache if the model update contains an invalid change
  • Fixed numerical issue in presolve that can lead to wrong answers
  • Fixed potential segmentation fault when adding variables to a model that has using the VarhIntVal, VarHintPre or Partition attributes
  • Fixed wrong answer when applying original problem heuristics in MIQPs
  • Fixed wrong error message when accessing uninitialized attributes in an MQConstr object
  • Fixed issue in gurobipy with using MVars of size 1 in SOSs and indicator constraints
  • Fixed issue in gurobipy with using MVars of size 1 in Model.ChgCoef()
  • Fixed lagged console output in Matlab
  • Throw exceptions for errors in Java API of SetObjective() and SetObjectiveN()

 

Features

  • Added Conda package for Python 3.11

Gurobi Optimizer v10.0

Bug Fixes

  • Fixed issue in gurobipy with multiplying an MLinExpr from the left to an MVar
  • Fixed issue in gurobipy with creating MVars with multiple singleton dimensions
  • Fixed segmentation fault when removing the callback after starting an asynchronous optimization
  • Fixed issue in gurobipy with mixing LinExpr and MLinExpr objects
  • Fixed bug with partition heuristic not running for PartitionPlace=16
  • Fixed numerical issue in cuts with tiny coefficients that may lead to wrong answers in very rare cases
  • Fixed issue with multi-objective environments not allowing to set the logfile name
  • Fixed issue with not calling the callback for solutions found in MIP cleanup at the end of the solve
  • Fixed bug in conflict analysis for non-convex MIQCP models that may lead to wrong answers
  • Fixed bug with solutions being not available with Compute Server if the solve is interrupted during the NoRel heuristic
  • Fixed an infinite loop due to switching back and forth between QCP and LP relaxation for an MIQCP solve with numerical issues
  • Fixed an uninitialized memory read in barrier algorithm that may lead to non-deterministic behavior in rare cases
  • Fixed wrong answer bug by improving numerics in simplex by switching to quad precision more often for bad models
  • Fixed performance issue in the lifting step of probing in presolve
  • Fixed bug that work and time limits were not checked before starting to process MIP starts
  • Fixed performance bug in network simplex algorithm on ARM chips
  • Fixed numerical issue in infeasibility proof cuts that may lead to wrong answers
  • Fixed version mismatch warning with Java API in version 9.5.2
  • Fixed bug that objective constant change is ignored for maximization problems when only the sign of the constant changes
  • Fixed performance issue in NoRel heuristic where Gurobi stays in phase 1 even though an almost feasible solution has already been found
  • Fixed issue in gurobipy with raising a GurobiError instead of returning NotImplemented when LinExpr and other objects cannot handle an input type
  • Fixed issue in gurobipy with Model.getAttr() returning bogus results instead of raising an exception when called with incorrect attributes
  • Fixed bug with not printing log information for a very long time in a special case of presolve probing
  • Fixed issue that sometimes solutions survive in the solution pool even though they should be discarded due to the PoolGap parameter
  • Fixed bug in presolving with returning an infeasible solution for a model with semi-continuous variables
  • Fixed bug with returning a wrong IntVioIndex, i.e., the index of the variable with largest integrality violation
  • Fixed bug in gurobipy when setting attributes of a 0-dimensional MVar
  • Fixed performance issue with the clean-up phase taking very long for IntegralityFocus=1
  • Fixed issue that computeIIS does not show the output of the initial model solve
  • Fixed bug in the LP file reader for general constraint attributes
  • Fixed bug with using multiple MIP starts in a Compute Server session
  • Fixed numerical issue for binary MIQP models that are linearized, which can lead to wrong answers
  • Fixed rounding of incumbent objective values in log output
  • Fixed numerical issue in presolve with variables with small positive lower bounds appearing in quadratic terms
  • Fixed an infinite loop in primal simplex when a primal start vector is provided and partial pricing is used
  • Fixed a bug that the MIPSOL callback is not called for one of the solutions found
  • Fixed numerical issue that lead to not cutting off a solution even though a lazy constraint was added in the callback
  • Fixed bug in dual presolve reduction that very rarely cuts off all optimal solution
  • Fixed segmentation fault in RINS heuristic for models with SOS constraints
  • Fixed bug in PWL simplex that results in an “Invalid piece-wise linear objective” error
  • Fixed bug that strong branching is not checking the time limit often enough
  • Fixed issue with using a wrong basis for concurrent LP solve with warm-start basis
  • Fixed issue with a heuristic call on a non-convex MIQCP leading to an Error 10005
  • Fixed issue with being unable to get the dual ray for a local node for unbounded non-convex MIQCPs
  • Fixed bug with error messages being lost in some APIs when using a callback

Gurobi Optimizer v9.5.2

Bug Fixes

  • Fixed parsing of grbcluster command line to submit a batch using files from the file repository
  • Fixed display of MIPGap in the cluster manager chart
  • Fixed parsing of grbcluster command line to submit a batch using files from the file repository
  • Fixed segmentation fault for multi-objective models with a single objective and quadratic constraints
  • Fixed very rare segmentation fault that can arise when solving MIQCPs
  • Fixed a performance bug in the NoRel heuristic
  • Fixed issue with not calling the polling callback on models that decompose into independent components
  • Fixed bug with ignoring the WorkLimit parameter set for multi-objective environments
  • Fixed bug with a multi-objective optimization returning an error 10005: Requested data not available
  • Fixed bug with a multi-objective optimization returning an internal error 20000
  • Fixed a numerical issue with linearizing a quadratic objective function
  • Fixed bug with returning and displaying a wrong complementarity violation attribute when column scaling is in play
  • Fixed wrong calculation of the dual solution in barrier with finite upper variable bounds that appears often when the homogeneous algorithm is used
  • Fixed bug with a missing solution in the solution pool when MIP cleanup is applied
  • Fixed issue with scaling linear constraints with infinite right-hand side
  • Fixed very rare segmentation fault that is related to storing uncrushed MIP solutions to the original user model
  • Fixed bug with the BarIterCount attribute being zero in a concurrent LP solve
  • Fixed bug with Compute Server when URLs in HTTP requests are turned into lower case by the user’s IT infrastructure
  • Fixed regression with Compute Server not anymore producing a server log file when logging on the client side is disabled
  • Fixed rare bug with returning a wrong answer for some symmetric LPs when barrier is used without crossover
  • Fixed rare bug with returning a wrong answer in presolve for some MIQPs that decompose into independent components
  • Fixed rare bug with returning a wrong answer for non-convex models due to a wrong domain propagation
  • Fixed bug with producing infeasible solutions for models with semi-continuous variables
  • Fixed numerical issue that leads to declaring a convex piece-wise linear objective as non-convex
  • Fixed performance bug in the LP-based MIR cut separator
  • Fixed performance bug in Compute Server message handling that can lead to network connection errors due to a timeout
  • Fixed bug with network timeout errors for Compute Server solves on very big models
  • Fixed bug in IIS algorithm with IISMethod set to 3 that sometimes leads to not being able to access the IISConstr attribute
  • Fixed performance degradation for models with pure binary SOS1 constraints
  • Fixed issue with automatic model update when writing solution attributes to a JSON file
  • Fixed bug in gurobipy with not using the constraint name when calling Model.addConstr() with a bool and a string as positional arguments
  • Fixed bug with the proceed() callback call not working properly inside the NoRel heuristic when applied to a multi-objective model

 

 
Features

  • Terminate early if the MemLimit parameter is set and the memory bound for barrier calculated after the ordering step already exceeds the memory limit
  • Improved logging in concurrent LP when one of the solvers returned with an error

Gurobi Optimizer v9.5.1

Bug Fixes

  • Fixed bug in lift-and-project cuts that could lead to wrong answers
  • Also disable cuts from parallel root cut loop if “Cuts” parameter is set to 0
  • Fixed bug in tuner where a parameter setting is discarded too early when tuning for the maximum gap
  • Do not print parameter changes on the worker environment if the OutputFlag is 0
  • Fixed possible crash introduced in 9.5.0 when setting parameters after unsetting a callback in OO APIs
  • Fixed issue in setup.py to correctly error out for Python 3.6 and older (which are unsupported in 9.5 and later)
  • Fixed bogus best bound information in log file on some MIQP models with bad numerics
  • Fixed segmentation fault introduced in 9.5.0 with warm start basis that has a non-basic slack with infinite right hand side
  • Fixed big memory overhead with tuning multi-objective models with many variables and many sparse objectives
  • Fixed issue when tuning for maximum gap and the baseline run did not find any solution
  • Fixed memory leak in partition heuristic
  • Fixed performance bug in product detection
  • Fixed segmentation fault in a heuristic when SOS constraints are involved
  • Fixed segmentation fault in simplex when dealing with warm starts and model changes
  • Fixed wrong answer issue with passing a negative Q diagonal of a binary variable to QP simplex
  • Fixed segmentation fault in greedy heuristic
  • Correctly error out in distributed MIP if model contains Euclidean norm constraints but no other Q constraints
  • Fixed uncrush bug for Euclidean norm and 1-norm constraints
  • Fixed issue on Windows that locale changes can lead to cutting off values of double parameters when enviroments are set up in parallel
  • Fixed wrong answer bug with MIQPs and MIQCPs coming from the parallel root cut loop
  • Fixed a performance bug that prevented application of perspective strengthening in MIQPs and MIQCPs
  • Fixed segmentation fault in simplex algorithm involving bad numerics and free superbasic variables
  • Fixed possible segmentation fault due to bad numerics in MIQP and MIQCP presolve
  • Added missing dispatch of += operator of MLinExpr for Var objects
  • Added missing dispatch of += operator of MQuadExpr for Var and LinExpr objects
  • Fixed bug with summing MQuadExpr expressions hanging in an infinite loop
  • Added missing dependency to Linux conda package that caused issues with license check in certain miniconda installations
  • Fixed bug when saving the LDAP settings from the Cluster Manager

Features

  • Added Conda packages for Python 3.9 and 3.10
  • Added value 2 for “Aggregate” parameter to allow for more aggressive aggregation
  • Allow to use Web License Service in containers that run more recent Linux versions
  • Extended pip license bundled with gurobipy wheels to be valid for 2 years
  • Added support for Amazon Linux2
  • Added experimental support for ARM64 Linux

Gurobi Optimizer v9.5.0

Bug Fixes

  • Fixed bug with duplicate solutions in solution pool with general constraints
  • Fixed performance bug in a heuristic applied before the root LP solve
  • Fixed wrong answer for non-convex MIQCPs
  • Fixed issue with double namespaces in gurobipy
  • Remove bad behaving `gurobi.py` and `gurobi.bat` from conda installation on Windows
  • Fixed Compute Server data throughput degradation on Windows after libcurl update
  • Fixed bug accepting solution with huge violation on quadratic constraints
  • Fixed performance bug in RLT cut separation
  • Removed wrong log output for MinRel heuristic claiming it found a solution even though it violates lazy constraints
  • Fixed bug changing the user locale and not resetting it to its original value
  • Fixed segmentation fault when using Matlab with Compute Server
  • Fixed issue that calling terminate() is ignored during IIS computation
  • Fixed wrong answer on models with lazy constraints and presolve being turned off
  • Return an error instead of producing segmentation fault when user changes attributes and calls updatemodel() from a callback, which is not allowed
  • Fixed bug with wrong constraint names in gurobipy’s printQuality() if most violated constraint is not a linear constraint
  • Fixed wrong presolve reduction with biconnected components for models with SOS, quadratic, or general constraints
  • Fixed segmentation fault in presolve component solves if model has a piecewise linear objective
  • Fixed error with retrieving attribute in asynchronous optimization
  • Fixed issue with the order of variables in MPS file writing for quadratic objectives
  • Fixed unknown attribute or parameter errors if non-standard locale is used
  • Fixed numerical issue in presolve reduction that can lead to wrong answers in rare situations
  • Fixed bug that GRBcopymodel() did not copy variable tags
  • Fixed some consistency issues in gurobipy with logging when LogToConsole and OutputFlag parameters are used
  • Fixed bug that the IIS model computed by computeIIS() would still contain the objective constant
  • Fixed numerical issue in scaling bilinear terms for non-convex MIQCPs
  • Fixed performance issue in a presolve reduction that tries to cancel non-zero coefficients
  • Fixed segmentation fault for manually unloading the Gurobi shared library
  • Fixed potential uninitialized memory read in NoRel heuristic
  • Added missing implicit updatemodel() call when writing MPS or LP files
  • Fixed segmentation fault when querying FarkasDual when solved with primal simplex
  • Fixed bug with uncrushing solution for semi-continuous and semi-integer variables
  • Fixed wrong result code of GRB_INTERRUPTED when we should return GRB_TIME_LIMIT
  • Fixed logging issue for concurrent MIP with multi-objective MIP models
  • Fixed issue with case sensitive user names when connecting to a Cluster Manager
  • Fixed segmentation fault in presolve for MIQPs with more than 1 billion quadratic objective terms
  • Fixed presolve reduction for models with binary variables in quadratic constraints that could cause wrong answers
  • Fixed memory leak in gurobipy’s cbLazy()
  • Free the environment in the C++ API in case the license is not valid
  • Fixed logging issue with continuing optimization after an interrupt if LazyConstraints=1 is set
  • Fixed wrong conclusion about unboundedness for non-convex MIQCP
  • Fixed very rare segmentation fault with parallel root cut loop
  • Fixed numerical issue in propagation that resulted in PoolSearchMode=2 with MIPFOCUS=3 not finding all solutions
  • Fixed bug in OO APIs with Model.cbGetNodeRel() returning values even if no relaxation solution is available
  • Fixed bug with tuner not respecting a fixed NoRel parameter
  • Fixed segmentation fault when building a model with ranged rows that have an infinite rhs
  • Fixed segmentation fault in barrier crossover when the initial basis factorization exceeds 2 billion non-zeros
  • Fixed gurobipy’s default CSIdleTimeout value for Compute Server
  • Fixed invalid rejection of general constraints with duplicate operands
  • Fixed enumeration of solutions with Poolsearchmode=2 on models with free general integer variables
  • Fixed potentially infinite loop on LPs with a piece-wise linear objective
  • Fixed segmentation fault in NoRel heuristic
  • Fixed issue with computeIIS() discarding user-specified attributes
  • Fixed issue that log messages with CrossoverBasis=1 were not sent to the callback
  • Fixed error when applying concurrent MIP to a purely continuous non-convex QP or QCP
  • Fixed error in Compute Server communication for models that contain tiny quadratic objective coefficients
  • Fixed segmentation fault in presolve for quadratic models with a very special structure
  • Fixed bug that MIPGap parameter was not obeyed when solving models with disconnected components
  • Fixed wrong reported optimal objective value when initial heuristics find an optimal solution and presolve then proves optimality
  • Fixed bug in gurobipy’s default environment that calling Model.resetParams() would lead to resetting the LogFile parameter and thus closing the log file
  • Fixed bug that time limit was not respected when processing MIP starts
  • Fixed access to Cluster Manager that may be blocked due to wrong mime type of css files
  • Fixed log rotation when Cluster Maanger or Compute Server started as a service
  • Fixed wrong Compute Server node type when using a valid license without Compute Server enabled
  • Fixed grbcluster batch command that was crashing with some parameters

Gurobi Optimizer v9.1.2

Bug Fixes

  • Fixed rare issue with multi-objective MIPs that get turned into LPs in presolve
  • Fixed bug with reading coefficients with multiple sign symbols in quadratic terms in LP file format
  • Fixed numerical issue in parallel row presolve with combining two inequalities into an equation
  • Fixed standard deviation output in tuning tool
  • Also call message callback for fingerprint information if OutputFlag is set to 0
  • Fixed interplay of lazy constraints and bilinear constraints
  • Fixed bug in SOCP disaggregation that can lead to wrong answers for models with quadratic constraints
  • Fixed querying the runtime from the callback during the first few callback invocations
  • Fixed segmentation fault in symmetry detection for models with huge coefficients
  • Fixed an issue with __pwl() statements in LP file reader
  • Fixed numerical issue in BQP cut separator with variables that have almost fixed domain
  • Fixed segmentation fault in symmetry detection for models with >2 billion non-zeros
  • Fixed bug with reporting a wrong dual bound if the model became infeasible after finding an optimal solution
  • Fixed issue with losing user callback solution in certain rare situations
  • Fixed segmentation fault in dependent row presolve reduction for large models
  • Fixed bug with getting an INTERRUPTED error from parallel root cut loop on quadratic models that are at the border of convexity
  • Fixed confusing error message when dividing a LinExpr object by a constant 0.0 in gurobipy
  • Fixed single use licensing on newer Linux kernels
  • Fixed MPS reader and writer regarding objective constants
  • Fixed fingerprint calculation to include LP warm start information and to exclude variable tags
  • Fixed missing objective log output for some solutions in solution pool
  • Fixed a very rare segmentation fault in MIP for models that have an SOS2-like structure
  • Fixed wrong answer bug when running barrier on a QP with presolve disabled
  • Fixed segmentation fault when solving non-convex continuous model
  • Fixed handling of variables without constraints in NoRel heuristic applied to MIQPs
  • Fixed error 10008 in distributed MIP
  • Fixed a wrong answer for the dual solution of SOCPs
  • Fixed segmentation fault in barrier algorithm for models with more than 2 billion non-zeros
  • Fixed segmentation fault in heuristics when PoolGap parameter is set
  • Fixed issue with postprocessing barrier solution when Predual=1 is set
  • Fixed numerical issue in cut separation that may lead to wrong answers
  • Fixed names of non-linear constraints in output of printQuality()
  • Fixed rare case of a wrong answer for the last scenario in a multi-scenario model
  • Fixed numerical issue in presolve that could lead to a wrong answer
  • Fixed race condition between the worker registration and the first command when the compute server is overloaded

Gurobi Optimizer v9.1.1

Bug Fixes

  • Fixed attribute type for “Fingerprint” attribute in Java, C++, and .NET
  • Fixed a numerical issue in a knapsack presolve reduction
  • Fixed issue with IIS algorithm using too many threads
  • Fixed wrong sign for Farkas dual values for variables with infinite lower bounds
  • Fixed numerical issue in presolve coefficient strengthening
  • Fixed issue with losing binary status of a fixed variable when writing to an mps file
  • Fixed numerical issue in a dual presolve reduction
  • Fixed segmentation fault when using pre-specified user cuts in some situations
  • Fixed wrong answer when using pre-specified user cuts with >= sense
  • Fixed handling of user cuts with equality sense
  • Allow the use of a “pip install” trial license within Docker
  • Fixed performance bottleneck in Compute Server model updates with general constraints
  • Fixed segmentation fault when environment creation is used incorrectly by the user and the error code is not handled properly
  • Fixed wrong default value of the “Lazy” attribute in attribute files
  • Fixed incorrect presolve fixing for pure fixed charge network models
  • Only use single-threaded BLAS on Mac to avoid overshooting the thread limit
  • Fixed numerical issue for outer approximation cuts for quadratic constraints
  • Fixed wrong answer for non-convex MIQCPs when sparsifying Q in objective
  • Upgrade to curl 7.74.0 to address a network performance issue on Windows

Gurobi Optimizer v9.1.0

Bug Fixes

  • Fixed issue with empty error messages from within callback in Python
  • Fixed numerical issue in cut lifting
  • Added missing Visual C++ runtime dependency for Python on Windows
  • Fixed issue with resetting runtime attribute to zero on model updates
  • Fixed potential segmentation fault when running out of memory
  • Fixed issue in gurobipy with MLinExpr objects used for objective functions of multi-objective models
  • Fixed numerical issue in clique based presolve reduction that lead to wrong claim of infeasibility
  • Fixed issue with cbStopOneMultiObj() not working correctly on multi-objective models solved with distributed MIP
  • Fixed potential segmentation fault when calling cbStopOneMultiobj() after a SIGINT has been received
  • Fixed rare performance issue in a primal heuristic that may lead to a long time without display output
  • Fixed numerical issue in cut scaling that very rarely lead to not calling the callback to allow for lazy constraint generation for a solution
  • Fixed performance issue in flow path cut separator for models with very special structure
  • Fixed the use of feasRelax() on multi-objective models
  • Fixed incorrect handling of variables with infinite lower bound and finite upper bound for QP simplex
  • Fixed wrong answer bug due to a bad symmetry reduction on models with quadratic or SOS constraints
  • Fixed performance issue and not checking the time limit while lifting binary variables into cuts
  • Fixed issue in IIS computation where hitting the time limit on the initial solve reports an error result
  • Fixed numerical issue in a knapsack based cut strengthening routine that may lead to wrong answers
  • Fixed issue in gurobipy with using a singleton MVar as objective
  • Fixed numerical issue in presolve implied bounds reduction
  • Fixed segmentation fault due to numerical issue in crossover for handling of dual super basic variables in a singular basis
  • Fixed performance issue with sub-MIP cuts taking very long on MIQPs
  • Fixed issue with temporarily using more threads than allowed by the “Threads” parameter
  • Fixed issue with “gurobi_cl –tokens” for single-use licenses on Windows
  • Fixed issue with keeping internal bilinear constraint representation in model produced by presolve method
  • Fixed issue with MIP cleanup on models with semi-continuous or semi-integer variables
  • Fixed issue with getting a Q_NOT_PSD error for MIP starts applied to non-convex models
  • Fixed issue with querying OBJVAL attribute for unbounded models if a feasible solution is available
  • Fixed issue with returning error 10017 for an MIQCP that is presolved to an MILP and solved with distributed MIP
  • Fixed wrong answer due to applying incompatible symmetry and disconnected components reductions at the same time
  • Fixed rare uninitialized memory read in presolve for non-convex quadratic objective function
  • Fixed issue in primal simplex ratio test that can lead to wrong conclusion of infeasibility
  • Fixed issue that caused two worker processes to run simultaneously on the Compute Server for distributed MIP
  • Fixed issue with getting an unbounded ray from a simplex solve
  • Fixed issue with querying char attributes in gurobipy via model.getAttr()
  • Fixed potential uninitialized memory read when setting MIP start via Start attribute on Compute Server

Gurobi Optimizer v9.0.3

Bug Fixes

  • Fixed bug in presolve with merging small cliques that can lead to a wrong answer
  • Changed gurobipy argument name of addMConstrs() from “names” to “name” to match documentation
  • Fixed a performance issue with an infinite loop in a heuristic due to numerical issues
  • Fixed a small memory leak for multi-scenario models
  • Fixed LP iteration count attribute values for multi-objective model solves
  • Fixed issue in gurobipy with wrong result when adding two MLinExpr expressions
  • Fixed bug with querying attributes of a multi-scenario model from Compute Server
  • Fixed issue with wrong MIP solution status if a parallel thread at the root node proves infeasibility of the model
  • Fixed OverflowError in gurobipy when adding many variables with addVars()
  • Fixed segmentation fault when using multiple environments on Windows with a Compute Server or Instant Cloud application
  • Fixed rare segmentation fault in a set partitioning heuristic
  • Fixed the handling of the “ImproveStartTime” parameter for multi-objective models
  • Fixed wrong answer due to bad presolve reduction for non-convex MIQCPs with quadratic equations
  • Fixed segmentation fault when using user cuts in certain situations
  • Fixed segmentation fault related to semi-continuous variables
  • Fixed extensions in library names in the R source package on Mac
  • Fixed translation of one particular form of the addGenConstrIndicator() function in gurobipy when a linear expression with a non-zero constant term is involved
  • Fixed wrong answer for non-convex MIQCPs due to an invalid dual reduction on the McCormick constraints
  • Fixed performance issue in gurobipy with Compute Server when printing a set of variables if no feasible solution exists
  • Fixed performance issue in symmetry computation
  • Fixed issue with not stopping immediately if cbStopOneMultiObj() is called from the callback for a multi-objective solve that is currently performing symmetry detection
  • Fixed segmentation fault that arises from a numerical issue in presolve for MIQPs
  • Fixed issue with not printing the problem size for concurrent MIP > Fixed issue with writing a solution file based on the “SolFiles” parameter if the user callback returned an error
  • Added missing support of scalar division for the MLinExpr object of gurobipy
  • Fixed bug with accepting a solution with big constraint violation that came from a certain heuristic
  • Fixed bug with returning the scaled solution from barrier, if the barrier solve is interrupted prematurely
  • Fixed segmentation fault in presolve for non-convex MIQPs
  • Enable work-around for a long running model.free() call via Compute Server that would terminate the connection due to a time out
  • Fixed wrong fingerprint value when writing to mps files due to handling of IEEE -0.0 (negative zero) values
  • Fixed wrong answer coming from relax-and-lift cuts
  • Fixed issue with duplicate variable indices in the linear constraint of an indicator constraint
  • Fixed wrong answers due to invalid symmetry detection for models with SOS constraints
  • Fixed segmentation fault with solving a model in batch mode that has no name
  • Fixed wrong answer in non-convex MIQCPs due to a wrong local update of the McCormick constraints
  • Fixed numerical issue in presolve for models with SOS constraints and big-M coefficients
  • Fixed performance issue in the LP file reader when huge files are being read
  • Fixed wrong answer for multi-scenario models that decompose into multiple large components

Gurobi Optimizer v9.0.2

Bug Fixes

  • Fixed issue with concurrent batch upload in Cluster Manager (9.0.2a)
  • Fixed issue with infinite dives on bilinear and poolsearchmode
  • Fixed performance issue with running a heuristic in parallel to the root cut loop
  • Fixed bug in IIS for SOS variables with negative upper bounds
  • Fixed python 3.8 issue on Windows with DLL load path
  • Fixed a wrong translation of quadratic constraints into second order cones
  • Fixed numerical issue with QC cuts and huge primal solution values
  • Fixed numerical issue for convex MIQCPs if LP relaxation is unstable
  • Fixed bug with a corner case in presolve when detecting piece-wise linear structures
  • Fixed rare segmentation fault when root LP solve runs into numerical issues
  • Fixed bug for a special case of QC cuts that could lead to wrong answers
  • Fixed performance issue in presolve reduction to substitute sub-expressions
  • Reduced memory consumption during conversion of QCPs or MIQCPs into SOCP form
  • Fixed segmentation fault for a very rare case in which the environment creation runs out of memory
  • Fixed issue with recording asynchronous solves
  • Fixed wrong behaviour when querying certain attributes in some gurobipy classes
  • Fixed performance issue with memory management for general constraint translation on Windows
  • Fixed issue with the global dual bound for models that have disconnected components
  • Fixed performance issue with memory management for non-zero cancellation on Windows
  • Fixed issue with applying sifting for barrier crossover in current LP
  • Fixed bug in propagating quadratic constraints that can lead to wrong answers
  • Fixed issue with empty names in gurobipy’s addVars() method
  • Fixed issue when a sub-MIP heuristic produces a non-convex continuous model for non-convex MIQCPs
  • Improved cycling detection in QP simplex
  • Fixed a presolve reduction for integer knapsacks on models with at most 3 variables
  • Accept empty structs in MATLAB API
  • Fixed assertion in Python setup on Windows

Gurobi Optimizer v9.0.1

Bug Fixes

  • Fixed numerical issue in presolve with fixing variables for singleton rows
  • Fixed issue in MPS reader with variables with infeasible domains
  • Fixed issue with inconsistent gurobipy data structures after a feasRelaxS() call
  • Fixed issue with not calling update() in OO APIs before calling feasRelax()
  • Fixed issue with BestBdStop parameter not working correctly with MIP starts
  • Fixed handling of semi-continuous variables inside the fixed model
  • Fixed issue with ILP files not written if Compute Server is used
  • Fixed issue with a symmetry presolve reduction that can lead to an infeasible solution
  • Fixed issue with overshooting time limit during barrier factorization
  • Fixed issue with setting attributes in gurobipy using ndarrays
  • Fixed a non-determinism caused by network cut separation
  • Fixed wrong answer issue caused by a presolve reduction on general constraints
  • Fixed issue with propagating quadratic constraints, which can cause a wrong answer
  • Fixed numerical issues in the disconnected component solver
  • Fixed issue with deleting variables or constraints after having set the “Tag” attribute
  • Fixed issue with a scipy.sparse matrix containing explicit zeros leading to data loss if used in setMObjective()
  • Fixed issue with changing the “QCName” attribute causing the solution status of the model to be reset
  • Fixed issue with getting presolved model on Compute Server, if generating presolved model takes more than 20 seconds
  • Fixed issue with calling getVarByName() or getConstrByName() after having modified names
  • Fixed issue with getting relaxation value for an MVar object in a gurobipy callback
  • Enforce the THREADLIMIT parameter of Compute Server, such that larger THREAD parameter values are capped
  • Fixed wrong answer caused by disconnected component presolver in combination with SOS constraints
  • Fixed segmentation fault if threading callbacks are used in combination with MKL
  • Fixed wrong answer for a trivial quadratic constraint infeasibility if presolve is disabled
  • Fixed segmentation fault when the total number of non-zeros in the separated cuts exceeds 2 billion
  • Fixed missing Python 3.8 in Windows installer
  • Fixed issue with setting real-valued parameters on Compute Server, if a locale is used that has a floating point number representation which differs from the “C” locale
  • Fixed wrong answer caused by a numerical issue in the dual bound update of a heuristic
  • Fixed issue with using a TempConstr as dict key in gurobipy
  • Fixed wrong answer for non-convex MIQCPs due to invalid reduced cost fixing
  • Fixed issue with grbtune not working correctly with a token license and a token server password
  • Improved numerical robustness when disaggregating quadratic constraints
  • Fixed writing of “SolFiles” when non-default variable names are used with Compute Server
  • Fixed bug in BQP cut separator that could cause wrong answers
  • Fixed wrong answer caused by a symmetry presolve reduction
  • Improved logging in crossover regarding super basics and infeasibility
  • Added missing warning message that simplex is used instead of barrier for root solve of non-convex QP
  • Improved barrier performance on AMD Ryzen and EPYC processors

Gurobi Optimizer v9.0.0

Bug Fixes

  • Fixed issue with BestObjStop and BestBdStop in concurrent environments for maximization models
  • Fixed segmentation fault in multi-objective solves for MIP models with special constraints, such as general constraints
  • Fixed rare issue with scaling in PWL simplex
  • Fixed issue with using basis file with Compute Server
  • Fixed bug that prevented concurrent MIP to stop if a user objective limit or a solution limit has been reached
  • Fixed rare wrong answer due to presolve
  • Added missing constants to Python API
  • Added missing constants to .NET API
  • Fixed wrong answer issue for models that have multiple components
  • Fixed bug in implied integer detection that may lead to infeasible solutions
  • Fixed issue with running the tuner using Compute Server
  • Fixed bug that prevented default settings to use Concurrent LP for the root solve in MIP on Windows
  • Fixed bug with linearizing quadratic constraints
  • Fixed issue with dualizing a QP
  • Fixed numerical issue in cover cut separation when tiny coefficients are involved
  • Fixed issue in the tuner when an optimization aborts due to numerical reasons
  • Fixed issue with missing variable names when adding variables to a Compute Server model after an mps file has been read
  • Fixed numerical issue in presolve for aggregating integer variables with big coefficients
  • Fixed issue with HOSTID detection on Mac
  • Fixed performance issue in MIP IIS code when LP is already infeasible
  • Fixed internal naming when combining GRBloadmodel with GRBaddvars/GRBaddconstrs
  • Fixed possible memory leak with multiple partial MIP starts
  • Added back missing warning “Warning: parameter changes on this environment will not affect existing models.”
  • Fixed segmentation fault on general constraint model with Presolve=0
  • Fixed issue with gurobi_cl –tokens
  • Fixed issue in presolve for models with more than 2 billion non-zeros
  • Fixed issue with Java linearize() creating feasibility model instead of linearized model
  • Fixed issue with problem being declared infeasible during presolving
  • Fixed numerical issue with fixing variables in presolve to very large values
  • Fixed infinite loop with lazy constraints when LP relaxation is unbounded
  • Fixed issue with returning wrong error code for operating system file I/O methods
  • Fixed wrong log output “Ordering time: 0.00s” despite long ordering phase
  • Fixed bug with parsing “ResultFile” parameter of Gurobi command line solver
  • Fixed issue in presolve with piece-wise linear objectives and big bounds
  • Fixed double log output with Python API
  • Fixed invalid read for empty quadratic constraints
  • Fixed performance bug with sub-expression presolve
  • Fixed numerical issue in presolve with big coefficients
  • Fixed bug with linearization of quadratic maximization objectives with off-diagonal terms
  • Fixed bug with missing objective constant when copying models with piece-wise linear objective
  • Fixed issue with wrong MIP start solution values for models with piece-wise linear objective
  • Fixed calculation of objective value of pool solutions for models with quadratic or piece-wise linear objective
  • Fixed segmentation fault for running a certain heuristic on models with more than 2 billion non-zeros
  • Fixed issue with symmetry detection not respecting the time limit
  • Fixed bug with zlib compression in Compute Server if data size exceeds 2 billion bytes
  • Fixed – and * operators for GRBQuadExpr objects in .NET API
  • Fixed numerical issue in presolve leading to an error 10003 for models with general constraints
  • Limit memory growth in zero-half and mod-k cut separators
  • Return error if end piece of piece-wise linear objective is invalid
  • Fixed numerical issue leading to a wrong answer for an MIQP
  • Fixed segmentation fault in LP file reader for reading indicator constraints
  • Call polling callback from mutli-objective model more often to avoid long delays
  • Fixed numerical issue with using big finite bounds in aggregator of presolve
  • Fixed bug with using BestObjStop, BestBdStop, or Cutoff for maximization objectives in multi-objective environments
  • Fixed bug with using concurrent settings in a Compute Server solve
  • Fixed very rare issue with wrongly concluding optimality for unbounded LP with empty column
  • Fixed segmentation fault while solving multi-objective models with a MIP start
  • Fixed issue with returning network error instead of JOB_REJECTED after CSQueueTimeout is reached
  • Fixed issue that Compute Server didn’t work correctly for models with more 2 billion nonzeros
  • Fixed segmentation fault in Python API when environment is freed before model, e.g., due to garbage collection
  • Fixed subtle issue with ratio test of piece-wise linear simplex algorithm that may lead to a wrong answer
  • Call polling callback during sub-MIP heuristics to avoid long delays
  • Fixed numerical issue in GCD calculation that may lead to wrong answer
  • Fixed performance issue with using Compute Server for models with many general constraints
  • Fixed issue with setting the “ComputeServer” and “TokenServer” parameters as command line options of the Gurobi command line solver
  • Fixed bug with using GRBoptimizeasync() for Compute Server
  • Fixed issue with calling the MIPSOL callback multiple times for the same solution
  • Added workaround for a bug in Java 8 JDK that causes crash for models with a large number of nonzeros in constraints
  • Fixed performance issue with automatic threads selection on machines with 17 to 31 cores and hyper-threading
  • Fixed various issues with reading *.bas files manually generated by user
  • Upgraded to a newer MKL, which fixes the SELinux security text due to a TEXTREL section in the library
  • Fixed segmentation fault in handling cycling of QP simplex
  • Fixed issue with presolve introducing duplicate indices into SOS2 constraints
  • Fixed bug with the fixed model of a model with a non-convex piece-wise linear objective containing non-fixed binary variables
  • Fixed numerical issues with handling objective that may lead to wrong answers
  • Fixed numerical issue in conflict analysis that may lead to wrong answers
  • Fixed bug with querying number of cores on Windows for machines with more than 64 logical processors
  • Fixed client/server failure when model update takes too long
  • Fixed issue when a compute server node joins a cluster just after leaving it
  • Fixed issue causing a compute server to remain in draining mode

Gurobi Optimizer v8.1.1

Bug Fixes

  • Fixed bug returning error 10005 in a rare case for multi-objective models on Compute Server.
  • Fixed bug with Compute Server on multi-objective MIP models that change to multi-objective LP after presolve.
  • Fixed segmentation fault of Compute Server worker due to issue with variable names.
  • Fixed wrong model generation on Compute Server with Indicator Constraints in MPS files.
  • Fixed bug with empty MST files if problem is not updated before adding MIP starts on Compute Server.
  • Fixed segmentation fault when writing unavailable model data (e.g., MIP start if none exists) using Compute Server.
  • Fixed bug with a wrong answer due to a presolve reduction.
  • Fixed bug with uninitialized memory read in presolve.
  • Fixed bug in PSD adjustment for solving QPs with barrier without presolve.
  • Fixed segmentation fault in an MIQCP presolve reduction.
  • Fixed segmentation fault during QP presolve.
  • Fixed bug in a presolve reduction that would cause an infeasible model to become feasible.
  • Fixed bug with wrong counting of eliminated columns in a presolve reduction.
  • Fixed bug with wrong objective value if a multi-objective MIP reduces to an LP.
  • Fixed segmentation fault with using callbacks for a multi-objective model.
  • Fixed bug with lazy constraints in multi-objective models.
  • Fixed error for querying the solution of an empty multi-objective model.
  • Fixed bug with infeasible quadratic constraint leading to incorrect conic reformulation.
  • Fixed bug for non-PSD problems that disaggregate into multiple components.
  • Fixed segmentation fault in handling QP simplex cycling.
  • Fixed wrong answer for an MIQCP if the initial LP relaxation is unbounded.
  • Fixed wrong answer due to inconsistency in SOS feasibility tolerance usage for SOS models that decompose into smaller pieces.
  • Fixed issue about the fixed model still having non-convex piece-wise linear objective.
  • Fixed wrong infeasible result on a model with piece-wise linear objective.
  • Fixed bug in the Gomory cut separator for a rare case.
  • Fixed bug with the solver appearing to hang in the middle of a MIP solve.
  • Fixed segmentation fault in a heuristic for models with only empty rows.
  • Fixed integer overflow issues for models with very large numbers of rows or columns.
  • Fixed wrong answer in MIP model due to incorrect simplex infeasibility status in phase I.
  • Fixed bug with lazy constraints.
  • Fixed tuning tool running on local machine with multiple models.
  • Fixed bug with distributed tuning aborting with ‘Non-PSD error is encountered’ on MIQPs or MIQCPs.
  • Fixed segmentation fault when calling GRBaddconstrs() with RBeg[0] > 0.
  • Fixed bug with Python 3 where model attribute -completion prints garbage.
  • Fixed issue with name allocations causing huge overhead with Matlab R2018b.
  • Fixed issue with combining distributed solves with concurrent solves.
  • Fixed distributed concurrent MIP.
  • Fixed bug with recording and replaying for huge models.
  • Fixed issue with updating MIP starts in recording.
  • Fixed license transfer message and processing with grbgetkey.
  • Fixed cluster node state processing when a node could incorrectly become DEGRADED or FAILED.
  • Fixed bug in Python API where Cloud solve does not output minimal log when opening the connection.

Gurobi Optimizer v8.1.0

Bug Fixes

  • Fixed issue in presolve on models that contain a piece-wise linear structure.
  • Fixed numerical issue in the clean-up of MIP solutions.
  • Fixed potential segmentation fault in heuristic if QCP relaxation is used for an MIQCP.
  • Fixed grbgetkey writing wrong line to license file.
  • Fixed bug with memory management of row names.
  • Fixed bug with lazy constraints added via callback.
  • Fixed issue with bound flipping in piece-wise linear simplex algorithm.
  • Fixed wrong answer from piece-wise linear dual simplex algorithm.
  • Fixed segmentation fault on piece-wise linear model if presolve is turned off.
  • Fixed tuning on multi-objective models that cannot be solved to optimality.
  • Fixed bug when adding new variables after having called setObjectiveN().
  • Fixed issue with wrong optimal value when objective constant is modified after having solved the model.
  • Fixed issue with resetting and then setting parameters in concurrent environments with Compute Server.
  • Fixed segmentation fault with adding cuts or lazy constraints from within the callback on multi-objective models.
  • Fixed bug with lazy constraints from callback being ignored for a solution that is found by a trivial heuristic for a multi-objective callback.
  • Fixed bug with zero-length cuts added in callback.
  • Fixed segmentation fault when writing models with lazy constraints to mps file.
  • Fixed performance issue in probing with variables of infinite domain size.
  • Removed wrong and confusing additional LP presolve output in log file.
  • Fixed very rare wrong answer bug due to a missing clean-up in presolve.
  • Fixed issue with empty log files if Concurrent MIP is used with Concurrent environments.
  • Fixed issue with setting parameters in multi-objective environments on Compute Server.
  • Fixed very rare hang in QP simplex for numerically troublesome models.
  • Fixed wrong answer due to numerical issues if problem decomposes into multiple smaller sub-problems.
  • Fixed segmentation fault in a heuristic for MIQP models.
  • Fixed crash when calling GRBterminate() at the same time as other API routines when Compute Server is used.
  • Make license check thread safe.
  • Fixed a numerical issue in quadratic constraint propagation.
  • Fixed numerical issue with small coefficients in knapsack presolve reduction.
  • Fixed segfault when querying the presolved model of an LP with piece-wise linear objective.
  • Fixed very small memory leak when reading variable hint files.
  • Fixed issue with executing user callback concurrently from within partition heuristic.
  • Fixed issue with uncrushing solution through parallel column reduction if one is integer and the other is continuous.
  • Fixed small memory leak in MPS reader.
  • Fixed small memory leak in barrier dense column handling.
  • Fixed uninitialized memory read in decomposition code for MIPs.
  • Fixed ERROR 10005 for applying barrier without presolve on LPs with piece-wise linear objective.
  • Fixed bug with cutting off optimal solution due to cutoff bound calculation for MIP models with very large objective coefficients.
  • Fixed bug with wrong slack signs after QP simplex was applied.
  • Fixed issues with creating many connections to Compute Server in short time.
  • Fixed rare bug in uncrushing a solution for a certain presolve reduction.
  • Fixed potential segfault when running gurobi_cl with a gurobi.env that contains a line with “ResultFile”.

Gurobi Optimizer v8.0.1

Bug Fixes

  • Fixed final cut count provided by Compute Server.
  • Fixed performance bug in Gomory Cuts for cases with many fractional variables.
  • Fixed bug with empty quadratic constraint when presolve removes all columns.
  • Fixed issues with using non-default Python on macOS.
  • Fixed some inconsistencies in Python parameter help texts.
  • Fixed an issue in presolve for models with piece-wise-linear structure.
  • Fixed bug with rejecting ‘inf’ values in Python API.
  • Fixed issue with model::printAttr in Python API.
  • Throw error instead of ignoring variables in LP format files that have the same name as one of the LP format keywords.
  • Fixed issues with the Python logger module.
  • Fixed segmentation fault with MIQCPs.
  • Fixed issue with not providing dual ray even if InfUnbdInfo parameter is set.
  • Fixed issues with three or more identical break-points in piece-wise-linear objective function definition.
  • Fixed distributed tuning without a Compute Server.
  • Fixed SolutionCount attribute for continuous models.
  • Fixed double log line output with Python and Compute Server.
  • Fixed segmentation fault due to interplay of user cutting planes from callback and domain propagation at nodes.
  • Fixed tiny memory leaks in Java API.
  • Fixed an issue with getting QCP duals on AIX.
  • Fixed issues with threading callback.
  • Fixed API version display in replay.
  • Fixed bug with the “gurobi_cl –group” command.
  • Fixed bug with ServerTimeout not being passed to Compute Server.
  • Fixed inconsistency with token license server and “ServerTimeout” parameter.
  • Fixed bug with BestObjStop and maximization objective sense.
  • Fixed bug with Compute Server producing empty files when exporting a large model to disk.
  • Fixed wrong answer bug with symmetry reductions.
  • Fixed issues with tune() and computeIIS() functions in various APIs if update() has not been called before.
  • Fixed issue with disconnected component presolve reduction and piece-wise linear objectives.
  • Partly addressed bug with inconsistent final objective value for MIQPs by giving user additional control to the diagonal adjustment using the PSDTol parameter.
  • Fixed performance bug for models with very long constraints that lead to many implications.
  • Fixed bug in presolve substitution that may lead to wrong answers.
  • Fixed numerical issue in dual presolve reduction that converts continuous variables to binaries.
  • Fixed potential wrong answers due to objective propagation at the nodes.
  • Fixed uncrush issue for barrier QCP solves that leads to “Requested data not available” error if presolve removed all columns.
  • Fixed numerical issue with MIQCP reduction that leads to coefficient cancellation.
  • Fixed numerical issue in domination presolve when this leads to tiny coefficients.
  • Fixed bug with not catching Ctrl-C in Python for tune().
  • Fixed wrong termination of distributed MIP due to issue in crushing solutions.
  • Fixed grbgetkey that was saving the license file in a wrong default location on linux systems.
  • Fixed self-signed certificate generation that could not be used from Windows clients.
  • Fixed handling of unicode in hostname.
  • Fixed access to grb_rs Swagger documentation on some platforms.
  • Fixed issue that prevented grb_rs service restart on Windows after a reboot.
  • Fixed issue that prevented client to stop polling when a job in queue was aborted.

Gurobi Optimizer v8.0.0

Bug Fixes

  • Fixed an issue with CURL producing a segmentation fault when multiple cloud environments are created in parallel.
  • Fixed inconsistent solution count if model is solved in presolve and a MIP start is used.
  • Fixed a numerical issue in simplex that could lead to wrong answers for MIP.
  • Added missing documentation for error code 40001.
  • Fixed segmentation fault in Java when calling optimizeasync() with a callback.
  • Fixed an issue with reusing an old solution as a MIP start of a modified model.
  • Fixed an issue with MultiObjPre=2 declaring a multi-objective model infeasible.
  • Fixed an issue with cut management for cuts added via the callback.
  • Fixed a segmentation fault with writing an *.ilp file for an infeasible multi-objective model.
  • Fixed a segmentation fault with querying Farkas info for an infeasible model.
  • Fixed a small memory leak due to locale settings on Windows.
  • Fixed a bug with symmetry handling on problems with multiple components.
  • Fixed an issue with lineariizing MIQP models that may lead to wrong answers for MIQPs.
  • Fixed a segmentation fault with calling SetPWLObj without update().
  • Fixed floating point exception in presolve for Euclidean bound strengthening if very large bounds for integer variables are involved.
  • Fixed issue with reduced cost propagation cutting off optimal solution if bound strengthening was applied after the LP solve.
  • Fixed issue with discarding primary objective function for multiple-objective models if update() is not called after increasing model.numobj.
  • Fixed a segmentation fault with concurrent MIP and MIP starts.
  • Fixed issues in MPS reader if lazy constraints and quadratic or indicator constraints are in the model.
  • Fixed wrong answer for decomposable models due to contradictory bounds from dual bound strengthening.
  • Fixed performance issue with AddTerms() in .NET API.
  • Fixed issue with handling free super-basic variables in primal simplex.
  • Fixed numerical issue in presolve when using tiny activities for coefficient reduction.
  • Do not dualize the LP model if dual presolve reductions are turned off.
  • Fixed a bug in a dual reduction of branching.
  • Fixed an issue with using MIP starts for multi-objective models.
  • Fixed bug with losing the lazy attribute of constraints when copying a model.
  • Fixed bug with the tuner ignoring the lazy attribute of constraints.
  • Fixed issues with a multi-objective model that only contains a single objective.
  • Fixed the transformation of certain types of indicator constraints, which could have lead to wrong answers.
  • Fixed an infinite loop in the *.lp file reader for erroneous files with empty constraints.
  • Fixed a segmentation fault if gurobi_read() in the MATLAB API is called without arguments.
  • Fixed a segmentation fault for MIQCP models that are on the boundary of PSDness.
  • Fixed a bug with cleaning up the solution of a model that contains quadratic constraints and a piecewise linear objective.
  • Fixed problem with scaling in a multi-objective setting, when the primary model reduces to an LP, while the secondary model is a MIP.
  • Fixed an issue in the IIS code where a minimal IIS is declared to be not minimal.
  • Throw an error when reading NaN values from an *.lp or *.mps file.
  • Fixed a segmentation fault in the *.lp file reader for multi-objective models.
  • Fixed bug that GRBfeasrelax() and GRBfeasibility() did not remove a piecewise linear objective.
  • Throw an exception when setObjectiveN() is used with a quadratic term in Python.
  • Fixed a bug in the aggregator that may lead to a wrong answer.
  • Fixed a bug with ignoring GRBterminate() calls from a multi-objective callback if individual environments for the objectives are used
  • Fixed a bug in presolve that may lead to infeasible solutions being reported as feasible in the presolved model.
  • Fixed a bug in probing where two contradictory constraints on unbounded variables lead to a chain of bound improvements that yield bounds that are too large for floating point representation.
  • Fixed an uninitialized memory read in node probing for SOS constraints that may lead to wrong answers.
  • Fixed a very rare bug in the semi-sparse LU factorization of the simplex algorithm.
  • Fixed a bug in the presolved model returned my model.presolve() with unsupported cone constraints by converting them into quadratic constraints.
  • Fixed the segfault with mac64 Gurobi package for Anaconda 5.x python 3.6 version

Gurobi Optimizer v7.5.2

Bug Fixes

  • Fixed unknown attribute error for a multi-objective model, if a solution violates by more than tolerance.
  • Fixed segfault for reading model in MATLAB and using Compute Server.
  • Fixed a token server license bug, token not released, when MATLAB returns an error.
  • Fixed a bug in the disconnected component code, if BestObjStop is specified.
  • Fixed a bug in crossover basis code, ignoring time limit.
  • Fixed a bug in managing cut table.
  • Fixed a bug for parameter IgnoreNames.
  • Fixed a documentation issue for NodeMethod.
  • Fixed a wrong behavior for tuning on multi-objective models.
  • Fixed a callback bug in setting CutOff in the disconnected component code.
  • Fixed a bug writing lazy constraints in LP and MPS formats.
  • Fixed a bug incorrectly requiring to match Server attribute in capitalization.
  • Fixed a bug in creating GRBenv, if it runs out of memory.
  • Fixed a wrong answer bug for piecewise linear variables with negative infinite lower bound.
  • Fixed wrong FILEVERSION in gurobi75.dll.
  • Fixed a bug returning interrupt incorrectly for models with lazy constraints.
  • Fixed an issue in the installer for Mac.
  • Fixed a bug returning a solution with undefined values, when a MIP start with undefined values is provided.
  • Fixed a documentation issue about multi-objective behavior.
  • Fixed a bug with different objective value, after solution is uncrushed, for models with general constraints.
  • Fixed a bug, where multi-objective env doesn’t work for Java API.
  • Fixed a numeric issue, which may cause hang in QP simplex and MIQP.
  • Fixed a license issue in R API.
  • Fixed an issue with the tuner trying strange values for the StartNodeLimit parameter.
  • Fixed an issue, where Gurobi doesn’t work for MATLAB R2017a or newer versions on Mac.
  • Fixed an issue in the Python API with passing a list as names to the m.addVars() method.
  • Fixed a bug not handling solutions cut off by lazy constraints correctly.
  • Fixed a numeric issue in presolve aggregation.
  • Fixed a bug, where IIS doesn’t converge.
     
  • In addition, 7.5.2 also includes the following enhancements:
    • Supports problem-based optimization, a new Optimization ToolBox feature of MATLAB R2017b.
    • Allows users to combine MultiObjPre > 0 and Presolve = 0.
    • Allows use of const char *name in C API for GRBsetobjectiven.
    • Improves various parts of the documentation.

Gurobi Optimizer v7.5.1

Bug Fixes

  • Fixed bug where a compute server client hangs or issues network error after server has been running for a while.
  • Fixed log bug for models with disconnected components.
  • Fixed inconsistent solution count when MIP Start is used and the model is solved by presolve.
  • Fixed deadlock in the unusual situation of unprocessed failed nodes.
  • Fixed a few callback issues.

Gurobi Optimizer v7.5.0

Bug Fixes

  • Fixed a few issues in Python API related to addVars, attributes and tuning log.
  • Fixed numerical issues in inverse modular presolve reduction, barrier for nodes.
  • Fixed potential divide-by-zero in some reductions of conflict analysis.
  • Added missing PSD check for quadratic models if presolve is off.
  • Fixed check for SolutionLimit parameter in certain situations.
  • Fixed error code if X attribute is queried for infeasible model.
  • Fixed bug with wrong objective values in barrier log and callback for maximization models.
  • Fixed log output about presolve reductions when root LP is dualized.
  • Fixed bug with wrong objective sign for simplex callback during crossover for maximization models.
  • Fixed infeasible/unbounded status when LP is dualized.
  • Fixed bug with updating QP warmstart basis with UpdateMode 1.
  • Fixed Visual Studio 2015 project template files.
  • Fixed bug with ignoring objective constant in MATLAB when model is read using gurobi_read.
  • Fixed bug with maximization multi-objectives.
  • Fixed bug with keeping fractional bounds even if presolve finds a variable to be integral.
  • Fixed a bug with MIP starts and semi-integer or semi-continuous variables.
  • Fixed IIS computation for multi-objective models.
  • Fixed infinite loop when cutoff and MIPGap=0 are set.
  • Fixed bug with losing general constraint names if one without a name is added.
  • Fixed shared library installer issue on latest Mac OS.
  • Fixed bug with losing solutions of last solve in multi-objective optimization if interrupted.
  • Fixed bug with concurrent LP changing original user model with piece-wise linear objective.
  • Fixed issue with QCP model becoming non-PSD inside IIS algorithm.
  • Fixed bug in IIS where Gurobi does not relax fixed binary variables.
  • Fixed wrong answers for a few rare cases, like combinations of quadratic, general and SOS constraints and piece-wise linear objective, having lazy constraints, bugs in uncommon presolve reductions.
  • Fixed a few rare segmentation faults, with very long problem name or NodeFileDir string, in sequential MIP solves, when simplex switches to quad precision, when combining lazy constraints and SearchMode > 0, when merging parallel rows for multi-objectives, when running into numeric trouble in “DegenMoves” for SOS models, having both piece-wise linear objective and general constraints.
  • Fixed bug handling error cases in simplex, like out of memory.
  • Fixed bug with solutions that violate integrality in MIQP and MIQCP.
  • Fixed bug where GRBresetparams was not recorded in the recording file.
  • Fixed very rare case of a non-deterministic behavior in simplex.
  • Fixed bug when using a user cutoff value for maximization problems.
  • Fixed bug with declaring model infeasible if user cutoff is set slightly above optimal value.
  • Fixed bug with reading large recording files on Windows.
  • Fixed bug with calling the callback on a disconnected component.

Gurobi Optimizer v7.0.2

Bug Fixes

  • Fixed potential issue in simplex with switching from quad back to double precision.
  • Fixed crash for very large models in crossover basis construction due to integer overflow.
  • Fixed log output of multi-objective model solves on compute server.
  • Fixed potential very long delay in presolve.
  • Fixed an issue with local bound changes derived by orbital probing.
  • Fixed bug with SOS constraints and symmetry substitution.
  • Fixed check for that piece-wise linear obectives cannot be used within multi-objective models.
  • Fixed bug with pending changes to Q objective not being discarded if Q is deleted.
  • Fixed potential infinite loop for disconnected component solves if SubMIPNodes is set to 0.
  • Fixed performance issue with setting parameters in Python.
  • Fixed very rare segmentation fault in simplex when numerical issues are encountered for a mip model.
  • Fixed bug in C++ API getQCRow() method.
  • Fixed an issue with concurrent LP applied to model with piece-wise linear objective.
  • Fixed bug in presolve that may have introduced infeasible solutions.
  • Fixed problem with dir(o) in Python 3.5.
  • Fixed very rare wrong answer issue with barrier applied to piece-wise linear objective models.
  • Don’t terminate a running token server if it is unable to read the license file.
  • Fixed “RuntimeError: maximum recursion depth exceeded” for addVars() in Python.
  • Fixed gap computation for near zero objective values.
  • Fixed bug where fixed binary variables were not included in the returned IIS.
  • Fixed issue that in rare cases the dual bound and incumbent solution is not displayed in node log.
  • Fixed several documentation issues in C++, Java or Python documentation, about general constraints, multi-objective, etc.
  • Improved numerics in presolve, cut separation and conflict analysis.
  • Improved error messages for cloud solves.
  • Improved handling of SSL certificates on Linux for cloud connections and include SSL certificate for cloud solves in distribution.
  • Improved error messages for querying multi-objective attributes.
  • Improved token server error handling when the OS limit on the number of open file descriptors is reached.
  • Improved warning messages in LP file reader.
  • Added IISMethod=3 parameter setting.
  • Added option to turn on CURL verbose mode via environment variable.
  • Allow to exchange the .NET assembly with a newer minor or technical Gurobi version without the need to recompile all dependent assemblies.
  • Do not include infinite right-hand-side values in model statistics report.
  • Return error if attributes are queried for multi-objective models that are unavailable in the multi-objective context.
  • Use default weight of 1 for all objectives in multi-objective optimization.

Gurobi Optimizer v7.0.1

Bug Fixes

  • Fixed an unusual error when reading LP file with SOS constraints.
  • Fixed a namespace pollution issue in Python library.
  • Fixed a recording issue for GRBwrite().
  • Fixed model update issues for multi-objectives and for range constraints.
  • Fixed a bug in translating “And” constraints with fixed variables.
  • Fixed a message issue on multi-objective models for using compute server.
  • Fixed a tuplelist serialization issue in Python library.
  • Fixed a non-overlapped singleton symmetry bug.
  • Fixed a concurrent MIP log issue, every node instead of every 5 seconds by default.
  • Fixed potential crash in Windows token server client.
  • Fixed a token server issue where interrupting a client could lead to a token being lost.

Gurobi Optimizer v7.0.0

Bug Fixes

  • Fixed handling lower bounds for semi-variables that are less than zero.
  • Fixed handling of semi-variables with empty semi-domain.
  • Fixed possible crash for SOCP models.
  • Fixed some issues with compute server and recording feature on 32 bit systems.
  • Fixed SARHSLow and SARHSUp statistics for equations.
  • Fixed minor issues in MIP solution clean-up.
  • Fixed a memory leak in API replay.
  • Fixed “Runtime” attribute for concurrent LP.
  • Fixed a bug in strong branching.
  • Fixed bug with UpdateMode=1 and ranged rows.
  • Fixed bug in .NET SetObjective() method.
  • Fixed crash with piece-wise linear simplex on unbounded models.
  • Fixed usage of “ResultFile=*.ilp” for infeasible models.
  • Fixed issue with adding ranged constraints and new variables without intermediate update() call in OO APIs.
  • Fixed issue with writing numbers to *.mps and *.lp files if user uses a non-C LOCALE setting.
  • Fixed issue with more than 2 billion non-zeros in MATLAB API.,
  • Fixed bug with non-deterministic node counts on small knapsack models.
  • Fixed issue with spaces in file names on Linux.
  • Fixed issue in presolve for quadratic constraints with linear terms.
  • Fixed bug that could lead to wrong answers in very rare situations.
  • Fixed a bug in constraint strengthening.
  • Fixed bug in crushing solutions that could lead to rejection of a feasible user solution from a callback.
  • Fixed bug in MinRel heuristic that could lead to early termination for models with disconnected components.
  • Fixed an issue with multiple Gurobi versions installed on Windows that lead to always starting the version that was installed last.
  • Fixed potential buffer overflows for very long error messages (e.g. due to very long variable names).
  • Fixed querying “Xn” attribute multiple times when “SolutionNumber” parameter is modified between the calls.
  • Fixed bug with adding quadratic or SOS constraints and removing variables without intermediate update() call.
  • Fixed an issue with the IIS algorithm on models that contain only empty SOS constraints.
  • Fixed potential crash in barrier for models with more than 2 billion non-zeros running on 32 bit systems.
  • Fixed bug in heuristics running on the original model when the model contains semi-continuous or semi-integer variables.
  • Fixed potential non-deterministic behavior for parallel solves of unbounded models that contain SOS constraints.
  • Do not generate the default “gurobi.log” file if gurobi_cl is used with a custom “LogFile=…” parameter setting.
  • Fixed a bug with presolve turning a PSD Q matrix into non-PSD if variables get fixed that are member of an SOS constraint.
  • Fixed bug with MIP Starts for MIQCP models.
  • Fixed potential wrong answer, crash or hang in QP simplex for numerically bad situations.
  • Fixed very unlikely issue where simplex could declare a zero-objective model to be unbounded.
  • Fixed issue with delayed MATLAB logging.
  • Fixed issue when running the tuning tool on a pure LP model with maximization objective sense.

Gurobi Optimizer v6.5.2

Bug Fixes

  • Fixed bug with adding ranged rows and then adding new variables without calling update() in between.
  • Fixed interplay of UpdateMode=1 parameter with compute server and record/replay feature.
  • Fixed potential segfault with adding cuts.
  • Fixed bug with warm-starting a modified QP with presolve disabled.
  • Fixed bug with having multiple environments or models in replay feature.
  • Fixed numeric issue with tightening an infinite bound to a finite but very big bound in presolve.
  • Fixed problems with MIP starts for semi-continuous models.
  • Fixed bug with deleting an environment pointing to a compute server in Python.
  • Fixed bug with linearizing quadratic terms in MIQPs involving integer variables.
  • Fixed non-determinism in root node parallelism.
  • Fixed bug with maximizing QPs.
  • Fixed issue with querying quadratic constraints that do not have linear terms.
  • Fixed presolve bug with fixed semi-continuous or semi-integer variables.
  • Fixed wrong infeasible/unbounded status if model is dualized (PreDual=1).
  • Fixed issue with end of replay file in Python.
  • Fixed issue on AIX where querying processor count could leave a pipe open.
  • Fixed issue with writing to an existing 7z file.
  • Fixed valgrind issue for a client that connects to a compute server.
  • Fixed bug with lost solution in distributed MIP.
  • Fixed crash in Python when passing strings as numbers.
  • Fixed issues originating from parallel garbage collection in Java and .NET.
  • Fixed small memory leak when writing variable hints to a *.hnt file.
  • Fixed a replay/compute server bug for models with range rows.
  • Fixed bug in Java, C++, and .NET with adding an expression to itself.
  • Fixed bug with the remove() method of quadratic expressions in C++, Java, .NET, and Python, which did not remove the given variable from the linear part of the expression.
  • Fixed bug with models having more than 2 billion non-zeros when using a token server or a compute server license.
  • Fixed bug when querying the objective constant on models with piece-wise linear objective terms.
  • Fixed memory issue and segfault for models that contain continuous variable aggregation possibilities.
  • Fixed bug with distributed MIP giving an error 10005 for infeasible models.
  • Fixed bug with modifying bounds after having solved a piece-wise linear model.
  • Fixed bug with overshooting time limit in presolve for models that lead to many substitutions.
  • Fixed wrong answer with MIQCP models that have an unbounded root relaxation when using outer approximation.
  • Fixed potential segfault in out-of-memory situations.

Gurobi Optimizer v6.5.1

Bug Fixes

  • Fixed minor bug with long user names in licensing.
  • Fixed issue with NULL arguments to attribute and parameter query methods of compute server.
  • Fixed issue with querying variables and constraints from compute server.
  • Exit with SUBOPTIMAL status from barrier instead of getting into a seemingly infinite loop in barrier for some numerical issues.
  • Fixed bug where barrier could exit due to numerical issues and leave a permuted user model behind.
  • Minor fix in distributed MIP for switching from racing ramp-up to parallel search phase.
  • Record basis and PStart/DStart change in recording file.
  • Fixed wrong answer bug due to disconnected component solves and implied bound cuts.
  • Fixed bug with wrong declaration of SUBOPTIMAL for MIQCPs.
  • Fixed problem with printing an empty tuplelist in Python API.
  • Abort earlier if QP simplex runs into numerical issues.
  • Use hard-coded path to libaes65.so on Mac to fix bug in newer MacOS versions.
  • Fixed bug with accepting infeasible MIQCP solutions from fix-and-dive heuristic.
  • Only remove zeros and tiny coefficients from internal copy of MIQCPs instead of modifying user model.
  • Fixed bug in SARHSLow and SARHSUp computation for equations.
  • Make TuneOutput=3 display solve logs in Python.
  • Change default value for BarIterLimit to 1000 to fix a seemingly infinite loop.
  • Fixed license manager issue on Windows.
  • Fixed an integer overflow in presolve for very large models.
  • Fixed issue with overwriting record file on Windows.
  • Fixed segfault when replaying recorded file with UpdateMode=1.
  • Fixed license manager issue on AIX.
  • Output “model solved by another algorithm” instead of “Time limit exceeded” when barrier is interrupted by simplex in concurrent LP.
  • Do not assign license token to malformed token requests – fixes issues with port scanners.
  • Do not fix penalty variables in presolve if dual reductions are turned off.
  • Fixed problem with expr.remove() in Python.
  • Fixed problem with facility.py example.
  • Add support for simple_triplet_matrix in row-major order in R interface.
  • Move Record parameter to integer parameter enum in .NET interface.
  • Fixed potential issue for models with PWL objectives and variables with -infinity lower bounds.
  • Return AttributeError instead of GurobiError in Python interface when user requests a non-existent attribute.
  • Extend licensing to support new Linux network interface naming convention.
  • Modify barrier progress check.
  • Fix potential problem when using UpdateMode=1 and setObjective() in the object-oriented interfaces.
  • Fix a potential segfault for unbounded models with PWL objectives

Gurobi Optimizer v6.5.0

Bug Fixes

  • Fixed an issue on Mac OS X 10.11 (El Capitan) where System Integrity Protection caused the Python interface not to load.
  • Fixed a bug in the Python interface, where LogToConsole=0 would not disable some output.
  • Added missing DistributedMIPJobs parameter to Java and C++ interfaces.
  • Fixed an integer overflow on models with a large number of implied bounds.
  • Fixed a segfault on QCP models when use the parameter setting PreDual=2.
  • Fixed an issue that can occur when modifying indefinite QCP models to be positive semi-definite.
  • Fixed an issue with lazy constraints on models with a few variables.