## Refactoring #2376

### Look for an alternative to root minimizers

Status: | Backlog | Start date: | 05 Jun 2019 | |
---|---|---|---|---|

Priority: | Normal | Due date: | ||

Assignee: | - | % Done: | 0% | |

Category: | - | |||

Target version: | - |

**Description**

Root library covers lots of very different minimizers under one umbrella.

However it lacks some modern minimizers (e.g. differential evolution)

which could be handy. Besides it costs big efforts to support the

interfacing and bring all the minimizers to stable functioning.

I would give a try to OptimLib

### History

#### #1 Updated by juan 9 months ago

In this page (https://en.cppreference.com/w/cpp/links/libs) there's a gazillion of c++ libraries, not all of which are interesting.

Going to the 'optimization' section, the only entry is OptimLib; however, dlib' --listed under 'Generic', 'Linear Algebra' and 'Image Processing', offers several optimization functionalities with many examples for both Python and C++

I'd say it is worth taking a closer look at it (http://dlib.net/optimization.html):

General Purpose Optimizers:

`find_max`

find_max_bobyqa

find_max_box_constrained

find_max_global

find_max_single_variable

find_max_trust_region

find_max_using_approximate_derivatives

find_min

find_min_bobyqa

find_min_box_constrained

find_min_global

find_min_single_variable

find_min_trust_region

find_min_using_approximate_derivatives

global_function_search

Special Purpose Optimizers:

`elastic_net`

find_gap_between_convex_hulls

find_max_factor_graph_nmplp

find_max_factor_graph_potts

find_max_factor_graph_viterbi

find_max_parse_cky

isotonic_regression

max_cost_assignment

max_sum_submatrix

min_cut

mpc

oca

solve_least_squares

solve_least_squares_lm

solve_qp2_using_smo

solve_qp3_using_smo

solve_qp4_using_smo

solve_qp_box_constrained

solve_qp_box_constrained_blockdiag

solve_qp_using_smo

solve_trust_region_subproblem

solve_trust_region_subproblem_bounded

Strategies:

`bfgs_search_strategy`

cg_search_strategy

gradient_norm_stop_strategy

lbfgs_search_strategy

newton_search_strategy

objective_delta_stop_strategy

Both Dlib and OptimLib are opensource projects and have github repositories:

https://github.com/kthohr/optim/ ; 1 contributor; lastest commit (as of today) in 2018; Apache Version 2 License

https://github.com/davisking/dlib ; 124 contributors; latest commit (as of today) in June 2019; Boost Software License