# Issue Solving BQPs with JuMP+CPLEX

**URL:** <https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624>\
**Category:** Optimization (Mathematical)\
**Created:** [March 12, 2017, 3:47pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624 "2017-03-12T15:47:19Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![omalled](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/omalled/32/12532_2.png) [@omalled](https://discourse.julialang.org/u/omalled)\
**Post date:** [March 12, 2017, 3:47pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/1 "2017-03-12T15:47:19Z")

</div>

I am having some trouble solving binary quadratic programs with JuMP and CPLEX. Here is some code that illustrates the problem:

```julia
import JuMP
import CPLEX

function bqp(Q, c)
	m = JuMP.Model(solver=CPLEX.CplexSolver())
	@JuMP.variable(m, x[1:size(Q, 1)], Bin)
	@JuMP.objective(m, Min, dot(x, Q * x) + dot(c, x))
	return JuMP.solve(m)
end

bqp(eye(2, 2), ones(2))

```

Running this produces the error, “CPLEX Error 1029: Not a MIQP or fixed MIQP.”. Am I doing something wrong? Is this an issue in JuMP or CPLEX? Any help would be much appreciated.

Dan

---

<div class="post-metadata">

**Author:** ![joaquimg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joaquimg/32/223_2.png) [@joaquimg](https://discourse.julialang.org/u/joaquimg)\
**Post date:** [March 12, 2017, 4:32pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/2 "2017-03-12T16:32:36Z")

</div>

It works perfectly in Gurobi.

---

<div class="post-metadata">

**Author:** ![leethargo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/leethargo/32/6004_2.png) [@leethargo](https://discourse.julialang.org/u/leethargo)\
**Post date:** [March 12, 2017, 7:53pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/3 "2017-03-12T19:53:50Z")

</div>

Maybe CPLEX only supports a quadratic object function, but not quadratic constraints (in combination with integer variables). That’s what QP (quadratic program) is usually used for, compared to QCQP (quadratically constrained QP).

EDIT: disregard that, your model has the objective.

---

<div class="post-metadata">

**Author:** ![joehuchette](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joehuchette/32/32_2.png) [@joehuchette](https://discourse.julialang.org/u/joehuchette)\
**Post date:** [March 13, 2017, 3:01pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/4 "2017-03-13T15:01:32Z")

</div>

I can’t reproduce this. Which version of JuMP/CPLEX/CPLEX.jl are you using? (run `Pkg.status()` and `CPLEX.version()`).

---

<div class="post-metadata">

**Author:** ![omalled](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/omalled/32/12532_2.png) [@omalled](https://discourse.julialang.org/u/omalled)\
**Post date:** [March 13, 2017, 4:57pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/5 "2017-03-13T16:57:51Z")

</div>

```julia
julia> Pkg.status()
...
 - CPLEX 0.2.2
...
- JuMP 0.16.1
...

julia> CPLEX.version()
"12.7.0.0"

julia> VERSION
v"0.5.1"

```

---

<div class="post-metadata">

**Author:** ![joehuchette](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joehuchette/32/32_2.png) [@joehuchette](https://discourse.julialang.org/u/joehuchette)\
**Post date:** [March 13, 2017, 7:11pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/6 "2017-03-13T19:11:12Z")

</div>

Strange. Can you run `Pkg.update()` and then retry? Is there a more complete backtrace?

---

<div class="post-metadata">

**Author:** ![omalled](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/omalled/32/12532_2.png) [@omalled](https://discourse.julialang.org/u/omalled)\
**Post date:** [March 13, 2017, 9:01pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/7 "2017-03-13T21:01:14Z")

</div>

I did the Pkg.update(), and ran the code again. I got the same error. Here is the full stack trace:

```julia
julia> bqp(eye(2, 2), ones(2))
CPLEX Error 1029: Not a MIQP or fixed MIQP.
ERROR: CPLEX.CplexError(1029,"CPLEX Error 1029: Not a MIQP or fixed MIQP.\n")
 in set_prob_type!(::CPLEX.Model, ::Int64) at /homedir/.julia/v0.5/CPLEX/src/cpx_model.jl:135
 in set_prob_type!(::CPLEX.Model, ::Symbol) at /homedir/.julia/v0.5/CPLEX/src/cpx_model.jl:138
 in toggleproblemtype!(::CPLEX.CplexMathProgModel) at /homedir/.julia/v0.5/CPLEX/src/CplexSolverInterface.jl:265
 in setvartype!(::CPLEX.CplexMathProgModel, ::Array{Symbol,1}) at /homedir/.julia/v0.5/CPLEX/src/CplexSolverInterface.jl:247
 in #build#114(::Bool, ::Bool, ::JuMP.ProblemTraits, ::Function, ::JuMP.Model) at /homedir/.julia/v0.5/JuMP/src/solvers.jl:440
 in (::JuMP.#kw##build)(::Array{Any,1}, ::JuMP.#build, ::JuMP.Model) at ./<missing>:0
 in #solve#109(::Bool, ::Bool, ::Bool, ::Array{Any,1}, ::Function, ::JuMP.Model) at /homedir/.julia/v0.5/JuMP/src/solvers.jl:166
 in bqp(::Array{Float64,2}, ::Array{Float64,1}) at ./REPL[4]:5

```

---

<div class="post-metadata">

**Author:** ![miles.lubin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/miles.lubin/32/279_2.png) [@miles.lubin](https://discourse.julialang.org/u/miles.lubin)\
**Post date:** [March 13, 2017, 9:12pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/8 "2017-03-13T21:12:15Z")

</div>

Seems related to [https://github.com/JuliaOpt/CPLEX.jl/issues/115](https://github.com/JuliaOpt/CPLEX.jl/issues/115). Run `Pkg.update()` again to get CPLEX.jl 0.2.3 after [https://github.com/JuliaLang/METADATA.jl/pull/8314](https://github.com/JuliaLang/METADATA.jl/pull/8314) is merged.

---

<div class="post-metadata">

**Author:** ![omalled](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/omalled/32/12532_2.png) [@omalled](https://discourse.julialang.org/u/omalled)\
**Post date:** [March 14, 2017, 5:17pm UTC](https://discourse.julialang.org/t/issue-solving-bqps-with-jump-cplex/2624/9 "2017-03-14T17:17:34Z")

</div>

Thanks! That resolved my issue.
