Rima has a number of nice features:
- models are symbolic and functional rather than imperative
- Rima allows very rich interaction with data structures - dynamic objects and duck typing for math modelling
- models are very easily encapsulated and extended
- there's strong and flexible separation between models and data. All data is late bound, and functions and expressions are just data
- you can compose models from parts
Rima's documentation starts at http://www.incremental.co.nz/
You can get the tarball from
https://github.com/downloads/
Changes since 0.04 are
- support for ipopt and consequently nonlinear problems
- symbolic differentiation
- compilation of expressions to Lua functions
- hosting moved to github
The symbolic differentiation and compilation are used to pass functions for evaluating objectives, constraints, gradients, and the hessian to ipopt. It's quite cool: rima differentiates the symbolic expressions, writes them out as a lua string and then compiles the string. With LuaJIT [2], you get native code for a symbolically differentiated function!
Rima is not part of COIN, but it's been in the review queue for half its life!
Any feedback would be much appreciated.
[1] http://www.lua.org/
[2] http://www.luajit.org/
GAMS and AMPL should do that
ReplyDeleteGAMS and AMPL are not open source modeling language....
ReplyDelete