OCaml bindings to the NLOpt optimization library

nlopt-ocaml implements OCaml bindings to the NLOpt optimization library.


  • ocaml

  • dune

  • NLopt


Mac OS X

Use OPAM to install the OCaml interface. This will also automatically install NLopt using homebrew.

opam install nlopt-ocaml

Ubuntu (Focal)

Install nlopt:

sudo apt-get install libnlopt0 libnlopt-dev

Use OPAM to install the OCaml interface:

opam install nlopt-ocaml

Generic installation instructions

Use git to get the newest sources:

git clone

In the main directory type


to build and install nlopt-ocaml using dune.

Simple Example

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 ->
	    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).


The interface closely matches the object-oriented API of NLopt.

Generate the API documentation using

make doc

Online documentation