@@ -41,15 +41,16 @@ An optimization problem can now be defined and solved to estimate the values for
4141
4242``` @example rosenbrock
4343# Define the problem to solve
44- using Optimization, ForwardDiff, Zygote
44+ using SciMLBase, OptimizationBase
45+ using ADTypes, ForwardDiff, Zygote
4546
4647rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
4748x0 = zeros(2)
4849_p = [1.0, 100.0]
4950
50- f = OptimizationFunction(rosenbrock, Optimization .AutoForwardDiff())
51+ f = SciMLBase. OptimizationFunction(rosenbrock, ADTypes .AutoForwardDiff())
5152l1 = rosenbrock(x0, _p)
52- prob = OptimizationProblem(f, x0, _p)
53+ prob = SciMLBase. OptimizationProblem(f, x0, _p)
5354```
5455
5556## Optim.jl Solvers
@@ -59,19 +60,19 @@ prob = OptimizationProblem(f, x0, _p)
5960``` @example rosenbrock
6061using OptimizationOptimJL
6162sol = solve(prob, SimulatedAnnealing())
62- prob = OptimizationProblem(f, x0, _p, lb = [-1.0, -1.0], ub = [0.8, 0.8])
63+ prob = SciMLBase. OptimizationProblem(f, x0, _p, lb = [-1.0, -1.0], ub = [0.8, 0.8])
6364sol = solve(prob, SAMIN())
6465
6566l1 = rosenbrock(x0, _p)
66- prob = OptimizationProblem(rosenbrock, x0, _p)
67+ prob = SciMLBase. OptimizationProblem(rosenbrock, x0, _p)
6768sol = solve(prob, NelderMead())
6869```
6970
7071### Now a gradient-based optimizer with forward-mode automatic differentiation
7172
7273``` @example rosenbrock
73- optf = OptimizationFunction(rosenbrock, Optimization .AutoForwardDiff())
74- prob = OptimizationProblem(optf, x0, _p)
74+ optf = SciMLBase. OptimizationFunction(rosenbrock, ADTypes .AutoForwardDiff())
75+ prob = SciMLBase. OptimizationProblem(optf, x0, _p)
7576sol = solve(prob, BFGS())
7677```
7778
@@ -91,19 +92,19 @@ sol = solve(prob, Optim.KrylovTrustRegion())
9192
9293``` @example rosenbrock
9394cons = (res, x, p) -> res .= [x[1]^2 + x[2]^2]
94- optf = OptimizationFunction(rosenbrock, Optimization .AutoForwardDiff(); cons = cons)
95+ optf = SciMLBase. OptimizationFunction(rosenbrock, ADTypes .AutoForwardDiff(); cons = cons)
9596
96- prob = OptimizationProblem(optf, x0, _p, lcons = [-Inf], ucons = [Inf])
97+ prob = SciMLBase. OptimizationProblem(optf, x0, _p, lcons = [-Inf], ucons = [Inf])
9798sol = solve(prob, IPNewton()) # Note that -Inf < x[1]^2 + x[2]^2 < Inf is always true
9899
99- prob = OptimizationProblem(optf, x0, _p, lcons = [-5.0], ucons = [10.0])
100+ prob = SciMLBase. OptimizationProblem(optf, x0, _p, lcons = [-5.0], ucons = [10.0])
100101sol = solve(prob, IPNewton()) # Again, -5.0 < x[1]^2 + x[2]^2 < 10.0
101102
102- prob = OptimizationProblem(optf, x0, _p, lcons = [-Inf], ucons = [Inf],
103+ prob = SciMLBase. OptimizationProblem(optf, x0, _p, lcons = [-Inf], ucons = [Inf],
103104 lb = [-500.0, -500.0], ub = [50.0, 50.0])
104105sol = solve(prob, IPNewton())
105106
106- prob = OptimizationProblem(optf, x0, _p, lcons = [0.5], ucons = [0.5],
107+ prob = SciMLBase. OptimizationProblem(optf, x0, _p, lcons = [0.5], ucons = [0.5],
107108 lb = [-500.0, -500.0], ub = [50.0, 50.0])
108109sol = solve(prob, IPNewton())
109110
@@ -118,8 +119,8 @@ function con_c(res, x, p)
118119 res .= [x[1]^2 + x[2]^2]
119120end
120121
121- optf = OptimizationFunction(rosenbrock, Optimization .AutoForwardDiff(); cons = con_c)
122- prob = OptimizationProblem(optf, x0, _p, lcons = [-Inf], ucons = [0.25^2])
122+ optf = SciMLBase. OptimizationFunction(rosenbrock, ADTypes .AutoForwardDiff(); cons = con_c)
123+ prob = SciMLBase. OptimizationProblem(optf, x0, _p, lcons = [-Inf], ucons = [0.25^2])
123124sol = solve(prob, IPNewton()) # -Inf < cons_circ(sol.u, _p) = 0.25^2
124125```
125126
@@ -139,17 +140,17 @@ function con2_c(res, x, p)
139140 res .= [x[1]^2 + x[2]^2, x[2] * sin(x[1]) - x[1]]
140141end
141142
142- optf = OptimizationFunction(rosenbrock, Optimization .AutoZygote(); cons = con2_c)
143- prob = OptimizationProblem(optf, x0, _p, lcons = [-Inf, -Inf], ucons = [100.0, 100.0])
143+ optf = SciMLBase. OptimizationFunction(rosenbrock, ADTypes .AutoZygote(); cons = con2_c)
144+ prob = SciMLBase. OptimizationProblem(optf, x0, _p, lcons = [-Inf, -Inf], ucons = [100.0, 100.0])
144145sol = solve(prob, Ipopt.Optimizer())
145146```
146147
147148## Now let's switch over to OptimizationOptimisers with reverse-mode AD
148149
149150``` @example rosenbrock
150151import OptimizationOptimisers
151- optf = OptimizationFunction(rosenbrock, Optimization .AutoZygote())
152- prob = OptimizationProblem(optf, x0, _p)
152+ optf = SciMLBase. OptimizationFunction(rosenbrock, ADTypes .AutoZygote())
153+ prob = SciMLBase. OptimizationProblem(optf, x0, _p)
153154sol = solve(prob, OptimizationOptimisers.Adam(0.05), maxiters = 1000, progress = false)
154155```
155156
@@ -164,8 +165,8 @@ sol = solve(prob, CMAEvolutionStrategyOpt())
164165
165166``` @example rosenbrock
166167using OptimizationNLopt, ModelingToolkit
167- optf = OptimizationFunction(rosenbrock, Optimization .AutoSymbolics())
168- prob = OptimizationProblem(optf, x0, _p)
168+ optf = SciMLBase. OptimizationFunction(rosenbrock, ADTypes .AutoSymbolics())
169+ prob = SciMLBase. OptimizationProblem(optf, x0, _p)
169170
170171sol = solve(prob, Opt(:LN_BOBYQA, 2))
171172sol = solve(prob, Opt(:LD_LBFGS, 2))
@@ -174,7 +175,7 @@ sol = solve(prob, Opt(:LD_LBFGS, 2))
174175### Add some box constraints and solve with a few NLopt.jl methods
175176
176177``` @example rosenbrock
177- prob = OptimizationProblem(optf, x0, _p, lb = [-1.0, -1.0], ub = [0.8, 0.8])
178+ prob = SciMLBase. OptimizationProblem(optf, x0, _p, lb = [-1.0, -1.0], ub = [0.8, 0.8])
178179sol = solve(prob, Opt(:LD_LBFGS, 2))
179180sol = solve(prob, Opt(:G_MLSL_LDS, 2), local_method = Opt(:LD_LBFGS, 2), maxiters = 10000) #a global optimizer with random starts of local optimization
180181```
@@ -183,7 +184,7 @@ sol = solve(prob, Opt(:G_MLSL_LDS, 2), local_method = Opt(:LD_LBFGS, 2), maxiter
183184
184185``` @example rosenbrock
185186using OptimizationBBO
186- prob = Optimization .OptimizationProblem(rosenbrock, [0.0, 0.3], _p, lb = [-1.0, 0.2],
187+ prob = SciMLBase .OptimizationProblem(rosenbrock, [0.0, 0.3], _p, lb = [-1.0, 0.2],
187188 ub = [0.8, 0.43])
188189sol = solve(prob, BBO_adaptive_de_rand_1_bin()) # -1.0 ≤ x[1] ≤ 0.8, 0.2 ≤ x[2] ≤ 0.43
189190```
0 commit comments