https://github.com/SciML/Optimization.jl

Mathematical Optimization in Julia. Local, global, gradient-based and derivative-free. Linear, Quadratic, Convex, Mixed-Integer, and Nonlinear Optimization in one simple, fast, and differentiable interface.

https://github.com/SciML/Optimization.jl

Science Score: 59.0%

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

  • 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
    7 of 73 committers (9.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.6%) to scientific vocabulary

Keywords

algorithmic-differentiation automatic-differentiation convex-optimization derivative-free-optimization global-optimization hacktoberfest julia local-optimization mixed-integer-programming nonlinear-optimization optimization scientific-machine-learning sciml

Keywords from Contributors

ode differential-equations sde neural-sde pde dae symbolic-computation ordinary-differential-equations differentialequations numerical
Last synced: 6 months ago · JSON representation

Repository

Mathematical Optimization in Julia. Local, global, gradient-based and derivative-free. Linear, Quadratic, Convex, Mixed-Integer, and Nonlinear Optimization in one simple, fast, and differentiable interface.

Basic Info
Statistics
  • Stars: 791
  • Watchers: 13
  • Forks: 98
  • Open Issues: 105
  • Releases: 107
Topics
algorithmic-differentiation automatic-differentiation convex-optimization derivative-free-optimization global-optimization hacktoberfest julia local-optimization mixed-integer-programming nonlinear-optimization optimization scientific-machine-learning sciml
Created almost 6 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License

README.md

Optimization.jl

Join the chat at https://julialang.zulipchat.com #sciml-bridged Global Docs

codecov Build Status

ColPrac: Contributor's Guide on Collaborative Practices for Community Packages SciML Code Style

DOI

Optimization.jl is a package with a scope that is beyond your normal global optimization package. Optimization.jl seeks to bring together all of the optimization packages it can find, local and global, into one unified Julia interface. This means, you learn one package and you learn them all! Optimization.jl adds a few high-level features, such as integrating with automatic differentiation, to make its usage fairly simple for most cases, while allowing all of the options in a single unified interface.

Installation

Assuming that you already have Julia correctly installed, it suffices to import Optimization.jl in the standard way:

julia using Pkg Pkg.add("Optimization")

The packages relevant to the core functionality of Optimization.jl will be imported accordingly and, in most cases, you do not have to worry about the manual installation of dependencies. Below is the list of packages that need to be installed explicitly if you intend to use the specific optimization algorithms offered by them:

Tutorials and Documentation

For information on using the package, see the stable documentation. Use the in-development documentation for the version of the documentation, which contains the unreleased features.

Examples

```julia using Optimization rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2 x0 = zeros(2) p = [1.0, 100.0]

prob = OptimizationProblem(rosenbrock, x0, p)

using OptimizationOptimJL sol = solve(prob, NelderMead())

using OptimizationBBO prob = OptimizationProblem(rosenbrock, x0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0]) sol = solve(prob, BBOadaptivederand1binradiuslimited()) ```

Note that Optim.jl is a core dependency of Optimization.jl. However, BlackBoxOptim.jl is not and must already be installed (see the list above).

Warning: The output of the second optimization task (BBO_adaptive_de_rand_1_bin_radiuslimited()) is currently misleading in the sense that it returns Status: failure (reached maximum number of iterations). However, convergence is actually reached and the confusing message stems from the reliance on the Optim.jl output struct (where the situation of reaching the maximum number of iterations is rightly regarded as a failure). The improved output struct will soon be implemented.

The output of the first optimization task (with the NelderMead() algorithm) is given below:

``` * Status: success

  • Candidate solution Final objective value: 3.525527e-09

  • Found with Algorithm: Nelder-Mead

  • Convergence measures √(Σ(yᵢ-ȳ)²)/n ≤ 1.0e-08

  • Work counters Seconds run: 0 (vs limit Inf) Iterations: 60 f(x) calls: 118 ```

We can also explore other methods in a similar way:

julia using ForwardDiff f = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff()) prob = OptimizationProblem(f, x0, p) sol = solve(prob, BFGS())

For instance, the above optimization task produces the following output:

``` * Status: success

  • Candidate solution Final objective value: 7.645684e-21

  • Found with Algorithm: BFGS

  • Convergence measures |x - x'| = 3.48e-07 ≰ 0.0e+00 |x - x'|/|x'| = 3.48e-07 ≰ 0.0e+00 |f(x) - f(x')| = 6.91e-14 ≰ 0.0e+00 |f(x) - f(x')|/|f(x')| = 9.03e+06 ≰ 0.0e+00 |g(x)| = 2.32e-09 ≤ 1.0e-08

  • Work counters Seconds run: 0 (vs limit Inf) Iterations: 16 f(x) calls: 53 ∇f(x) calls: 53 ```

julia prob = OptimizationProblem(f, x0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0]) sol = solve(prob, Fminbox(GradientDescent()))

The examples clearly demonstrate that Optimization.jl provides an intuitive way of specifying optimization tasks and offers a relatively easy access to a wide range of optimization algorithms.

