Dear Julia experts,

I have been using JuMP and NLopt for an optimization problem about a year ago and in trying to rerun the code which worked, I am getting an error message. I have three non-linear constraints (I am only showing one here) and I am trying to register my function(the actual function is not shown) using JuMP.register and find maximum of the function.

Please see my code below along with the error message.

CODE :

p = 10

m1 = Model(solver=NLoptSolver(algorithm=:LN_COBYLA))

#- define variables

@variable(m1, a[i=1:p])

@variable(m1, b[i=1:p])

function myf1(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10)

##-- my own function --##

end

JuMP.register(m1, :myf1, 2*p, myf1)

@NLobjective(m1, Max, myf1(a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]))

@constraint(m1, a’*a .== 1)

ERROR MESSAGE :

julia> JuMP.register(m1, :myf1, 2*p, myf1)

ERROR: MethodError: `register`

has no method matching register(::JuMP.Model, ::Symbol, ::Int64, ::Function)

Closest candidates are:

register(::Symbol, ::Integer, ::Function, ::Function)

register(::Symbol, ::Integer, ::Function, ::Function, ::Function)

I tried to change the order to the candidates but cannot find the syntax that works.

Can someone please help me to fix the error?

Thank you.