dynobud: your dynamic optimization buddy

[ lgpl, library, science ] [ Propose Tags ]

Modules

  • Dyno
    • Dyno.DirectCollocation
      • Dyno.DirectCollocation.Dynamic
      • Dyno.DirectCollocation.Export
      • Dyno.DirectCollocation.Formulate
      • Dyno.DirectCollocation.Integrate
      • Dyno.DirectCollocation.Profile
      • Dyno.DirectCollocation.Quadratures
      • Dyno.DirectCollocation.Robust
      • Dyno.DirectCollocation.Types
    • Dyno.LagrangePolynomials
    • Dyno.MultipleShooting
    • Dyno.Nlp
    • Dyno.NlpScaling
    • Dyno.NlpSolver
    • Dyno.Ocp
    • Dyno.SXElement
    • Server
      • Dyno.Server.Accessors
      • Dyno.Server.GraphWidget
      • Dyno.Server.PlotChart
      • Dyno.Server.PlotTypes
      • Dyno.Server.Server
    • Dyno.Solvers
    • Dyno.TypeVecs
    • Dyno.Vectorize
    • View
      • Dyno.View.Cov
      • Dyno.View.CustomFunction
      • Dyno.View.Fun
      • Dyno.View.FunJac
      • Dyno.View.HList
      • Dyno.View.JV
      • Dyno.View.JVec
      • Dyno.View.M
      • Dyno.View.Scheme
      • Dyno.View.Symbolic
      • Unsafe
        • Dyno.View.Unsafe.M
        • Dyno.View.Unsafe.View
      • Dyno.View.View
      • Dyno.View.Viewable

Flags

Automatic Flags
NameDescriptionDefault
examples

build the examples

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0.0.0, 1.1.0.0, 1.3.0.0, 1.4.0.0, 1.7.1.0, 1.8.0.0, 1.9.0.0, 1.9.1.0
Dependencies base (>=4.6 && <5), bytestring, cairo, casadi-bindings (>=2.2.0.4), casadi-bindings-core (>=2.2.0.2), cereal, Chart (>=1.3.3), Chart-cairo (>=1.3.3), Chart-gtk (>=1.3.3), cmdargs, colour, containers (>=0.5), data-default, data-default-class, distributive, dynobud, glib, gtk (>=0.13), hmatrix, jacobi-roots (>=0.2 && <0.3), lens, linear (>=1.3.1.1), mtl (>=2.2.1), not-gloss (>=0.7.0.0), process, reflection (>=1.3.2), semigroups, spatial-math (>=0.2.1.0), stm, text, time, unordered-containers, vector (>=0.10), zeromq4-haskell [details]
License LGPL-3.0-only
Copyright (c) Greg Horn 2013-2015
Author Greg Horn
Maintainer gregmainland@gmail.com
Category Science
Source repo head: git clone git://github.com/ghorn/dynobud.git
Uploaded by GregHorn at 2015-02-17T17:44:00Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables dynoplot, sailboat, glider, daeColl, basicJ, basic, nlpDsl, ocpDslRocket, ocpDslSpring, vec, homotopy, sofa-expand-o-matic, sofa-viz-2000, multiple_shooting
Downloads 5328 total (21 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-11 [all 7 reports]

Readme for dynobud-1.1.0.0

[back to package description]

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/Basic.hs, examples/BasicJ.hs)
  • OCP modeling/solving (examles/Glider.hs)
  • proof of concept monadic NLP/OCP modeling DSL (examples/{NlpDsl.hs,OcpDslRocket.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. Specifically, the matrix and vector views (J and M) aren't polished enough and don't yet work without leaking internals. Nevertheless, I have started making hackage releases so that my few users have some snapshots to version-constrain against.

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
>> sudo apt-get install liblapack-dev
>> sudo apt-get install libblas-dev
>> sudo apt-get install libglpk-dev
>> sudo apt-get install libgl1-mesa-dev
>> sudo apt-get install libglu1-mesa-dev
>> sudo apt-get install freeglut3-dev
>> sudo apt-get install libzmq3-dev
>> sudo apt-get install libglib2.0-dev
>> sudo apt-get install libcairo2-dev
>> sudo apt-get install libpango1.0-dev
>> sudo apt-get install libgtk2.0-dev
>> sudo apt-get install 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