Owner

  • Name: SciML Open Source Scientific Machine Learning
  • Login: SciML
  • Kind: organization
  • Email: contact@chrisrackauckas.com

Open source software for scientific machine learning

GitHub Events

Total
  • Create event: 44
  • Release event: 7
  • Issues event: 97
  • Watch event: 81
  • Delete event: 36
  • Issue comment event: 373
  • Push event: 232
  • Pull request review event: 83
  • Pull request review comment event: 76
  • Pull request event: 137
  • Fork event: 25
Last Year
  • Create event: 44
  • Release event: 7
  • Issues event: 97
  • Watch event: 81
  • Delete event: 36
  • Issue comment event: 373
  • Push event: 232
  • Pull request review event: 83
  • Pull request review comment event: 76
  • Pull request event: 137
  • Fork event: 25

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 1,723
  • Total Committers: 73
  • Avg Commits per committer: 23.603
  • Development Distribution Score (DDS): 0.558
Past Year
  • Commits: 308
  • Committers: 24
  • Avg Commits per committer: 12.833
  • Development Distribution Score (DDS): 0.581
Top Committers
Name Email Commits
Vaibhav Dixit v****t@g****m 761
Christopher Rackauckas a****s@c****m 305
Paras Puneet Singh 1****h 101
CompatHelper Julia c****y@j****g 74
Jonas Mackerodt j****6@i****k 63
Valentin Kaisermayer v****r@b****u 46
Sebastian Micluța-Câmpeanu m****5@g****m 32
mkg33 m****z@g****m 31
abhigupta768 a****8@g****m 28
Arno Strouwen a****n@t****e 26
github-actions[bot] 4****] 21
DanielVandH d****l@g****m 21
Alonso Martínez Cisneros a****9@g****m 14
JuliusMartensen j****n@g****m 13
Jonathan Fischer j****7@j****u 13
odow o****n@g****m 13
dependabot[bot] 4****] 11
Zentrik Z****k 11
Hossein Pourbozorg p****g@g****m 11
Fredrik Bagge Carlson b****n@g****m 11
AdityaPandeyCN a****6@g****m 11
Aayush Sabharwal a****l@j****m 10
Kirill Zubov k****3@g****m 6
David Lung l****m@g****m 5
kaandocal 2****l 5
William Moses gh@w****m 4
Yingbo Ma m****5@g****m 4
Avik Pal a****l@m****u 4
Alexander Demin 6****1 4
Anand a****j@u****u 3
and 43 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 234
  • Total pull requests: 378
  • Average time to close issues: 6 months
  • Average time to close pull requests: 27 days
  • Total issue authors: 124
  • Total pull request authors: 56
  • Average comments per issue: 9.03
  • Average comments per pull request: 1.55
  • Merged pull requests: 292
  • Bot issues: 0
  • Bot pull requests: 89
Past Year
  • Issues: 63
  • Pull requests: 125
  • Average time to close issues: 26 days
  • Average time to close pull requests: 20 days
  • Issue authors: 43
  • Pull request authors: 27
  • Average comments per issue: 1.68
  • Average comments per pull request: 0.83
  • Merged pull requests: 80
  • Bot issues: 0
  • Bot pull requests: 11
Top Authors
Issue Authors
  • Vaibhavdixit02 (21)
  • TorkelE (19)
  • ChrisRackauckas (15)
  • baggepinnen (10)
  • DanielVandH (6)
  • ValentinKaisermayer (6)
  • ArnoStrouwen (6)
  • prbzrg (5)
  • goerz (4)
  • avik-pal (3)
  • jlperla (3)
  • ForceBru (3)
  • sjdaines (3)
  • chooron (3)
  • avinashresearch1 (2)
Pull Request Authors
  • Vaibhavdixit02 (141)
  • github-actions[bot] (120)
  • ChrisRackauckas (50)
  • ParasPuneetSingh (17)
  • dependabot[bot] (15)
  • SebastianM-C (11)
  • AayushSabharwal (10)
  • baggepinnen (10)
  • ArnoStrouwen (10)
  • jonathanfischer97 (8)
  • avik-pal (6)
  • mxpoch (5)
  • oscardssmith (4)
  • ChrisRackauckas-Claude (4)
  • odow (4)
Top Labels
Issue Labels
bug (62) question (14) good first issue (7) wontfix (2) documentation (1) upstream (1)
Pull Request Labels
dependencies (15)

Dependencies

.github/workflows/CI.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v3 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/Documentation.yml actions
  • actions/checkout v2 composite
  • codecov/codecov-action v3 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/setup-julia latest composite
.github/workflows/Downstream.yml actions
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/FormatCheck.yml actions
  • actions/checkout v1 composite
  • julia-actions/setup-julia latest composite
.github/workflows/Invalidations.yml actions
  • actions/checkout v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-invalidations v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/CompatHelper.yml actions
.github/workflows/SpellCheck.yml actions
  • actions/checkout v4 composite
  • crate-ci/typos v1.16.23 composite