Skip to content

Commit 98099e2

Browse files
Merge pull request #1083 from SebastianM-C/fix
Continue fixing CI
2 parents 242fe78 + ebd909e commit 98099e2

File tree

50 files changed

+125
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+125
-112
lines changed

.github/workflows/Documentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
env:
2222
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For authentication with GitHub Actions token
2323
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # For authentication with SSH deploy key
24-
run: julia --project=docs/ --code-coverage=user docs/make.jl
24+
run: julia --color=yes --project=docs/ --code-coverage=user docs/make.jl
2525
- uses: julia-actions/julia-processcoverage@v1
2626
with:
2727
directories: src,lib/OptimizationBBO/src,lib/OptimizationCMAEvolutionStrategy/src,lib/OptimizationEvolutionary/src,lib/OptimizationGCMAES/src,lib/OptimizationMOI/src,lib/OptimizationMetaheuristics/src,lib/OptimizationMultistartOptimization/src,lib/OptimizationNLopt/src,lib/OptimizationNOMAD/src,lib/OptimizationOptimJL/src,lib/OptimizationOptimisers/src,lib/OptimizationPolyalgorithms/src,lib/OptimizationQuadDIRECT/src,lib/OptimizationSpeedMapping/src

.github/workflows/Downgrade.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
version: ${{ matrix.julia-version }}
2626
- uses: julia-actions/julia-downgrade-compat@v2
2727
with:
28-
skip: Pkg,TOML
28+
skip: Pkg,TOML,LinearAlgebra,Logging,Printf,Random,SparseArrays,Test
2929
- uses: julia-actions/julia-buildpkg@v1
3030
- uses: julia-actions/julia-runtest@v1
3131
with:

.github/workflows/DowngradeSublibraries.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,16 @@ jobs:
4444
- uses: julia-actions/setup-julia@v2
4545
with:
4646
version: ${{ matrix.julia-version }}
47+
- if: ${{ matrix.project == 'lib/OptimizationQuadDIRECT' }}
48+
run: julia --project -e 'using Pkg; Pkg.Registry.add(RegistrySpec(url = "https://github.com/HolyLab/HolyLabRegistry.git"));'
4749
- uses: julia-actions/julia-downgrade-compat@v2
4850
with:
49-
project: ${{ matrix.project }}
50-
skip: Pkg,TOML
51+
projects: ${{ matrix.project }}
52+
skip: Pkg,TOML,LinearAlgebra,Logging,Printf,Random,SparseArrays,Test
5153
- uses: julia-actions/julia-buildpkg@v1
5254
with:
5355
project: ${{ matrix.project }}
5456
- uses: julia-actions/julia-runtest@v1
5557
with:
5658
project: ${{ matrix.project }}
57-
ALLOW_RERESOLVE: false
59+
ALLOW_RERESOLVE: false

Project.toml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "Optimization"
22
uuid = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
3-
version = "5.0.0"
3+
version = "5.1.0"
44

55
[deps]
66
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
@@ -25,7 +25,7 @@ OptimizationOptimJL = {path = "lib/OptimizationOptimJL"}
2525
OptimizationOptimisers = {path = "lib/OptimizationOptimisers"}
2626

2727
[compat]
28-
ADTypes = "1.2"
28+
ADTypes = "1.14"
2929
Aqua = "0.8"
3030
ArrayInterface = "7.10"
3131
BenchmarkTools = "1"
@@ -50,18 +50,18 @@ Mooncake = "0.4.138"
5050
Optim = ">= 1.4.1"
5151
Optimisers = ">= 0.2.5"
5252
OptimizationBase = "4"
53-
OptimizationLBFGSB = "1"
54-
OptimizationMOI = "0.5"
55-
OptimizationOptimJL = "0.4"
56-
OptimizationOptimisers = "0.3"
53+
OptimizationLBFGSB = "1.2"
54+
OptimizationMOI = "0.5.9"
55+
OptimizationOptimJL = "0.4.7"
56+
OptimizationOptimisers = "0.3.14"
5757
OrdinaryDiffEqTsit5 = "1"
5858
Pkg = "1"
5959
Printf = "1.10"
6060
Random = "1.10"
61-
Reexport = "1.2"
61+
Reexport = "1.2.2"
6262
ReverseDiff = "1"
6363
SafeTestsets = "0.1"
64-
SciMLBase = "2.104"
64+
SciMLBase = "2.122.1"
6565
SciMLSensitivity = "7"
6666
SparseArrays = "1.10"
6767
Symbolics = "6"

