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-11ComponentArrays.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 │
└───┴─────┘