NLPModels

Data Structures for Optimization Models

https://github.com/juliasmoothoptimizers/nlpmodels.jl

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 20 committers (5.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.1%) to scientific vocabulary

Keywords

julia julia-language nlpmodels nonlinear-optimization nonlinear-programming optimization

Keywords from Contributors

factorization preconditioner matrices linear-operators linear-maps krylov optimization-algorithms performance-profile linear-systems cutest
Last synced: 4 months ago · JSON representation ·

Repository

Data Structures for Optimization Models

Basic Info
  • Host: GitHub
  • Owner: JuliaSmoothOptimizers
  • License: other
  • Language: Julia
  • Default Branch: main
  • Homepage:
  • Size: 5.13 MB
Statistics
  • Stars: 181
  • Watchers: 12
  • Forks: 37
  • Open Issues: 16
  • Releases: 57
Topics
julia julia-language nlpmodels nonlinear-optimization nonlinear-programming optimization
Created over 10 years ago · Last pushed 5 months ago
Metadata Files
Readme License Citation Zenodo

README.md

NLPModels

| Documentation | CI | Coverage | Release | DOI | |:-----------------:|:------:|:------------:|:-----------:|:-------:| | docs-stable docs-dev | build-gh build-cirrus | codecov | release | doi |

This package provides general guidelines to represent non-linear programming (NLP) problems in Julia and a standardized API to evaluate the functions and their derivatives. The main objective is to be able to rely on that API when designing optimization solvers in Julia.

How to Cite

If you use NLPModels.jl in your work, please cite using the format given in CITATION.cff.

Optimization Problems

Optimization problems are represented by an instance of (a subtype of) AbstractNLPModel. Such instances are composed of * an instance of NLPModelMeta, which provides information about the problem, including the number of variables, constraints, bounds on the variables, etc. * other data specific to the provenance of the problem.

See the documentation for details on the models and the API.

Installation

julia pkg> add NLPModels

Models

This package provides no models, although it allows the definition of manually written models.

Check the list of packages that define models in this page of the docs

Main Methods

If model is an instance of an appropriate subtype of AbstractNLPModel, the following methods are normally defined:

  • obj(model, x): evaluate f(x), the objective at x
  • cons(model x): evaluate c(x), the vector of general constraints at x

The following methods are defined if first-order derivatives are available:

  • grad(model, x): evaluate ∇f(x), the objective gradient at x
  • jac(model, x): evaluate J(x), the Jacobian of c at x as a sparse matrix

If Jacobian-vector products can be computed more efficiently than by evaluating the Jacobian explicitly, the following methods may be implemented:

  • jprod(model, x, v): evaluate the result of the matrix-vector product J(x)⋅v
  • jtprod(model, x, u): evaluate the result of the matrix-vector product J(x)ᵀ⋅u

The following method is defined if second-order derivatives are available:

  • hess(model, x, y): evaluate ∇²L(x,y), the Hessian of the Lagrangian at x and y

If Hessian-vector products can be computed more efficiently than by evaluating the Hessian explicitly, the following method may be implemented:

  • hprod(model, x, v, y): evaluate the result of the matrix-vector product ∇²L(x,y)⋅v

Several in-place variants of the methods above may also be implemented.

The complete list of methods that an interface may implement can be found in the documentation.

Attributes

NLPModelMeta objects have the following attributes (with S <: AbstractVector):

