nlopt-ocaml / README.md

mkur d24d2ac 

mkur 28f7ed9 
mkur d24d2ac 






mkur 0b4f0c2 






















mkur d24d2ac 


mkur b0952ea 
mkur d24d2ac 
mkur e59ba2d 
mkur d24d2ac 
mkur e59ba2d 

mkur d24d2ac 

mkur e59ba2d 

mkur d24d2ac 






mkur c44acda 
mkur d24d2ac 


















mkur 28f7ed9 
mkur d24d2ac 








# nlopt-ocaml

nlopt-ocaml implements OCaml bindings to the [NLOpt](http://ab-initio.mit.edu/wiki/index.php/NLopt) optimization library. 

## Dependencies

* ocaml
* findlib
* NLopt 

## Installation

### Mac OS X

Use [homebrew](http://mxcl.github.com/homebrew/) to install nlopt:

	brew install nlopt
	
Use [OPAM](http://opam.ocamlpro.com) to install the OCaml interface:

	opam install nlopt-ocaml

### Ubuntu (12.10)

Install nlopt:

	sudo apt-get install libnlopt0 libnlopt-dev
	
Use [OPAM](http://opam.ocamlpro.com) to install the OCaml interface:

	opam install nlopt-ocaml

### Generic installation instructions

Use Mercurial to get the newest sources:

	hg clone https://bitbucket.org/mkur/nlopt-ocaml

In the main directory type

	./configure
	make 
	make install
	
	
to build and install nlopt-ocaml using ocamlbuild and findlib.

## Example

The interface closely matches the object-oriented [API](http://ab-initio.mit.edu/wiki/index.php/NLopt_Reference) of NLopt. 
	
	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;;
	


A more advanced example is included in the distribution.

## Documentation

Please refer to the project [wiki](https://bitbucket.org/mkur/nlopt-ocaml/wiki/Home).
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.