Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/NLPModelsJuMP.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
module NLPModelsJuMP

import NLPModels: @lencheck
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it's just the import now ? But no use of the macro in the model?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tmigot I have added changes. If there is anything else you have on mind or any part of the issue I am not understanding, please describe here further.

export @lencheck

include("utils.jl")
include("moi_nlp_model.jl")
include("moi_nls_model.jl")
Expand Down
8 changes: 8 additions & 0 deletions src/moi_nlp_model.jl
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ function nlp_model(moimodel::MOI.ModelLike; hessian::Bool = true, name::String =
end

function NLPModels.obj(nlp::MathOptNLPModel, x::AbstractVector)
@lencheck nlp.meta.nvar x
increment!(nlp, :neval_obj)
if nlp.obj.type == "LINEAR"
res = dot(nlp.obj.gradient, x) + nlp.obj.constant
Expand All @@ -91,6 +92,7 @@ function NLPModels.obj(nlp::MathOptNLPModel, x::AbstractVector)
end

function NLPModels.grad!(nlp::MathOptNLPModel, x::AbstractVector, g::AbstractVector)
@lencheck nlp.meta.nvar x
increment!(nlp, :neval_grad)
if nlp.obj.type == "LINEAR"
g .= nlp.obj.gradient
Expand All @@ -112,6 +114,8 @@ function NLPModels.cons_lin!(nlp::MathOptNLPModel, x::AbstractVector, c::Abstrac
end

function NLPModels.cons_nln!(nlp::MathOptNLPModel, x::AbstractVector, c::AbstractVector)
@lencheck nlp.meta.nvar x
@lencheck nlp.meta.nnln c
increment!(nlp, :neval_cons_nln)
if nlp.quadcon.nquad > 0
for i = 1:(nlp.quadcon.nquad)
Expand All @@ -126,6 +130,8 @@ function NLPModels.cons_nln!(nlp::MathOptNLPModel, x::AbstractVector, c::Abstrac
end

function NLPModels.cons!(nlp::MathOptNLPModel, x::AbstractVector, c::AbstractVector)
@lencheck nlp.meta.nvar x
@lencheck nlp.meta.ncon c
increment!(nlp, :neval_cons)
if nlp.meta.nlin > 0
coo_prod!(nlp.lincon.jacobian.rows, nlp.lincon.jacobian.cols, nlp.lincon.jacobian.vals, x, c)
Expand Down Expand Up @@ -213,13 +219,15 @@ function NLPModels.jac_structure!(
end

function NLPModels.jac_lin_coord!(nlp::MathOptNLPModel, x::AbstractVector, vals::AbstractVector)
@lencheck nlp.meta.nvar x
increment!(nlp, :neval_jac_lin)
index_lin = 1:(nlp.lincon.nnzj)
view(vals, index_lin) .= nlp.lincon.jacobian.vals
return vals
end

function NLPModels.jac_nln_coord!(nlp::MathOptNLPModel, x::AbstractVector, vals::AbstractVector)
@lencheck nlp.meta.nvar x
increment!(nlp, :neval_jac_nln)
if nlp.quadcon.nquad > 0
index = 0
Expand Down
17 changes: 17 additions & 0 deletions src/moi_nls_model.jl
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ function MathOptNLSModel(cmodel::JuMP.Model, F; hessian::Bool = true, name::Stri
end

function NLPModels.residual!(nls::MathOptNLSModel, x::AbstractVector, Fx::AbstractVector)
@lencheck nls.nls_meta.nvar x
@lencheck nls.nls_meta.nequ Fx
increment!(nls, :neval_residual)
if nls.nls_meta.nlin > 0
coo_prod!(
Expand Down Expand Up @@ -124,6 +126,7 @@ function NLPModels.jac_coord_residual!(
x::AbstractVector,
vals::AbstractVector,
)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_jac_residual)
if nls.nls_meta.nlin > 0
view(vals, 1:(nls.linequ.nnzj)) .= nls.linequ.jacobian.vals
Expand All @@ -144,6 +147,7 @@ function NLPModels.jprod_residual!(
v::AbstractVector,
Jv::AbstractVector,
)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_jprod_residual)
nls.nls_meta.nlin > 0 && (Jv .= 0.0)
if nls.nls_meta.nnln > 0
Expand All @@ -165,6 +169,7 @@ function NLPModels.jtprod_residual!(
v::AbstractVector,
Jtv::AbstractVector,
)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_jtprod_residual)
nls.nls_meta.nlin > 0 && (Jtv .= 0.0)
if nls.nls_meta.nnln > 0
Expand Down Expand Up @@ -198,6 +203,7 @@ function NLPModels.hess_coord_residual!(
v::AbstractVector,
vals::AbstractVector,
)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_hess_residual)
if nls.nls_meta.nnln > 0
MOI.eval_hessian_lagrangian(nls.Feval, vals, x, 0.0, view(v, nls.nls_meta.nln))
Expand All @@ -212,6 +218,7 @@ function NLPModels.hprod_residual!(
v::AbstractVector,
Hiv::AbstractVector,
)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_hprod_residual)
if i ∈ nls.nls_meta.lin
Hiv .= 0.0
Expand All @@ -224,6 +231,7 @@ function NLPModels.hprod_residual!(
end

function NLPModels.obj(nls::MathOptNLSModel, x::AbstractVector)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_obj)
obj = 0.0
if nls.nls_meta.nnln > 0
Expand All @@ -239,6 +247,7 @@ function NLPModels.obj(nls::MathOptNLSModel, x::AbstractVector)
end

function NLPModels.grad!(nls::MathOptNLSModel, x::AbstractVector, g::AbstractVector)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_grad)
if nls.nls_meta.nnln > 0
MOI.eval_objective_gradient(nls.ceval, g, x)
Expand All @@ -252,12 +261,16 @@ function NLPModels.grad!(nls::MathOptNLSModel, x::AbstractVector, g::AbstractVec
end

function NLPModels.cons_lin!(nls::MathOptNLSModel, x::AbstractVector, c::AbstractVector)
@lencheck nls.nls_meta.nvar x
@lencheck nls.meta.ncon c
increment!(nls, :neval_cons_lin)
coo_prod!(nls.lincon.jacobian.rows, nls.lincon.jacobian.cols, nls.lincon.jacobian.vals, x, c)
return c
end

function NLPModels.cons_nln!(nls::MathOptNLSModel, x::AbstractVector, c::AbstractVector)
@lencheck nls.nls_meta.nvar x
@lencheck nls.meta.nnln c
increment!(nls, :neval_cons_nln)
if nls.quadcon.nquad > 0
for i = 1:(nls.quadcon.nquad)
Expand All @@ -272,6 +285,8 @@ function NLPModels.cons_nln!(nls::MathOptNLSModel, x::AbstractVector, c::Abstrac
end

function NLPModels.cons!(nls::MathOptNLSModel, x::AbstractVector, c::AbstractVector)
@lencheck nls.nls_meta.nvar x
@lencheck nls.meta.ncon c
increment!(nls, :neval_cons)
if nls.meta.nlin > 0
coo_prod!(nls.lincon.jacobian.rows, nls.lincon.jacobian.cols, nls.lincon.jacobian.vals, x, c)
Expand Down Expand Up @@ -359,13 +374,15 @@ function NLPModels.jac_structure!(
end

function NLPModels.jac_lin_coord!(nls::MathOptNLSModel, x::AbstractVector, vals::AbstractVector)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_jac_lin)
index_lin = 1:(nls.lincon.nnzj)
view(vals, index_lin) .= nls.lincon.jacobian.vals
return vals
end

function NLPModels.jac_nln_coord!(nls::MathOptNLSModel, x::AbstractVector, vals::AbstractVector)
@lencheck nls.nls_meta.nvar x
increment!(nls, :neval_jac_nln)
if nls.quadcon.nquad > 0
index = 0
Expand Down