Related to this PR and this post . We are trying to make a Nonlinear Least Squares model using JuMP, so that the matrices are sparse. From @miles.lubin suggestion, I’m building a model passing the residuals as NLexpressions, and creating another model where those expressions are constraints. I can also have constraints, and those are kept in another model.
function problem() m = Model() @variable(m, x[1:2]) @NLexpression(m, F1, 10 * (x - x^2)) # Residual @NLexpresison(m, F2, x - 1.0) # Residual @NLconstraint(m, x^3 - x <= 1.0) # Constraint mF, mc = NLSModel(m, [F1, F2]) end function NLSModel(mc, F :: Vector) @NLobjective(mc, Min, sum(Fi^2 for Fi in F)) ev = JuMP.NLPEvaluator(mc) MathProgBase.initialize(ev, [:ExprGraph]) mF = JuMP.Model() @objective(mF, Min, 0.0) @variable(mF, x[1:2]) # I Want to avoid this also for Fi in F expr = ev.subexpressions_as_julia_expressions[Fi.index] expr = :($expr == 0) JuMP.addNLconstraint(mF, expr) # ERROR end return mF, mc end
I get the following error:
ERROR: LoadError: Unrecognized expression x. JuMP variable objects and input coefficients should be spliced directly into expressions.
Thanks in advance.