Attribute | Type | Notes ------------|--------------------|------------------------------------ nvar | Int | number of variables x0 | S | initial guess lvar | S | vector of lower bounds uvar | S | vector of upper bounds ifix | Vector{Int} | indices of fixed variables ilow | Vector{Int} | indices of variables with lower bound only iupp | Vector{Int} | indices of variables with upper bound only irng | Vector{Int} | indices of variables with lower and upper bound (range) ifree | Vector{Int} | indices of free variables iinf | Vector{Int} | indices of visibly infeasible bounds ncon | Int | total number of general constraints nlin | Int | number of linear constraints nnln | Int | number of nonlinear general constraints y0 | S | initial Lagrange multipliers lcon | S | vector of constraint lower bounds ucon | S | vector of constraint upper bounds lin | Vector{Int} | indices of linear constraints nln | Vector{Int} | indices of nonlinear constraints jfix | Vector{Int} | indices of equality constraints jlow | Vector{Int} | indices of constraints of the form c(x) ≥ cl jupp | Vector{Int} | indices of constraints of the form c(x) ≤ cu jrng | Vector{Int} | indices of constraints of the form cl ≤ c(x) ≤ cu jfree | Vector{Int} | indices of "free" constraints (there shouldn't be any) jinf | Vector{Int} | indices of the visibly infeasible constraints nnzo | Int | number of nonzeros in the gradient nnzh | Int | number of nonzeros in the sparse Hessian nnzj | Int | number of nonzeros in the sparse Jacobian lin_nnzj | Int | number of nonzeros in the linear part of sparse Jacobian nln_nnzj | Int | number of nonzeros in the nonlinear part of sparse Jacobian minimize | Bool | true if optimize == minimize islp | Bool | true if the problem is a linear program name | String | problem name

Bug reports and discussions

If you think you found a bug, feel free to open an issue. Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.

If you want to ask a question not suited for a bug report, feel free to start a discussion here. This forum is for general discussion about this repository and the JuliaSmoothOptimizers, so questions about any of our packages are welcome.

Owner

  • Name: JuliaSmoothOptimizers
  • Login: JuliaSmoothOptimizers
  • Kind: organization
  • Location: DOI: 10.5281/zenodo.2655082

Infrastructure and Solvers for Continuous Optimization in Julia

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

authors:
  - affiliation: >-
      GERAD and Department of Mathematics and
      Industrial Engineering, Polytechnique Montréal,
      QC, Canada
    family-names: Orban
    given-names: Dominique
    orcid: 'https://orcid.org/0000-0002-8017-7687'
    email: dominique.orban@gerad.ca
  - affiliation: 'Netherlands eScience Center, Amsterdam, NL'
    family-names: Soares Siqueira
    given-names: Abel
    orcid: 'https://orcid.org/0000-0003-4451-281X'
    email: abel.s.siqueira@gmail.com
  - family-names: contributors
cff-version: 1.2.0
identifiers:
  - description: Zenodo archive
    type: doi
    value: 10.5281/zenodo.2558627
keywords:
  - Nonlinear Optimization
  - Julia
  - Nonlinear Programming
license: MPL-2.0
message: >-
  If you use this software, please cite it using the
  metadata from this file.
repository-code: >-
  https://github.com/JuliaSmoothOptimizers/NLPModels.jl
title: >-
  NLPModels.jl: Data Structures for Optimization Models
type: software
version: 0.20.0
date-released: '2023-03-23'

GitHub Events

Total
  • Create event: 17
  • Commit comment event: 4
  • Release event: 2
  • Issues event: 11
  • Watch event: 8
  • Delete event: 10
  • Issue comment event: 51
  • Push event: 60
  • Pull request review comment event: 30
  • Pull request review event: 36
  • Pull request event: 32
  • Fork event: 2
Last Year
  • Create event: 17
  • Commit comment event: 4
  • Release event: 2
  • Issues event: 11
  • Watch event: 8
  • Delete event: 10
  • Issue comment event: 51
  • Push event: 60
  • Pull request review comment event: 30
  • Pull request review event: 36
  • Pull request event: 32
  • Fork event: 2

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 622
  • Total Committers: 20
  • Avg Commits per committer: 31.1
  • Development Distribution Score (DDS): 0.477
Past Year
  • Commits: 30
  • Committers: 6
  • Avg Commits per committer: 5.0
  • Development Distribution Score (DDS): 0.6
Top Committers
Name Email Commits
Abel Soares Siqueira a****a@g****m 325
Dominique Orban d****n@g****m 153
tmigot t****t@g****m 62
Alexis Montoison a****n@p****a 35
Geoffroy Leconte g****0@g****m 12
AntoninKns a****s@e****r 7
github-actions[bot] 4****] 6
Páll Haraldsson P****n@g****m 5
RAYNAUD Paul (raynaudp) r****p@g****n 2
MaxenceGollier 1****r 2
Monssaf Toukal t****f@g****m 2
Tamas K. Papp t****p@g****m 2
probot-auto-merge[bot] p****] 2
Alberto De Marchi a****i@g****m 1
Elliot Saba s****t@g****m 1
JPD v****i@g****m 1
Julia TagBot 5****t 1
Rishabh Gupta 6****7 1
Xiukun Hu x****4@u****u 1
Tim Holy t****y@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 44
  • Total pull requests: 133
  • Average time to close issues: 6 months
  • Average time to close pull requests: 18 days
  • Total issue authors: 17
  • Total pull request authors: 16
  • Average comments per issue: 3.61
  • Average comments per pull request: 3.04
  • Merged pull requests: 109
  • Bot issues: 0
  • Bot pull requests: 16
Past Year
  • Issues: 7
  • Pull requests: 27
  • Average time to close issues: 2 days
  • Average time to close pull requests: 3 days
  • Issue authors: 2
  • Pull request authors: 4
  • Average comments per issue: 1.43
  • Average comments per pull request: 1.44
  • Merged pull requests: 18
  • Bot issues: 0
  • Bot pull requests: 2
Top Authors
Issue Authors
  • tmigot (15)
  • amontoison (7)
  • abelsiqueira (5)
  • dpo (3)
  • vepiteski (2)
  • frapac (2)
  • danphenderson (1)
  • votroto (1)
  • finmod (1)
  • AntoninKns (1)
  • MaxenceGollier (1)
  • tnnguyen103 (1)
  • JuliaTagBot (1)
  • geoffroyleconte (1)
  • sshin23 (1)
Pull Request Authors
  • tmigot (63)
  • amontoison (27)
  • github-actions[bot] (20)
  • abelsiqueira (14)
  • geoffroyleconte (7)
  • arnavk23 (6)
  • MaxenceGollier (4)
  • dpo (3)
  • timholy (2)
  • paraynaud (2)
  • JSOBot (2)
  • grishabh147 (1)
  • frapac (1)
  • aldma (1)
  • PallHaraldsson (1)
Top Labels
Issue Labels
enhancement (9) documentation (6) bug (4) Good first issue (3) up for grabs (1) question (1)
Pull Request Labels
formatting (16) automated pr (16) no changelog (16) documentation (7) CI (2) enhancement (2) ready to go (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 614 total
  • Total dependent packages: 40
  • Total dependent repositories: 8
  • Total versions: 48
juliahub.com: NLPModels

Data Structures for Optimization Models

  • Versions: 48
  • Dependent Packages: 40
  • Dependent Repositories: 8
  • Downloads: 614 Total
Rankings
Dependent packages count: 1.9%
Dependent repos count: 3.7%
Average: 3.9%
Forks count: 5.0%
Stargazers count: 5.2%
Last synced: 4 months ago

Dependencies

.github/workflows/CommentPR.yml actions
  • actions/github-script v3.1.0 composite
  • actions/github-script v6 composite
.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia latest composite
.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/breakage.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/download-artifact v2 composite
  • actions/upload-artifact v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/format_pr.yml actions
  • actions/checkout v2 composite
  • peter-evans/create-pull-request v3 composite