your dynamic optimization buddy

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

LGPL-3.0-only licensed by Greg Horn

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

comments powered byDisqus