@hackage dynobud1.9.1.0

your dynamic optimization buddy

dynobud - your dynamic optimization buddy

Build Status

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