open Nlopt;;
let opt = create lbfgs 2;;
let f a grad =
let x = a.(0) in
let y = a.(1) in
let () =
match grad with
None -> ()
| Some g ->
begin
g.(0) <- 2. *. (x -. 1.);
g.(1) <- 2. *. y;
end in
(x -. 1.) ** 2. +. y ** 2.;;
set_min_objective opt f;;
set_xtol_rel opt 1e-06;;
let x0 = [| 5.; 5.|];;
let (res, xopt, fopt) = optimize opt x0;;
To run this example type
dune exec examples/tutorial.exe
A more complex example is included in the examples subdirectory (code).
Documentation
The interface closely matches the object-oriented API of NLopt.