# I am getting this error randomly while running optimization using NLopt

**URL:** <https://discourse.julialang.org/t/i-am-getting-this-error-randomly-while-running-optimization-using-nlopt/9309>\
**Category:** New to Julia\
**Created:** [February 25, 2018, 5:38am UTC](https://discourse.julialang.org/t/i-am-getting-this-error-randomly-while-running-optimization-using-nlopt/9309 "2018-02-25T05:38:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jic](https://avatars.discourse-cdn.com/v4/letter/j/2acd7d/32.png) [@jic](https://discourse.julialang.org/u/jic)\
**Post date:** [February 25, 2018, 5:38am UTC](https://discourse.julialang.org/t/i-am-getting-this-error-randomly-while-running-optimization-using-nlopt/9309/1 "2018-02-25T05:38:36Z")

</div>

Hello Julia experts. I am getting the following error message randomly while running an optimization in a for loop.  
Can someone help me to identify the issue?

julia\> status = solve(m2)  
in callback catch  
ERROR: Base.LinAlg.LAPACKException(1)  
Stacktrace:  
[1] chklapackerror(::Int64) at ./linalg/lapack.jl:34  
[2] trtrs!(::Char, ::Char, ::Char, ::Array{Float64,2}, ::Array{Float64,2}) at ./linalg/lapack.jl:3291  
[3] inv at ./linalg/triangular.jl:536 [inlined]  
[4] inv(::Array{Float64,2}) at ./linalg/dense.jl:655  
[5] myf2(::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64) at ./REPL[94]:13  
[6] (::JuMP.##166#168{#myf2})(::SubArray{Float64,1,Array{Float64,1},Tuple{UnitRange{Int64}},true}) at /Users/jangikcho/.julia/v0.6/JuMP/src/nlp.jl:1363  
[7] eval\_f(::JuMP.UserFunctionEvaluator, ::SubArray{Float64,1,Array{Float64,1},Tuple{UnitRange{Int64}},true}) at /Users/jangikcho/.julia/v0.6/JuMP/src/nlp.jl:1355  
[8] #forward\_eval#7(::ReverseDiffSparse.UserOperatorRegistry, ::Function, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{ReverseDiffSparse.NodeData,1}, ::SparseMatrixCSC{Bool,Int64}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}) at /Users/jangikcho/.julia/v0.6/ReverseDiffSparse/src/forward.jl:128  
[9] (::ReverseDiffSparse.#kw##forward\_eval)(::Array{Any,1}, ::ReverseDiffSparse.#forward\_eval, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{ReverseDiffSparse.NodeData,1}, ::SparseMatrixCSC{Bool,Int64}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}) at ./:0  
[10] forward\_eval\_all(::JuMP.NLPEvaluator, ::Array{Float64,1}) at /Users/jangikcho/.julia/v0.6/JuMP/src/nlp.jl:447  
[11] eval\_f(::JuMP.NLPEvaluator, ::Array{Float64,1}) at /Users/jangikcho/.julia/v0.6/JuMP/src/nlp.jl:480  
[12] (::NLopt.#f#4{JuMP.NLPEvaluator})(::Array{Float64,1}, ::Array{Float64,1}) at /Users/jangikcho/.julia/v0.6/NLopt/src/NLoptSolverInterface.jl:123  
[13] nlopt\_callback\_wrapper(::UInt32, ::Ptr{Float64}, ::Ptr{Float64}, ::Ptr{Void}) at /Users/jangikcho/.julia/v0.6/NLopt/src/NLopt.jl:427  
[14] optimize!(::NLopt.Opt, ::Array{Float64,1}) at /Users/jangikcho/.julia/v0.6/NLopt/src/NLopt.jl:526  
[15] optimize!(::NLopt.NLoptMathProgModel) at /Users/jangikcho/.julia/v0.6/NLopt/src/NLoptSolverInterface.jl:203  
[16] #solvenlp#165(::Bool, ::Function, ::JuMP.Model, ::JuMP.ProblemTraits) at /Users/jangikcho/.julia/v0.6/JuMP/src/nlp.jl:1271  
[17] (::JuMP.#kw##solvenlp)(::Array{Any,1}, ::JuMP.#solvenlp, ::JuMP.Model, ::JuMP.ProblemTraits) at ./:0  
[18] #solve#116(::Bool, ::Bool, ::Bool, ::Array{Any,1}, ::Function, ::JuMP.Model) at /Users/jangikcho/.julia/v0.6/JuMP/src/solvers.jl:172  
[19] solve(::JuMP.Model) at /Users/jangikcho/.julia/v0.6/JuMP/src/solvers.jl:150

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [February 25, 2018, 5:45am UTC](https://discourse.julialang.org/t/i-am-getting-this-error-randomly-while-running-optimization-using-nlopt/9309/2 "2018-02-25T05:45:19Z")

</div>

That means something you’re doing a linear solve on is not invertable. Looks like it’s an `inv` call in your function `myf2`. Generally you shouldn’t use `inv` anyways, and instead use matrix factorizations and `\`. Could you share `myf2`?

---

<div class="post-metadata">

**Author:** ![jic](https://avatars.discourse-cdn.com/v4/letter/j/2acd7d/32.png) [@jic](https://discourse.julialang.org/u/jic)\
**Post date:** [February 25, 2018, 6:11am UTC](https://discourse.julialang.org/t/i-am-getting-this-error-randomly-while-running-optimization-using-nlopt/9309/3 "2018-02-25T06:11:51Z")

</div>

Thank you for the response. I do have an inverse function within myf2.  
Here is myf2. In the function,

```
function myf2(a1,a2,a3,a4,a5,b1,b2,b3,b4,b5)
w1 = [a1;a2;a3;a4;a5]' * xcrit
w2 = [b1;b2;b3;b4;b5]' * xcrit
z1 = [a1;a2;a3;a4;a5]' * ycrit
z2 = [b1;b2;b3;b4;b5]' * ycrit

S1 = [var(w1) cov(w1',w2'); cov(w2',w1') var(w2)]
S2 = [var(z1) cov(z1',z2'); cov(z2',z1') var(z2)]

dist = inv(S1) * S2 - eye(2)

result = sqrt(sum(dist.*dist))
return result
end

```

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [February 25, 2018, 7:05am UTC](https://discourse.julialang.org/t/i-am-getting-this-error-randomly-while-running-optimization-using-nlopt/9309/4 "2018-02-25T07:05:06Z")

</div>

> [@jic](#):
>
> I do have an inverse function within myf2.

No you don’t. That’s the error. For some reason you’re ending up in a place in parameter space where it’s not invertable. You may want to use `pinv` instead, or put some constraints on the model.

---

<div class="post-metadata">

**Author:** ![jic](https://avatars.discourse-cdn.com/v4/letter/j/2acd7d/32.png) [@jic](https://discourse.julialang.org/u/jic)\
**Post date:** [February 25, 2018, 7:54am UTC](https://discourse.julialang.org/t/i-am-getting-this-error-randomly-while-running-optimization-using-nlopt/9309/5 "2018-02-25T07:54:25Z")

</div>

Since it’s inverse of a 2x2 matrix, I wrote out the formula of inverse matrix and it works without the error.  
Thank you very much for the help!
