-
Notifications
You must be signed in to change notification settings - Fork 230
Description
Even after the Optim.jl interface is removed (#2635, #2708), we still have a dep on Optim.jl via OptimizationOptimJL.jl. That's because we currently use Optim's solvers as the default solvers:
Turing.jl/src/optimisation/Optimisation.jl
Lines 453 to 459 in 4153a83
| function default_solver(constraints::ModeEstimationConstraints) | |
| return if has_generic_constraints(constraints) | |
| OptimizationOptimJL.IPNewton() | |
| else | |
| OptimizationOptimJL.LBFGS() | |
| end | |
| end |
However, I wonder if this is necessary. Also the hard dep on OptimizationOptimJL causes incompatibilities with other packages, as seen in #2711.
Now, Optimization.jl itself contains some solvers including LBFGS: https://docs.sciml.ai/Optimization/stable/optimization_packages/optimization/ I don't know what loss of functionality switching to this might incur (and I'm very, very rusty on optimization theory), but if we could do it, I think we should because that stays in line with the general philosophy that Optimization.jl provides the interface and you load whichever solver you want.