# \`solve(prob,Optim.BFGS())\` requires \`using OptimizationOptimJL

**URL:** <https://discourse.julialang.org/t/solve-prob-optim-bfgs-requires-using-optimizationoptimjl/94544>\
**Category:** General Usage\
**Created:** [February 13, 2023, 9:50am UTC](https://discourse.julialang.org/t/solve-prob-optim-bfgs-requires-using-optimizationoptimjl/94544 "2023-02-13T09:50:59Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![qjulia](https://avatars.discourse-cdn.com/v4/letter/q/dfb087/32.png) [@qjulia](https://discourse.julialang.org/u/qjulia)\
**Post date:** [February 13, 2023, 9:50am UTC](https://discourse.julialang.org/t/solve-prob-optim-bfgs-requires-using-optimizationoptimjl/94544/1 "2023-02-13T09:50:59Z")

</div>

Hello,  
I am using the following two lines and OptimizationOptimJL is installed.

```julia
using OptimizationOptimJL;
optimized_sol_nn2 = Optimization.solve(optprob, optimized_sol_nn.minimizer, Optim.BFGS(initial_stepnorm=0.001), maxiters = 1000, allow_f_increases = true)
#optimized_sol_nn2 = DiffEqFlux.sciml_train(p -> cost_adjoint_nn(p, 0.08), optimized_sol_nn.minimizer, BFGS(initial_stepnorm=0.001), maxiters = 1000, allow_f_increases = true)

```

However, I am getting the following error:

> Optimization algorithm not found. Either the chosen algorithm is not a valid solver choice for the `OptimizationProblem`, or the Optimization solver library is not loaded. Make sure that you have loaded an appropriate Optimization.jl solver library, for example, `solve(prob,Optim.BFGS())` requires `using OptimizationOptimJL` and `solve(prob,Adam())` requires `using OptimizationOptimisers`. For more information, see the Optimization.jl documentation: [https://docs.sciml.ai/Optimization/stable/.](https://docs.sciml.ai/Optimization/stable/) Chosen Optimizer:

I checked the documentation. I am using the correct package. However, I did not understand why I am getting error for `Optim.BFGS(initial_stepnorm=0.001)`

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [February 13, 2023, 12:09pm UTC](https://discourse.julialang.org/t/solve-prob-optim-bfgs-requires-using-optimizationoptimjl/94544/2 "2023-02-13T12:09:26Z")

</div>

> [@qjulia](#):
>
> `optimized_sol_nn2 = Optimization.solve(optprob, optimized_sol_nn.minimizer`

What’s `optimized_sol_nn.minimizer`? The algorithm is supposed to be the second argument, and I don’t know what this second thing is supposed to be in the call you’re doing.

If you check the tutorials:

[https://docs.sciml.ai/Optimization/stable/tutorials/rosenbrock/](https://docs.sciml.ai/Optimization/stable/tutorials/rosenbrock/)

Then you see the solver is always the second algorithm, not the third. So it’s interpreting whatever you put as the second algorithm as the solver, and telling you it does not make sense.

---

<div class="post-metadata">

**Author:** ![qjulia](https://avatars.discourse-cdn.com/v4/letter/q/dfb087/32.png) [@qjulia](https://discourse.julialang.org/u/qjulia)\
**Post date:** [February 14, 2023, 4:58am UTC](https://discourse.julialang.org/t/solve-prob-optim-bfgs-requires-using-optimizationoptimjl/94544/3 "2023-02-14T04:58:17Z")

</div>

you are right, I found my mistake,  
I changed the code as follows:

```julia
optprob2 = remake(optprob,u0 = optimized_sol_nn.u)
using OptimizationOptimJL;
optimized_sol_nn2 = Optimization.solve(optprob2, Optim.BFGS(initial_stepnorm=0.001), maxiters = 1000, allow_f_increases = false)

```
