# Dual\_ftol\_rel keyword not allowed in Optimization.jl

**URL:** https://discourse.julialang.org/t/dual-ftol-rel-keyword-not-allowed-in-optimization-jl/129480
**Category:** Optimization (Mathematical)
**Tags:** optimization, nlopt
**Created:** [May 30, 2025, 4:43pm UTC](https://discourse.julialang.org/t/dual-ftol-rel-keyword-not-allowed-in-optimization-jl/129480 "2025-05-30T16:43:45Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![miguelborrero](https://avatars.discourse-cdn.com/v4/letter/m/eb9ed0/32.png) [@miguelborrero](https://discourse.julialang.org/u/miguelborrero)
#### Post date: [May 30, 2025, 4:43pm UTC](https://discourse.julialang.org/t/dual-ftol-rel-keyword-not-allowed-in-optimization-jl/129480/1 "2025-05-30T16:43:46Z")

</div>

Hi there,

I’m trying out different solvers for my problem which requires evaluation of non-linear constraints. Currently I’m trying `NLopt` thought `Optimization` in particular `LD_CCSAQ` solver. However, its taking forever across iterations so I wanted to increase the parameter `dual_ftol_rel` as suggested by NLopt documentation. However, `Optimization` does not seem to support this.

MWE:

```julia
rosenbrock_inp(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
p = [1.0, 100.0]
x0 = [0.0, 0.0]
f2 = OptimizationFunction(rosenbrock_inp, AutoEnzyme())
prob = OptimizationProblem(f2, x0, p)
sol = solve(prob, NLopt.LD_CCSAQ(), xtol_rel = 1e-7, dual_ftol_rel = 1e-7)

```

with error message:

```julia
julia> sol = solve(prob, NLopt.LD_CCSAQ(), xtol_rel = 1e-7, dual_ftol_rel = 1e-7)
┌ Warning: The selected optimization algorithm requires second order derivatives, but `SecondOrder` ADtype was not provided. 
│ So a `SecondOrder` with AutoForwardDiff() for both inner and outer will be created, this can be suboptimal and not work in some cases so 
│ an explicit `SecondOrder` ADtype is recommended.
└ @ OptimizationBase ~/.julia/packages/OptimizationBase/UXLhR/src/cache.jl:49
ERROR: UndefVarError: `dual_ftol_rel!` not defined
Stacktrace:
 [1] eval
   @ ./boot.jl:385 [inlined]
 [2] eval
   @ ~/.julia/packages/OptimizationNLopt/YE3fr/src/OptimizationNLopt.jl:1 [inlined]
 [3] __map_optimizer_args!(cache::OptimizationCache{…}, opt::Opt; callback::Function, maxiters::Nothing, maxtime::Nothing, abstol::Nothing, reltol::Nothing, local_method::Nothing, local_maxiters::Nothing, local_maxtime::Nothing, local_options::Nothing, kwargs::@Kwargs{…})
   @ OptimizationNLopt ~/.julia/packages/OptimizationNLopt/YE3fr/src/OptimizationNLopt.jl:140
 [4] __solve(cache::OptimizationCache{…})
   @ OptimizationNLopt ~/.julia/packages/OptimizationNLopt/YE3fr/src/OptimizationNLopt.jl:289
 [5] solve!(cache::OptimizationCache{…})
   @ SciMLBase ~/.julia/packages/SciMLBase/OKLBE/src/solve.jl:227
 [6] solve(::OptimizationProblem{…}, ::Algorithm; kwargs::@Kwargs{…})
   @ SciMLBase ~/.julia/packages/SciMLBase/OKLBE/src/solve.jl:129
 [7] top-level scope
   @ REPL[70]:1

```

I expected this error since the documentation for `Optimization` says: " Beyond the common arguments, the following optimizer parameters can be set as `kwargs` :" where none of them are `dual_ftol_rel` but maybe allowing this is an option in the near future?

Alternative I can directly interact with `NLopt.jl` but given all the hard work done by `Optimization.jl` this seems inefficient in this case (?)

---

<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: [May 30, 2025, 5:58pm UTC](https://discourse.julialang.org/t/dual-ftol-rel-keyword-not-allowed-in-optimization-jl/129480/2 "2025-05-30T17:58:29Z")

</div>

Open an issue.