README.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,30 @@ installation of dependencies. Below is the list of packages that need to be
3535
installed explicitly if you intend to use the specific optimization algorithms
3636
offered by them:
3737

38+
- OptimizationAuglag for augmented Lagrangian methods
3839
- OptimizationBBO for [BlackBoxOptim.jl](https://github.com/robertfeldt/BlackBoxOptim.jl)
40+
- OptimizationCMAEvolutionStrategy for [CMAEvolutionStrategy.jl](https://github.com/jbrea/CMAEvolutionStrategy.jl)
3941
- OptimizationEvolutionary for [Evolutionary.jl](https://github.com/wildart/Evolutionary.jl) (see also [this documentation](https://wildart.github.io/Evolutionary.jl/dev/))
4042
- OptimizationGCMAES for [GCMAES.jl](https://github.com/AStupidBear/GCMAES.jl)
41-
- OptimizationMOI for [MathOptInterface.jl](https://github.com/jump-dev/MathOptInterface.jl) (usage of algorithm via MathOptInterface API; see also the API [documentation](https://jump.dev/MathOptInterface.jl/stable/))
43+
- OptimizationIpopt for [Ipopt.jl](https://github.com/jump-dev/Ipopt.jl)
44+
- OptimizationLBFGSB for [LBFGSB.jl](https://github.com/Gnimuc/LBFGSB.jl)
45+
- OptimizationMadNLP for [MadNLP.jl](https://github.com/MadNLP/MadNLP.jl)
46+
- OptimizationManopt for [Manopt.jl](https://github.com/JuliaManifolds/Manopt.jl) (optimization on manifolds)
4247
- OptimizationMetaheuristics for [Metaheuristics.jl](https://github.com/jmejia8/Metaheuristics.jl) (see also [this documentation](https://jmejia8.github.io/Metaheuristics.jl/stable/))
48+
- OptimizationMOI for [MathOptInterface.jl](https://github.com/jump-dev/MathOptInterface.jl) (usage of algorithm via MathOptInterface API; see also the API [documentation](https://jump.dev/MathOptInterface.jl/stable/))
4349
- OptimizationMultistartOptimization for [MultistartOptimization.jl](https://github.com/tpapp/MultistartOptimization.jl) (see also [this documentation](https://juliahub.com/docs/MultistartOptimization/cVZvi/0.1.0/))
4450
- OptimizationNLopt for [NLopt.jl](https://github.com/JuliaOpt/NLopt.jl) (usage via the NLopt API; see also the available [algorithms](https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/))
51+
- OptimizationNLPModels for [NLPModels.jl](https://github.com/JuliaSmoothOptimizers/NLPModels.jl)
4552
- OptimizationNOMAD for [NOMAD.jl](https://github.com/bbopt/NOMAD.jl) (see also [this documentation](https://bbopt.github.io/NOMAD.jl/stable/))
46-
- OptimizationNonconvex for [Nonconvex.jl](https://github.com/JuliaNonconvex/Nonconvex.jl) (see also [this documentation](https://julianonconvex.github.io/Nonconvex.jl/stable/))
53+
- OptimizationODE for optimization of steady-state and time-dependent ODE problems
54+
- OptimizationOptimJL for [Optim.jl](https://github.com/JuliaNLSolvers/Optim.jl)
55+
- OptimizationOptimisers for [Optimisers.jl](https://github.com/FluxML/Optimisers.jl) (machine learning optimizers)
56+
- OptimizationPolyalgorithms for polyalgorithm optimization strategies
57+
- OptimizationPRIMA for [PRIMA.jl](https://github.com/libprima/PRIMA.jl)
58+
- OptimizationPyCMA for Python's CMA-ES implementation via [PythonCall.jl](https://github.com/JuliaPy/PythonCall.jl)
4759
- OptimizationQuadDIRECT for [QuadDIRECT.jl](https://github.com/timholy/QuadDIRECT.jl)
60+
- OptimizationSciPy for [SciPy](https://scipy.org/) optimization algorithms via [PythonCall.jl](https://github.com/JuliaPy/PythonCall.jl)
61+
- OptimizationSophia for Sophia optimizer (second-order stochastic optimizer)
4862
- OptimizationSpeedMapping for [SpeedMapping.jl](https://github.com/NicolasL-S/SpeedMapping.jl) (see also [this documentation](https://nicolasl-s.github.io/SpeedMapping.jl/stable/))
4963

5064
## Tutorials and Documentation
@@ -72,9 +86,6 @@ prob = OptimizationProblem(rosenbrock, x0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0]
7286
sol = solve(prob, BBO_adaptive_de_rand_1_bin_radiuslimited())
7387
```
7488

75-
Note that Optim.jl is a core dependency of Optimization.jl. However, BlackBoxOptim.jl
76-
is not and must already be installed (see the list above).
77-
7889
*Warning:* The output of the second optimization task (`BBO_adaptive_de_rand_1_bin_radiuslimited()`) is
7990
currently misleading in the sense that it returns `Status: failure (reached maximum number of iterations)`. However, convergence is actually
8091
reached and the confusing message stems from the reliance on the Optim.jl output

docs/Project.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ NLPModels = "a4795742-8479-5a88-8948-cc11e1c8c1a6"
1919
NLPModelsTest = "7998695d-6960-4d3a-85c4-e1bceb8cd856"
2020
NLopt = "76087f3c-5699-56af-9a33-bf431cd00edd"
2121
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
22-
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
2322
OptimizationBBO = "3e6eede4-6085-4f62-9a71-46d9bc1eb92b"
23+
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
2424
OptimizationCMAEvolutionStrategy = "bd407f91-200f-4536-9381-e4ba712f53f8"
2525
OptimizationEvolutionary = "cb963754-43f6-435e-8d4b-99009ff27753"
2626
OptimizationGCMAES = "6f0a0517-dbc2-4a7a-8a20-99ae7f27e911"
2727
OptimizationIpopt = "43fad042-7963-4b32-ab19-e2a4f9a67124"
28+
OptimizationLBFGSB = "22f7324a-a79d-40f2-bebe-3af60c77bd15"
2829
OptimizationMOI = "fd9f6733-72f4-499f-8506-86b2bdd0dea1"
2930
OptimizationManopt = "e57b7fff-7ee7-4550-b4f0-90e9476e9fb6"
3031
OptimizationMetaheuristics = "3aafef2f-86ae-4776-b337-85a36adf0b55"
@@ -49,12 +50,13 @@ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
4950

5051
[sources]
5152
Optimization = {path = ".."}
52-
OptimizationBase = {path = "../lib/OptimizationBase"}
5353
OptimizationBBO = {path = "../lib/OptimizationBBO"}
54+
OptimizationBase = {path = "../lib/OptimizationBase"}
5455
OptimizationCMAEvolutionStrategy = {path = "../lib/OptimizationCMAEvolutionStrategy"}
5556
OptimizationEvolutionary = {path = "../lib/OptimizationEvolutionary"}
5657
OptimizationGCMAES = {path = "../lib/OptimizationGCMAES"}
5758
OptimizationIpopt = {path = "../lib/OptimizationIpopt"}
59+
OptimizationLBFGSB = {path = "../lib/OptimizationLBFGSB"}
5860
OptimizationMOI = {path = "../lib/OptimizationMOI"}
5961
OptimizationManopt = {path = "../lib/OptimizationManopt"}
6062
OptimizationMetaheuristics = {path = "../lib/OptimizationMetaheuristics"}
@@ -87,8 +89,8 @@ NLPModels = "0.21"
8789
NLPModelsTest = "0.10"
8890
NLopt = "0.6, 1"
8991
Optimization = "5"
90-
OptimizationBase = "4"
9192
OptimizationBBO = "0.4"
93+
OptimizationBase = "4"
9294
OptimizationCMAEvolutionStrategy = "0.3"
9395
OptimizationEvolutionary = "0.4"
9496
OptimizationGCMAES = "0.3"

docs/src/API/ad.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The choices for the auto-AD fill-ins with quick descriptions are:
77
- `AutoTracker()`: Like ReverseDiff but GPU-compatible
88
- `AutoZygote()`: The fastest choice for non-mutating array-based (BLAS) functions
99
- `AutoFiniteDiff()`: Finite differencing, not optimal but always applicable
10-
- `AutoModelingToolkit()`: The fastest choice for large scalar optimizations
10+
- `AutoSymbolics()`: The fastest choice for large scalar optimizations
1111
- `AutoEnzyme()`: Highly performant AD choice for type stable and optimized code
1212
- `AutoMooncake()`: Like Zygote and ReverseDiff, but supports GPU and mutating code
1313

@@ -21,7 +21,7 @@ OptimizationBase.AutoFiniteDiff
2121
OptimizationBase.AutoReverseDiff
2222
OptimizationBase.AutoZygote
2323
OptimizationBase.AutoTracker
24-
OptimizationBase.AutoModelingToolkit
24+
OptimizationBase.AutoSymbolics
2525
OptimizationBase.AutoEnzyme
2626
ADTypes.AutoMooncake
2727
```

docs/src/API/modelingtoolkit.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ optimization of code. Optimizers can better interface with the extra
77
symbolic information provided by the system.
88

99
There are two ways that the user interacts with ModelingToolkit.jl.
10-
One can use `OptimizationFunction` with `AutoModelingToolkit` for
10+
One can use `OptimizationFunction` with `AutoSymbolics` for
1111
automatically transforming numerical codes into symbolic codes. See
1212
the [OptimizationFunction documentation](@ref optfunction) for more
1313
details.

docs/src/examples/rosenbrock.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ flexibility of Optimization.jl. This is a gauntlet of many solvers to get a feel
55
for common workflows of the package and give copy-pastable starting points.
66

77
!!! note
8-
8+
99
This example uses many different solvers of Optimization.jl. Each solver
1010
subpackage needs to be installed separate. For example, for the details on
1111
the installation and usage of OptimizationOptimJL.jl package, see the
@@ -14,12 +14,12 @@ for common workflows of the package and give copy-pastable starting points.
1414
The objective of this exercise is to determine the $(x, y)$ value pair that minimizes the result of a Rosenbrock function $f$ with some parameter values $a$ and $b$. The Rosenbrock function is useful for testing because it is known *a priori* to have a global minimum at $(a, a^2)$.
1515
```math
1616
f(x,\,y;\,a,\,b) = \left(a - x\right)^2 + b \left(y - x^2\right)^2
17-
```
17+
```
1818

1919
The Optimization.jl interface expects functions to be defined with a vector of optimization arguments $\bar{x}$ and a vector of parameters $\bar{p}$, i.e.:
2020
```math
2121
f(\bar{x},\,\bar{p}) = \left(p_1 - x_1\right)^2 + p_2 \left(x_2 - x_1^2\right)^2
22-
```
22+
```
2323

2424
Parameters $a$ and $b$ are captured in a vector $\bar{p}$ and assigned some arbitrary values to produce a particular Rosenbrock function to be minimized.
2525
```math
@@ -164,7 +164,7 @@ sol = solve(prob, CMAEvolutionStrategyOpt())
164164

165165
```@example rosenbrock
166166
using OptimizationNLopt, ModelingToolkit
167-
optf = OptimizationFunction(rosenbrock, Optimization.AutoModelingToolkit())
167+
optf = OptimizationFunction(rosenbrock, Optimization.AutoSymbolics())
168168
prob = OptimizationProblem(optf, x0, _p)
169169
170170
sol = solve(prob, Opt(:LN_BOBYQA, 2))

docs/src/getting_started.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ The simplest copy-pasteable code using a quasi-Newton method (LBFGS) to solve th
1414

1515
```@example intro
1616
# Import the package and define the problem to optimize
17-
using Optimization, Zygote
17+
using Optimization, OptimizationLBFGSB, Zygote
1818
rosenbrock(u, p) = (p[1] - u[1])^2 + p[2] * (u[2] - u[1]^2)^2
1919
u0 = zeros(2)
2020
p = [1.0, 100.0]
2121
2222
optf = OptimizationFunction(rosenbrock, AutoZygote())
2323
prob = OptimizationProblem(optf, u0, p)
2424
25-
sol = solve(prob, Optimization.LBFGS())
25+
sol = solve(prob, OptimizationLBFGSB.LBFGS())
2626
```
2727

2828
```@example intro
@@ -134,7 +134,7 @@ looks like:
134134
using ForwardDiff
135135
optf = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff())
136136
prob = OptimizationProblem(optf, u0, p)
137-
sol = solve(prob, BFGS())
137+
sol = solve(prob, OptimizationOptimJL.BFGS())
138138
```
139139

140140
We can inspect the `original` to see the statistics on the number of steps
@@ -157,7 +157,7 @@ We can demonstrate this via:
157157
using Zygote
158158
optf = OptimizationFunction(rosenbrock, Optimization.AutoZygote())
159159
prob = OptimizationProblem(optf, u0, p)
160-
sol = solve(prob, BFGS())
160+
sol = solve(prob, OptimizationOptimJL.BFGS())
161161
```
162162

163163
## Setting Box Constraints
@@ -170,7 +170,7 @@ optimization with box constraints by rebuilding the OptimizationProblem:
170170

171171
```@example intro
172172
prob = OptimizationProblem(optf, u0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0])
173-
sol = solve(prob, BFGS())
173+
sol = solve(prob, OptimizationOptimJL.BFGS())
174174
```
175175

176176
For more information on handling constraints, in particular equality and

0 commit comments

Comments
 (0)