# Solving nonconvex problems using Gurobi

**URL:** https://discourse.julialang.org/t/solving-nonconvex-problems-using-gurobi/91283
**Category:** Optimization (Mathematical)
**Tags:** question, jump
**Created:** [December 5, 2022, 10:14pm UTC](https://discourse.julialang.org/t/solving-nonconvex-problems-using-gurobi/91283 "2022-12-05T22:14:49Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![math\_opt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/math_opt/32/25317_2.png) [@math\_opt](https://discourse.julialang.org/u/math_opt)
#### Post date: [December 5, 2022, 10:14pm UTC](https://discourse.julialang.org/t/solving-nonconvex-problems-using-gurobi/91283/1 "2022-12-05T22:14:49Z")

</div>

I just wanted to confirm if this is the right way to solve a nonconvex problem with bilinear terms (continuous times continuous variables) using Gurobi. I assumed to define a nonlinear constraint or objective, I should be using `@NLconstraint`; however, I get the following error:  
`ERROR: The solver does not support nonlinear problems (i.e., NLobjective and NLconstraint).`

So, basically the following problem throws the error:

```julia
using JuMP, Gurobi

model = Model(Gurobi.Optimizer)
set_optimizer_attribute(model, "NonConvex", 2)

@variable(model, x >= 0)
@variable(model, 0 <= y <= 10)
@NLconstraint(model, x*y <= 10)
@NLobjective(model, Max, x*y-3*x+2*y)

optimize!(model)

```

However, the following model works fine:

```julia
using JuMP, Gurobi

model = Model(Gurobi.Optimizer)
set_optimizer_attribute(model, "NonConvex", 2)

@variable(model, x >= 0)
@variable(model, 0 <= y <= 10)
@constraint(model, x*y <= 10)
@objective(model, Max, x*y-3*x+2*y)

optimize!(model)

```

So, I suppose if I am trying to solve a nonlinear problem with Gurobi I am fine with using `@constraint` instead of `@NLconstraint` even if the expression has nonlinear terms?

---

<div class="post-metadata">

### Author: ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)
#### Post date: [December 5, 2022, 10:39pm UTC](https://discourse.julialang.org/t/solving-nonconvex-problems-using-gurobi/91283/2 "2022-12-05T22:39:47Z")

</div>

Gurobi supports quadratic constraints as well as linear, and JuMP’s `@constraint` works for both. So this is fine.
