dynobud: your dynamic optimization buddy

[ lgpl, library, science ] [ Propose Tags ]


  • Dyno
    • Dyno.AutoScaling
    • Dyno.DirectCollocation
      • Dyno.DirectCollocation.ActiveConstraints
      • Dyno.DirectCollocation.CheckAccuracy
      • Dyno.DirectCollocation.Dynamic
      • Dyno.DirectCollocation.Export
      • Dyno.DirectCollocation.Formulate
      • Dyno.DirectCollocation.FormulateCov
      • Dyno.DirectCollocation.Integrate
      • Dyno.DirectCollocation.Interpolate
      • Dyno.DirectCollocation.Quadratures
      • Dyno.DirectCollocation.Robust
      • Dyno.DirectCollocation.ScaleFactors
      • Dyno.DirectCollocation.Types
    • Dyno.ExportCStruct
    • Dyno.Fitting
    • Dyno.FormatTime
    • Dyno.GoldenSectionSearch
    • Dyno.Integrate
    • Dyno.LagrangePolynomials
    • Dyno.Linearize
    • Dyno.MultipleShooting
    • Dyno.Nlp
    • Dyno.NlpScaling
    • Dyno.NlpSolver
    • Dyno.NlpUtils
    • Dyno.Ocp
    • Dyno.OcpHomotopy
    • Dyno.Random
    • Dyno.SimpleOcp
    • Dyno.SolverInternal
    • Dyno.Solvers
    • Dyno.TypeVecs
    • Dyno.Vectorize
    • Dyno.View
      • Dyno.View.Cov
      • Dyno.View.Fun
      • Dyno.View.FunJac
      • Dyno.View.HList
      • Dyno.View.JVec
      • Dyno.View.M
      • Dyno.View.MapFun
      • Dyno.View.Scheme
      • Dyno.View.Unsafe
      • Dyno.View.View


Automatic Flags

build the examples


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


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,,,,,,
Dependencies aeson, base (>=4.6 && <5), binary, bytestring, casadi-bindings (>=, casadi-bindings-core (>=, cereal, Chart (>=1.3.3), Chart-gtk (>=1.3.3), cmdargs, colour, containers (>=0.5), data-default-class, directory, distributive, dynobud, generic-accessors (>=, hmatrix (>=, hmatrix-gsl (>=, jacobi-roots (>=0.2 && <0.3), lens, linear (>=, mtl (>=2.2.1), mwc-random, not-gloss (>=, Plot-ho-matic (>=, process, reflection (>=1.3.2), semigroups, spatial-math (>=, stm, time, unordered-containers, vector (>=0.10), vector-binary-instances, 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-11-18T18:07:46Z
Reverse Dependencies 1 direct, 0 indirect [details]
Executables quadrature-test, dynoplot, sailboat, glider, dae-pendulum, beginner-qp, basic-nlp, easy-nlp, nlpDsl, rocket, spring, parallel-map, vec, homotopy, sofa-expand-o-matic, sofa-viz-2000, multiple_shooting, toy-ocp, nlp-solver
Downloads 5338 total (10 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-11-11 [all 4 reports]

Readme for dynobud-

[back to package description]

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