Best Software for 2025 is now live!
Jiewen (Ada) W.
JW
Data Analyst at The Voleon Group

"How can I solve non-linear optimization with Gurobi Optimizer?"

In the case that I have a non-linear optimization, is there any way to solve it using the Gurobi Solver?
2 comments
Looks like you’re not logged in.
Users need to be logged in to answer questions
Log In
Gurobi Optimizer
Official Response
Gurobi Optimizer
GO
Gurobi Expert
0
These were some great insights at the time about handling non-linear problems in Gurobi. To add to this, recent versions of Gurobi have shown significant performance improvements for quadratic problems, particularly mixed-integer quadratic problems (MIQP, MIQCP, and non-convex MIQCP) and the v11.0 release can handle many types of nonlinear relationships. The ability to use piecewise linear approximations is still there and the suggestions for linearization and decomposition here remain very useful. It's up to the user to experiment and decide their preference based on the tradeoff between accuracy of modeling directly with nonlinear functions and performance of approximation. Here's a blog from Gurobi on their nonlinear capability: https://www.gurobi.com/resources/nonlinear-solving-unlocking-new-levels-of-accuracy/
Looks like you’re not logged in.
Users need to be logged in to write comments
Log In
Reply
Prashidha K.
PK
Optimisation Engineer at HIVERY
0
Gurobi is primarily designed to solve linear mix integer programs. Gurobi does support Quadratic programming to some extent with pretty good performance. You can formulate it in the same way you formulate a linear problem. However if your problem is beyond quadratic then you'll need to convert your problem into a linear form. There are various ways to do this. You can introduce extra variables and constraints to reformulate the non linear parts in a linear fashion. For some non-linear operations like absolute values, min, max, etc. you can use 'General Constraint Helper Functions' available in Gurobi that will linearise them in the background. Another option is to use decomposition methods (e.g. Bender's Decomposition) where you split the non-linear model into master-problem and a sub-problems in such a way the both of them are linear. This can be done by treating the variables of master-problem as constants in the sub-problem and vice versa. Then you solve Master and sub-problems iteratively by updating the variables or adding new constraints from the sub-problem into the master as Bender's cuts.
Looks like you’re not logged in.
Users need to be logged in to write comments
Log In
Reply