Many solver vendors have once again released new major versions in the past year. As with every year, we have seen advancements in linear and nonlinear, continuous and mixed-integer optimization. But 2025 was also characterized by a shift towards massive scalability and deeper hardware integration by the rise of GPU-accelerated first-order methods for linear programming.
In this short article, we revisit last years major updates to the solvers that are part of the GAMS distribution. In particular, we look at updates that were released with GAMS 49, 50, 51, or 52 and may be of interest to a GAMS user.
The “PDHG” Hype: Speeding Up Large-Scale LP
A major trend in 2025 was the adoption of Primal-Dual Hybrid Gradient (PDHG) algorithms. These first-order methods are designed for extremely large-scale linear programs (LP) where traditional methods may struggle and requirements on feasibility and optimality may be lower.
After Cardinal Optimization pioneered with a PDHG implementations in its commercial solver COPT in 2024, the previous year has seen the introduction or update of PDHG algorithms in COPT 7.2, Gurobi 13, HiGHS 1.10, Knitro 15, and Xpress 46. To enable the PDHG algorithms for these solvers, use the following options:
| solver | PDHG option |
|---|---|
| COPT | LpMethod = 6 (or LpMethod = 4 and ConcurrentLpMode = 1 or 3) |
| Gurobi | method = 6 |
| HiGHS | solver = pdlp |
| KNITRO | defaultAlg = 4 and barAlg = 4 |
| Xpress | barAlg = 4 |
Hardware Evolution: GPUs and ARM64
With the spread of PDHG, we also see an increased utilization of GPU hardware in solvers, though currently limited to chips by market giant NVIDIA. While already available for COPT in 2024, GPU-enabled PDHG has become available for HiGHS, Gurobi, and Xpress in the last year. With COPT 7.2.9, a GPU-accelerated Barrier algorithm has made its first appearance in the GAMS ecosystem.
For the distribution of GPU-enabled solvers, the size of NVIDIA’s CUDA libraries often poses a challenge. Also at GAMS, we have shied away from including large CUDA libraries and drivers into the distribution. For the use of GPU features in COPT, FICO Xpress, and HiGHS, it is therefore necessary that a user installs a compatible CUDA distribution. Gurobi went a different way and decided to provide an alternative 1GB all-inclusive GPU-enabled Gurobi library. A GAMS user can download this library separately and use it to replace the CPU-only Gurobi library in the GAMS system.
To enable the use of a NVIDIA GPU, set the following options:
| solver | GPU option |
|---|---|
| COPT | GPUMode = 1 or 2 (or LpMethod = 4 and ConcurrentLpMode = 1, 2, or 3) |
| Gurobi | pdhggpu = 1 |
| HiGHS | pdlp_gpu = true |
| Xpress | barHGGPU = 1 |
In addition to these vendors, also NVIDIA has published its own PDHG and GPU-accelerated MIP algorithms in form of the open-source solver cuOpt . Even though not part of the distribution, GAMS and NVIDIA have published a link to make cuOpt available for GAMS users on Linux/x86_64.
With 2025, GAMS also expanded its support for the ARM64 instruction set. With sufficiently many solvers providing libraries for Linux/ARM64, or source code we can compile, the GAMS distribution became available on this platform by the beginning of the year. By now, already all except for one solver are available for Linux/ARM64.
In addition, we have seen that Mosek and Knitro already dropped their support for macOS on Intel CPUs. While the GAMS system currently still includes the latest Mosek or Knitro libraries for this platform, we can expect similar steps from more solver vendors, and eventually also GAMS, in the future.
Improved Nonlinear and Global Optimization
The last year has also seen major progress in more traditional optimization areas.
The Optimization Firm has been busy churning out one release after another. We have seen a total of 9 updates to BARON over the year, bringing improvements in many areas , from presolve and convexity identification, over relaxation, separation, and reduction strategies, until memory management and computation of marginals.
With CONOPT being adopted by GAMS last year, initial development has focused on making the solver better accessible also outside the GAMS ecosystem. APIs for C++, Java, and Python are now available, garnished with documentation and a large collection of examples. Further, CONOPT has become the default NLP solver choice for SCIP (available in GAMS with upcoming version 53), and CONOPT’s basis-handling routines are now available for users of PATH (set factorization_method = conopt).
On the algorithmic side, CONOPT now chooses dynamically whether to scale conjugate gradients in the SQP method, leading to performance improvements especially for models with many superbasics. Further, presolve has been improved to potentially remove more constraints. Additional retrofitting in the CONOPT code base is on the way, building the basis for major improvements in the following years. Some may argue though that the most important development in CONOPT was the addition of an easter egg to entertain users by a story while the iterations are scrolling over the screen.
Cardinal Optimization has expanded into the area of nonlinear and nonconvex optimization, bringing a local optimizer for non-convex QCPs with COPT 7.2.5 and their first take on spatial branch-and-bound for (MI)QCP with version 8. This first version already includes important ingredients like RLT, BQP, and PSD cuts, convexity detection, OBBT, and local solves. Currently, the default automatic choice in COPT selects the global solver for MIQCPs only. To use the global solver also for QCPs, set option NonConvex = 2.
Gurobi 12 brought an interface for nonlinear constraints formulated as expression trees. This now allows to pass GAMS MINLP models to Gurobi without going through a large reformulation, one that assigned auxiliary variables to every element of an expression tree. This reformulation had the potential that solutions that were feasible (with respect to tolerances) to the problem that Gurobi solved were no longer feasible (with respect to the same tolerances) to the model instance that was formulated by the GAMS user. With Gurobi 12, this reformulation is now handled in Gurobi internally (and probably in a smarter way) and the solver can check feasibility on the original problem.
With version 13, Gurobi extended its capabilities for finding local optimal solutions to nonlinear problems by the addition of an interior point solver for non-convex NLPs. Having such a solver is not only important on its own, but also as an ingredient to find good primal solutions in the global solver. Gurobi’s automatic choice is to use the global solver. To use the local solver for an NLP, set option OptimalityTarget = 1. In addition, Gurobi now supports functions tanh and signpower, the latter being particularly useful when optimizing water or gas networks.
Knitro 15.0 brought a whole new Augmented Lagrangian algorithm for NLPs, which may especially be useful for degenerate problems. The algorithm reformulates nonlinear constraints c(x) = 0 into soft-constraints c(x) + r = 0 (thus LICQ is satisfied), and then adds the Euclidian norm of r as penalty term to the Lagrangian objective function. This reformulated problem may need to be solved repeatedly, with the weight on the penalty term increasing. Artelys reported considerate performance advantages of the new Augmented Lagrangian implementation on tax policy and pooling problems, when comparing to their interior point solver. The algorithm can be enabled by setting nlp_algorithm = 6.
From FICO, we have seen several updates to the global solver of Xpress over the last year. With version 46, SDP cuts have been added to tighten relaxations of quadratic constraints (option sdpCutStrategy . Further, the user now has the option to enable OBBT, a relatively expensive technique to compute tighter variable bounds by projecting the LP relaxation onto one variable at a time. To enable OBBT, set option globalPresolveOBBT to 1, 2, or 3.
Progress in Continuous and Mixed-Integer Linear Optimization
While the world may appear increasingly nonlinear and nonconvex, there often is a core of linear relations and discrete decisions. Further, many optimization techniques for nonlinear optimization rely on efficient methods for linear programs. Therefore, also the past year has seen progress in the algorithmic workhorse of mathematical optimization.
As with many mature solvers, there have been improvements in any phase of the solution process of COPT, Gurobi, and Xpress, each update yielding a small performance benefit when averaged over a large test set, but summed up leading to considerable improvements for COPT 8 , Gurobi 12 , Gurobi 13 , and Xpress 44, 45, and 46 .
One of these many small but fine improvements is found in the RINS primal heuristic in Gurobi. This heuristic is known to be particularly useful for improving feasible solutions, by looking at discrete variables for which the incumbent and the current node’s LP relaxation agree on a value. The heuristic then fixes these variables and (heuristically) solves the remaining subproblem. With a new version, Gurobi modified the heuristic so that it no longer requires an incumbent to run. Instead, also a good but infeasible guess may be used, e.g., the solution provided by a user when option MipStart has been enabled.
While HiGHS has included one of the strongest open-source interior point solvers for linear programs since its early years, version 1.12 brought another brand-new interior point solver into HiGHS. Newcomer HiPO complements the veteran IPX by exploiting multi-threading and offering more predictable running times, at the cost of possibly higher memory usage and less accuracy on some problems. To try out the new solver, set option solver = hipo.
Also the MIP solver in HiGHS has seen several updates in the last year. With version 1.11, advanced rounding heuristics “shifting” (enable via mip_heuristic_run_shifting = true) and “ZI rounding” (enable via mip_heuristic_run_zi_round = true) and the award-winning LP-free Feasibility Jump (enabled by default) have made its appearance. Further, probing and cut generation were improved.
Early in the year, we made HiGHS’ features for computing irreducible infeasible subsystems (IIS ) of infeasible problems and additional strategies to handle the starting point (mipstart ) available to GAMS users.
Mosek 11 brought performance improvements for the interior-point and branch-and-bound solvers. The former can now utilize symmetries in linear programs by applying folding (aggregation of symmetric columns; option MSK_IPAR_FOLDING_USE ). For the latter, we may now see faster presolve times, primal solutions being found earlier due to improved heuristics, restarts also after the root node, and faster parallel progress when a problem decomposes into independent components.
For Xpress 45, heuristics that precede the first solution of the LP relaxation have been extended and reorganized in a new parallel pre-root heuristics phase . In this new phase, Xpress may subdivide the problem, solve these smaller subproblems in parallel, thereby either focusing on improving feasibility or the objective function value, and join the solutions of the subproblems again. This split-solve-join sequence may have to be repeated several times in order to construct a good feasible solution. With the objective cutoff that such a solution provides, the size of the problem (and its LP relaxation) may be reduced, so that the pre-root heuristics can be particularly useful when the LP relaxation takes long to solve otherwise. To enable this new heuristics phase, set option heurEmphasis = 2 or adjust the effort via options preRootEffort and preRootWorklimit .
Major Advancements in Solver Links
Next to integrating constantly renewed libraries for about 30 solvers into the distribution, GAMS has been thinking on how to move their solver links up to a new level.
Most links currently access an instantiated model (the thing that GAMS generates when executing a solve statement) via the GMO library
. While it gives efficient access to linear constraints, quadratic coefficient matrices, nonlinear instructions, and first and second derivatives, it has its limitations when it comes to extensions to further types of variable, constraints, and objectives, when reformulations need to happen within the link, when the problem needs to be extended or modified, when solver callbacks need to be made available, or when the size of a problem prohibits storing an additional copy in the link.
GAMS has therefore decided to start the development of a new GAMS Solver Interface (GSI) library.
The library is written in modern C++, already allows constraints to be represented in a form that is more general than algebraic (in)equalities, and utilize the solvers problem storage when possible.
While more feature are implemented, we have also started to rewrite existing solver links to use the new library.
With GAMS 51, the links to Gurobi and Xpress have been switched over to GSI.
Even though the model instance is still build up into a GMO object, the new GSI-on-top-of-GMO based links have shown better performance on some instances than the older GMO-only links.
For the time being, the old links are still available under the names GurobiOld and XpressOld.
As a final note, we highlight an improvement that was made to the “QMaker” facility of our solver links.
Since GAMS models are formulated in a natural algebraic syntax, there is no need for the user to signify the vector of linear coefficients or the matrix of quadratic coefficients in an equation.
However, in particular MIP and MIQCP solvers often expect to be given these vectors and matrices explicitly.
It is therefore up to the GAMS system to derive this information from the algebraic instructions that define a constraint on the model side.
While this is relatively straight-forward for linear coefficients, extracting the quadratic coefficient matrix (Q) efficiently is a non-trivial task when the quadratic form is large.
The QMaker facility of GAMS’ solver links provide two algorithms for computing Q, which can even be run concurrently (look for a solver(link) option QExtractAlg), both based on automatic differentiation.
With GAMS 50, QMaker has been further extended to give users control on when the algorithms switch between sparse and dense computations.
This QExtractDenseSwitchFactor option is available (possibly under a similar name) for Convert, Cplex, Gurobi, Knitro, Mosek, ODHCplex, SHOT, and Xpress, and may be used, in conjunction with QExtractAlg, to tune the Q extraction for models with large quadratic constraints.
Outlook
While this post about last years progress is written, GAMS is busy finalizing the features for the first major release of 2026.
With GAMS 53, new versions SoPlex 8 and SCIP 10 from the SCIP Optimization Suite 10 will become available to GAMS users. Next to improvements in the mixed-integer linear and nonlinear programming solvers, this release also makes the Benders’ Decomposition framework available to GAMS users, in addition to possibilities to use CONOPT as NLP solver in SCIP and to compute irreducible infeasible subsystems for infeasible problems.
With Lindo API 16 , enhancements in performance can be expected due to new primal heuristics, improved integration of LP and NLP subsolvers, and tighter relaxations.
After 2025 has undoubtedly been an exciting year for mathematical programming solvers, we are curious to see what the new year will bring. For our solver links, the switch to GSI and the closer integration of GSI with the GAMS execution system are one of many priorities.