Skip to content

Instantly share code, notes, and snippets.

@odow
Created May 27, 2015 16:57
Show Gist options
  • Save odow/35b4cd3e4f5a78be1e1d to your computer and use it in GitHub Desktop.
Save odow/35b4cd3e4f5a78be1e1d to your computer and use it in GitHub Desktop.
Unexpected behaviour of @defNLExpr in Julia/JuMP.jl
m1 = Model(solver=IpoptSolver(print_level=0))
@defVar(m1, x1)
@defNLExpr(myexpr1[i=1:2], i * sin(x1))
@addNLConstraint(m1, myexpr1[1] == 0.5)
solve(m1)
println("x1 = $(getValue(x1))")
println("Analytic: x = $(asin(0.5))")
# x1 = 0.5235987687270579
# Analytic: x = 0.5235987755982989
m2 = Model(solver=IpoptSolver(print_level=0))
@defVar(m2, x2)
@defNLExpr(myexpr2[i=1:2], i * sin(x2))
@addNLConstraint(m2, myexpr2[-5.7] == 0.5)
solve(m2)
println("x2 = $(getValue(x2))")
println("Analytic: x = $(asin(0.5 / -5.7))")
# x2 = -0.0878321842577059
# Analytic: x = -0.08783218481830377
m3 = Model(solver=IpoptSolver(print_level=0))
@defVar(m3, x3)
@defNLExpr(myexpr3[i=[:a, :b]], i * sin(x3))
@addNLConstraint(m3, myexpr3[-5.7] == 0.5)
solve(m3)
println("x3 = $(getValue(x3))")
println("Analytic: x = $(asin(0.5 / -5.7))")
# x3 = -0.0878321842577059
# Analytic: x = -0.08783218481830377
m4 = Model(solver=IpoptSolver(print_level=0))
@defVar(m4, x4)
@defNLExpr(myexpr4[i=[:a, :b]], i * sin(x4))
@addNLConstraint(m4, myexpr4[1] == 0.5)
solve(m4)
println("x4 = $(getValue(x4))")
println("Analytic: x = $(asin(0.5))")
# x4 = 0.5235987687270579
# Analytic: x = 0.5235987755982989
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment