# Sin(x), cos(x) w/ Gurobi?

**URL:** https://discourse.julialang.org/t/sin-x-cos-x-w-gurobi/123179
**Category:** Optimization (Mathematical)
**Tags:** gurobi
**Created:** [November 27, 2024, 4:13pm UTC](https://discourse.julialang.org/t/sin-x-cos-x-w-gurobi/123179 "2024-11-27T16:13:38Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![SingingKim](https://avatars.discourse-cdn.com/v4/letter/s/5fc32e/32.png) [@SingingKim](https://discourse.julialang.org/u/SingingKim)
#### Post date: [November 27, 2024, 4:13pm UTC](https://discourse.julialang.org/t/sin-x-cos-x-w-gurobi/123179/1 "2024-11-27T16:13:38Z")

</div>

Can I use sinusoidal functions with JuMP/Gurobi? something like:

```julia
using JuMP, Gurobi
m=Model(Gurobi.Optimizer)
@variable(m, -2π <= x <= 2π)
@objective(m, Min, cos(x))
optimize!(m)

```

It seems like there’s a section on sine/cosine functions supported by Gurobi:

[https://docs.gurobi.com/projects/optimizer/en/current/reference/c/model.html#c.GRBaddgenconstrSin](https://docs.gurobi.com/projects/optimizer/en/current/reference/c/model.html#c.GRBaddgenconstrSin)

---

<div class="post-metadata">

### Author: ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)
#### Post date: [November 27, 2024, 9:21pm UTC](https://discourse.julialang.org/t/sin-x-cos-x-w-gurobi/123179/2 "2024-11-27T21:21:06Z")

</div>

See [GitHub - jump-dev/Gurobi.jl: A Julia interface to the Gurobi Optimizer](https://github.com/jump-dev/Gurobi.jl?tab=readme-ov-file#the-c-api-from-jump)

Otherwise, if you have Gurobi v12, there’s an experimental interface in `] add Gurobi#master`.

It’s not officially released because there are still a few known bugs: [Track nonlinear resultant vars outside of MOI by simonbowly · Pull Request #590 · jump-dev/Gurobi.jl · GitHub](https://github.com/jump-dev/Gurobi.jl/pull/590) (But these are mostly a problem if you’re going to delete variables or constraints, or use some of the more advanced features of MathOptInterface.)

```julia
julia> using JuMP, Gurobi

julia> m=Model(Gurobi.Optimizer)
Set parameter LicenseID to value 890341
A JuMP Model
├ solver: Gurobi
├ objective_sense: FEASIBILITY_SENSE
├ num_variables: 0
├ num_constraints: 0
└ Names registered in the model: none

julia> @variable(m, -2π <= x <= 2π)
x

julia> @objective(m, Min, cos(x))
cos(x)

julia> optimize!(m)
Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (mac64[x86] - Darwin 24.1.0 24B83)

CPU model: Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads

Optimize a model with 0 rows, 3 columns and 0 nonzeros
Model fingerprint: 0x63accd21
Model has 1 general nonlinear constraint (1 nonlinear terms)
Variable types: 3 continuous, 0 integer (0 binary)
Coefficient statistics:
  Matrix range [0e+00, 0e+00]
  Objective range [1e+00, 1e+00]
  Bounds range [6e+00, 6e+00]
  RHS range [0e+00, 0e+00]
Presolve model has 1 nlconstr
Added 1 variables to disaggregate expressions.
Presolve time: 0.00s
Presolved: 9 rows, 5 columns, 21 nonzeros
Presolved model has 1 nonlinear constraint(s)

Solving non-convex MINLP

Variable types: 5 continuous, 0 integer (0 binary)
Found heuristic solution: objective 1.0000000

Root relaxation: objective -1.000000e+00, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes | Current Node | Objective Bounds | Work
 Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time

     0 0 -1.00000 0 1 1.00000 -1.00000 200% - 0s
     0 0 -1.00000 0 1 1.00000 -1.00000 200% - 0s
     0 0 -1.00000 0 1 1.00000 -1.00000 200% - 0s
H 0 0 -0.9966721 -1.00000 0.33% - 0s
     0 2 -1.00000 0 1 -0.99667 -1.00000 0.33% - 0s
* 4 4 2 -0.9999769 -1.00000 0.00% 3.2 0s
H 6 3 -1.0000000 -1.00000 0.00% 2.2 0s

Explored 7 nodes (18 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 4: -1 -0.999977 -0.996672 1 

Optimal solution found (tolerance 1.00e-04)
Best objective -1.000000000000e+00, best bound -1.000000000000e+00, gap 0.0000%

User-callback calls 145, time in user-callback 0.00 sec

julia> value(x)
3.1418746727522655

```

---

<div class="post-metadata">

### Author: ![SingingKim](https://avatars.discourse-cdn.com/v4/letter/s/5fc32e/32.png) [@SingingKim](https://discourse.julialang.org/u/SingingKim)
#### Post date: [November 28, 2024, 2:19am UTC](https://discourse.julialang.org/t/sin-x-cos-x-w-gurobi/123179/3 "2024-11-28T02:19:08Z")

</div>

Great! Thank you so much!
