dynobud-1.7.1.0: README.md
## dynobud - your dynamic optimization buddy
[](http://travis-ci.org/ghorn/dynobud)
This library has a few distinct features, which may later be broken into separate packages:
* high-level, strongly-typed interface to CasADi
* NLP modeling/solving (examples/EasyNlp.hs, examples/BasicNlp.hs, examples/SofaExpando.hs)
* OCP modeling/solving (examles/Glider.hs, examples/DaeColl.hs, examples/Rocket.hs, etc)
* toy OCP solver interface (examples/ToyOcp.hs)
* proof of concept monadic NLP modeling DSL (examples/NlpDsl.hs)
* live plotter for OCP solving (examples/Dynoplot.hs)
This package is built on top of CasADi (www.casadi.org).
You will have to install the CasADi C++ libraries and the casadi-bindings haskell package.
See http://hackage.haskell.org/package/casadi-bindings for instructions.
Installing ipopt is also highly recommended if you want to solve NLPs (`apt-get install coinor-libipopt-dev` if you're lucky)
Please keep in mind that this library is continually evolving as my PhD progresses and I expect it to be very unstable.
The API is also very messy as the library is evolving fast and it's unclear which parts are internal and external.
Nevertheless, I have started making hackage releases so that my few users have some snapshots to version-constrain against.
The library is tested on travis-ci, so the unit tests pass and the examples build.
To install:
>> cabal update
>> cabal install dynobud
casadi-bindings will probably fail, re-read casadi-bindings instructions
To install dependencies, you may need to do something like this:
>> cabal install alex
>> cabal install happy
>> cabal install gtk2hs-buildtools
>> sudo apt-get install coinor-libipopt-dev liblapack-dev libblas-dev libglpk-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libzmq3-dev libglib2.0-dev libcairo2-dev libpango1.0-dev libgtk2.0-dev libgsl0-dev
To build dynobud from source
>> git clone git://github.com:ghorn/dynobud.git
>> cd dynobud
>> cabal install --only-dependencies # without examples
>> cabal install --only-dependencies -fexamples # with examples
>> cabal configure
>> cabal build
Try running the examples in dynobud/examples.
>> cabal configure -fexamples
>> cabal build
>> dist/build/rocket/rocket
Known issues:
"user error: out of memory"
If you get this ^ error on OSX while using the plotting tools, your
cairo/pango/gtk may be linked to an XQuartz library.
Add "extra-lib-dirs=/usr/local/lib" (or wherever the correct libraries are)
to your .cabal/config and re-install haskell bindings to cairo/pango/gtk/etc