Optimization.jl interface

The MIGRAD optimizer can also be used from Optimization.jl:

using Minuit2, Optimization
opf = OptimizationFunction((x,p)->x^2);
opp = OptimizationProblem(opf, [1.0])
solve(opp, MigradOptimizer(strategy=2, tolerance=0.01), maxiters = 100)
retcode: Default
u: 1-element Vector{Float64}:
 -8.269074314171121e-11

ComponentArrays.jl is also supported:

using ComponentArrays
opf = OptimizationFunction((x,p)->x^2);
opp = OptimizationProblem(opf, ComponentArray(x=1.0))
sol = solve(opp, MigradOptimizer(strategy=2, tolerance=0.01), maxiters = 100)
retcode: Default
u: ComponentVector{Float64}(x = -8.269074314171121e-11)

Access original Minuit object

Minuit provides much information that does not fit into Optimization.jl's model, thus it's useful to access the original Minuit object:

sol.original
┌──────────────┬──────────────┬───────────┬────────────┬──────────────┐
│ FCN          │ Method       │ Ncalls    │ Iterations │ Elapsed time │
│ 0.0          │ migrad       │ 25        │ 3          │ 5.101 ms     │
├──────────────┼──────────────┼───────────┼────────────┼──────────────┤
│ Valid Min.   │ Valid Param. │ Above EDM │ Call limit │ Edm          │
│ true         │ true         │ false     │ false      │ 6.83776e-21  │
├──────────────┼──────────────┼───────────┼────────────┼──────────────┤
│ Hesse failed │ Has cov.     │ Accurate  │ Pos. def.  │ Forced       │
│ false        │ true         │ true      │ true       │ false        │
└──────────────┴──────────────┴───────────┴────────────┴──────────────┘
┌───┬──────┬──────────────┬─────────────┬────────┬────────┬────────┬────────┬───
│   │ Name │ Value        │ Hesse Error │ Minos- │ Minos+ │ Limit- │ Limit+ │  ⋯
├───┼──────┼──────────────┼─────────────┼────────┼────────┼────────┼────────┼───
│ 1 │ θ    │ -8.26907e-11 │ 1.0         │        │        │        │        │  ⋯
└───┴──────┴──────────────┴─────────────┴────────┴────────┴────────┴────────┴───
                                                               2 columns omitted
┌───┬─────┐
│   │ θ   │
├───┼─────┤
│ θ │ 1.0 │
└───┴─────┘