Skip to content

Commit 549af0e

Browse files
committed
A few fixes
1 parent 5ea3443 commit 549af0e

File tree

1 file changed

+36
-11
lines changed

1 file changed

+36
-11
lines changed

src/moi_nlp_model.jl

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ function NLPModels.cons!(nlp::MathOptNLPModel, x::AbstractVector, c::AbstractVec
138138
end
139139
end
140140
if nlp.meta.nnln > nlp.quadcon.nquad
141-
MOI.eval_constraint(nlp.eval, view(c, (nlp.meta.nlin + nlp.quadcon.nquad + 1):(nlp.meta.nlin + nlp.meta.nnln)), x)
141+
MOI.eval_constraint(nlp.eval, view(c, (nlp.meta.nlin + nlp.quadcon.nquad + 1):(nlp.meta.ncon), x)
142142
end
143143
end
144144
return c
@@ -192,14 +192,14 @@ function NLPModels.jac_structure!(
192192
for i = 1:(nlp.quadcon.nquad)
193193
qcon = nlp.quadcon.constraints[i]
194194
ind_quad = (nlp.lincon.nnzj + index + 1):(nlp.lincon.nnzj + index + qcon.nnzg)
195-
view(rows, ind_quad) .= i
195+
view(rows, ind_quad) .= nlp.meta.nlin .+ i
196196
view(cols, ind_quad) .= qcon.g
197197
index += qcon.nnzg
198198
end
199199
end
200200
if nlp.meta.nnln > nlp.quadcon.nquad
201-
ind_nnln = (nlp.lincon.nnzj + nlp.quadcon.nnzj + 1):(nlp.lincon.nnzj + nlp.quadcon.nnzj + nlp.nlcon.nnzj)
202-
view(rows, ind_nnln) .= nlp.quadcon.nquad .+ nlp.nlcon.jac_rows
201+
ind_nnln = (nlp.lincon.nnzj + nlp.quadcon.nnzj + 1):(nlp.meta.nnzj)
202+
view(rows, ind_nnln) .= nlp.meta.nlin .+ nlp.quadcon.nquad .+ nlp.nlcon.jac_rows
203203
view(cols, ind_nnln) .= nlp.nlcon.jac_cols
204204
end
205205
end
@@ -275,7 +275,7 @@ function NLPModels.jac_coord!(nlp::MathOptNLPModel, x::AbstractVector, vals::Abs
275275
end
276276
end
277277
if nlp.meta.nnln > nlp.quadcon.nquad
278-
ind_nnln = (nlp.lincon.nnzj + nlp.quadcon.nnzj + 1):(nlp.lincon.nnzj + nlp.quadcon.nnzj + nlp.nlcon.nnzj)
278+
ind_nnln = (nlp.lincon.nnzj + nlp.quadcon.nnzj + 1):(nlp.meta.nnzj)
279279
MOI.eval_constraint_jacobian(nlp.eval, view(vals, ind_nnln), x)
280280
end
281281
end
@@ -306,16 +306,41 @@ function NLPModels.jprod_nln!(
306306
Jv::AbstractVector,
307307
)
308308
increment!(nlp, :neval_jprod_nln)
309-
if nlp.meta.nnln > nlp.quadcon.nquad
310-
ind_nnln = (nlp.quadcon.nquad + 1):(nlp.meta.nnln)
311-
MOI.eval_constraint_jacobian_product(nlp.eval, view(Jv, ind_nnln), x, v)
312-
end
313-
(nlp.meta.nnln == nlp.quadcon.nquad) && (Jv .= 0.0)
314309
if nlp.quadcon.nquad > 0
315310
for i = 1:(nlp.quadcon.nquad)
316311
# Jv[i] = (Aᵢ * x + bᵢ)ᵀ * v
317312
qcon = nlp.quadcon.constraints[i]
318-
Jv[i] += coo_sym_dot(qcon.A.rows, qcon.A.cols, qcon.A.vals, x, v) + dot(qcon.b, v)
313+
Jv[i] = coo_sym_dot(qcon.A.rows, qcon.A.cols, qcon.A.vals, x, v) + dot(qcon.b, v)
314+
end
315+
end
316+
if nlp.meta.nnln > nlp.quadcon.nquad
317+
ind_nnln = (nlp.quadcon.nquad + 1):(nlp.meta.nnln)
318+
MOI.eval_constraint_jacobian_product(nlp.eval, view(Jv, ind_nnln), x, v)
319+
end
320+
return Jv
321+
end
322+
323+
function NLPModels.jprod!(
324+
nlp::MathOptNLPModel,
325+
x::AbstractVector,
326+
v::AbstractVector,
327+
Jv::AbstractVector,
328+
)
329+
increment!(nlp, :neval_jprod)
330+
if nlp.meta.nlin > 0
331+
jprod_lin!(nlp, nlp.lincon.jacobian.rows, nlp.lincon.jacobian.cols, nlp.lincon.jacobian.vals, v, Jv)
332+
end
333+
if nlp.meta.nnln > 0
334+
if nlp.quadcon.nquad > 0
335+
for i = (nlp.meta.nlin + 1):(nlp.meta.nlin + nlp.quadcon.nquad)
336+
# Jv[i] = (Aᵢ * x + bᵢ)ᵀ * v
337+
qcon = nlp.quadcon.constraints[i]
338+
Jv[i] = coo_sym_dot(qcon.A.rows, qcon.A.cols, qcon.A.vals, x, v) + dot(qcon.b, v)
339+
end
340+
end
341+
if nlp.meta.nnln > nlp.quadcon.nquad
342+
ind_nnln = (nlp.meta.nlin + nlp.quadcon.nquad + 1):(nlp.meta.ncon)
343+
MOI.eval_constraint_jacobian_product(nlp.eval, view(Jv, ind_nnln), x, v)
319344
end
320345
end
321346
return Jv

0 commit comments

Comments
 (0)