Tools
Functions evaluations
After calling one the API functions to get a function value, the number of times that function was called is stored inside the NLPModel
. For instance
using ADNLPModels, LinearAlgebra, NLPModels
nlp = ADNLPModel(x -> dot(x, x), zeros(2))
for i = 1:100
obj(nlp, rand(2))
end
neval_obj(nlp)
100
Some counters are available for all models, some are specific. In particular, there are additional specific counters for the nonlinear least squares models (the ones with residual
below).
Counter | Description |
---|---|
neval_obj | Objective |
neval_grad | Gradient |
neval_cons | Constraints |
neval_cons_lin | Linear constraints |
neval_cons_nln | Nonlinear constraints |
neval_jcon | One constraint - unused |
neval_jgrad | Gradient of one constraints - unused |
neval_jac | Jacobian |
neval_jac_lin | Linear constraints Jacobian |
neval_jac_nln | Nonlinear constraints Jacobian |
neval_jprod | Product of Jacobian and vector |
neval_jprod_lin | Product of linear constraints Jacobian and vector |
neval_jprod_nln | Product of nonlinear constraints Jacobian and vector |
neval_jtprod | Product of transposed Jacobian and vector |
neval_jtprod_lin | Product of transposed linear constraints Jacobian and vector |
neval_jtprod_nln | Product of transposed nonlinear constraints Jacobian and vector |
neval_hess | Hessian |
neval_hprod | Product of Hessian and vector |
neval_jhess | Individual Lagrangian Hessian evaluations |
neval_jhprod | Product of Hessian of j-th function and vector |
neval_residual | Residual function of nonlinear least squares model |
neval_jac_residual | Jacobian of the residual |
neval_jprod_residual | Product of Jacobian of residual and vector |
neval_jtprod_residual | Product of transposed Jacobian of residual and vector |
neval_hess_residual | Sum of Hessians of residuals |
neval_jhess_residual | Hessian of a residual component |
neval_hprod_residual | Product of Hessian of a residual component and vector |
To get the sum of all counters except cons
, jac
, jprod
and jtprod
called for a problem, use sum_counters
.
using ADNLPModels, LinearAlgebra, NLPModels
nlp = ADNLPModel(x -> dot(x, x), zeros(2))
obj(nlp, rand(2))
grad(nlp, rand(2))
sum_counters(nlp)
2
Querying problem type
There are some utility functions for querying the problem type:
has_bounds
: True when not all variables are free.bound_constrained
: True for problems with bounded variables and no other constraints.equality_constrained
: True when problem is constrained only by equalities.has_equalities
: True when problem has at least one equality constraint.inequality_constrained
: True when problem is constrained by inequalities.has_inequalities
: True when problem has at least one inequality constraint that isn't a bound.linearly_constrained
: True when problem is constrained by equalities or inequalities known to be linear.unconstrained
: True when problem is not constrained.