your dynamic optimization buddy.
See readme at http://www.github.com/ghorn/dynobud
dynobud - your dynamic optimization buddy
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.