packages feed

ipopt-hs-0.4.2.0: ipopt-hs.cabal

name:                ipopt-hs
version:             0.4.2.0
synopsis:            haskell binding to ipopt and nlopt including automatic differentiation
description:  a haskell binding to the nonlinear programming solver
              <http://projects.coin-or.org/Ipopt Ipopt>. Bindings to
              <http://ab-initio.mit.edu/wiki/index.php/NLopt NLopt> are
              also included.
             .
              [@installation@]
              needs the c library ipopt installed. Also by default a binding to
              nlopt is included. Nlopt by default does not include shared libraries,
              which seems to be needed to run things from ghci (ie. you need to
              @./configure --enable-shared@ when building nlopt).
            .
              A embedded language, similar to the one provided by glpk-hs, is
              defined in "Ipopt.NLP". The goal is to define problems at a level
              similar to other "algebraic modeling languages", but retain some
              of the safety and flexibility available in haskell. There is some
              overhead <http://code.haskell.org/~aavogt/ipopt-hs/examples/bench.html>
              but perhaps it is negligible for your uses.
             .
              Current limitations include:
             .
              * copying in every iteration happens between between
                "Data.Vector.Storable" and "Data.Vector" might be avoidable
                somehow.  Currently it is done because AD needs a Traversable
                structure, but Storable vectors are not traversable.
             .
              * sparseness of derivatives isn't used
             .
              * no binding to sensitivity parts as-implemented in ipopt
license:             BSD3
license-file:        LICENSE
author:              Adam Vogt <vogt.adam@gmail.com>
maintainer:          Adam Vogt <vogt.adam@gmail.com>
category:            Optimisation, Math, Numeric
build-type:          Simple
cabal-version:       >=1.10

flag build_examples
  description: build executable from examples/
  default: False

flag nlopt
  description: also include nlopt bindings
  default: True

source-repository head
    type:   darcs
    location: http://code.haskell.org/~aavogt/ipopt-hs

library
  exposed-modules:     Ipopt,
                       Ipopt.AnyRF,
                       Ipopt.Raw,
                       Ipopt.NLP,
                       Ipopt.Options,
                       Ipopt.PP

  if flag(nlopt)
    exposed-modules:   Nlopt.Raw,
                       Nlopt.NLP
    pkgconfig-depends: nlopt

  other-modules:       C2HS
  build-depends:       base < 5,
                       ad >=4.2,
                       ansi-wl-pprint >= 0.6.7,
                       containers < 0.6,
                       lens >= 3.10 && < 5,
                       mtl == 2.*,
                       template-haskell,
                       uu-parsinglib >= 2.8,
                       vector ==0.10.*,
                       vector-space >= 0.8.6
  default-language:    Haskell2010
  default-extensions:  ConstraintKinds,
                       FlexibleContexts,
                       FlexibleInstances,
                       GeneralizedNewtypeDeriving,
                       RankNTypes,
                       TupleSections,
                       TypeFamilies
  other-extensions:    ForeignFunctionInterface,
                       TemplateHaskell
  pkgconfig-depends:   ipopt
  build-tools: c2hs


executable ipopt-hs_Tests
  main-is:             AllTests.hs
  build-depends:       base <= 5, vector ==0.10.*,
                       ipopt-hs, lens, mtl, ansi-wl-pprint,
                       Rlang-QQ, vector-space, splines, ad,
                       criterion, random-shuffle,
                       linear

  hs-source-dirs:      examples
  default-language:    Haskell2010
  other-extensions:    QuasiQuotes
  other-modules: Paths_ipopt_hs
  if !flag(build_examples)
    buildable:         False