Hi Miles, Since I'm a newcomer to Julia, LinearExpressions was more like a first experience to learn Julia. I don't think the package is production ready and I don't even want to register it, however, I announced it in the list to possibly obtain feedback like the one you just gave me :) Thank you for telling me about JuMP, I'd already heard about it although didn't knew about its expression capabilities.
The bottleneck in Python was not the expression creation but rather a step where I have to generate sparse matrices of coefficients from matrices of symbolic expressions. Since PyLMI-SDP uses SymPy which is tailored for generic expressions, I've already been able to get a boost by using linear-only expressions defined by dictionaries of [symbol => coefficient]. I suspect I would had got the very same kind of boost if I had implemented that in Python as it has very fast dictionaries. Something I've been really really missing in Julia is a generic CAS, something like SymPy, Axiom, Mathematica..., something that could be shared among the various packages, JuMP, Calculus... Although I would like to, I don't have neither the Julia nor the mathematical knowledge to start a project like that. LinearExpressions is a shy proof of concept about how Julia type system can be used to represent symbolic expressions, which could be defined in several layers of complexity (a little like Axiom): variables, linear expressions, polynomials, polynomial fractions, generic expressions; all interchangeable and allowing different underlying types like Integers, Reals, ... I'm currently reading into JuMP to learn more how it works and how can I use it. I'll be glad to make some contributions if I'm able to. Best, Cristóvão D. Sousa On Sunday, February 2, 2014 1:04:28 PM UTC, Miles Lubin wrote: > > Hi Cristóvão, > > JuMP (https://github.com/JuliaOpt/JuMP.jl) has supported scalar linear > expressions for a while and has the low-level structure to support matrix > coefficients, but that hasn't been a priority to implement so far. I think > you'll also find that using operator overloading to form these expressions > won't give you as much of a performance boost over python as you would > expect, so in JuMP we've taken to using macros instead. Would you like to > combine our efforts? > > Best, > Miles > > On Sunday, February 2, 2014 6:31:08 AM UTC-5, Cristóvão Duarte Sousa wrote: >> >> Hi Julians, >> >> I've developed a Julia package to manipulate symbolic linear expressions >> with both scalar and matrix coefficients: >> https://github.com/cdsousa/LinearExpressions.jl >> >> I created it mainly to manipulate large linear matrix inequalities >> (LMI<http://en.wikipedia.org/wiki/Linear_matrix_inequality>) >> for SDP optimization. >> >> Two notes: the tests are not extensive; the main LinExpr type is not >> immutable, although from a mathematical pov it may make more sense to be. >> >> Cristóvão D. Sousa >> >
