Hi all, Is anyone aware of any effort building large OR applications? I am currently working at organizing a relatively large code base making use of the JuMP libraries. The context is unit-commitment and transmission planning. Flexibility and code re-use is among our priorities.
Here are some of the design choices we made so far: 1) JuMP models are encapsulated in types that hold: a) references to the variable names, constraints (when multipliers are needed) and indices. These are otherwise difficult to extract directly from the JuMP object b) data structure that are required for model specification (generator characteristics, transmission lines, etc) c) exogenous variable values (demand scenarios, initial conditions, etc) 2) Most models we use are derived from a basic unit commitment model. The derivation is implemented using composition: the derived type manages a reference to the base type, and provides a number of proxies to some of the base type data structure. 3) The objective and constraints are specified through function calls, using polymorphism on the basis of an underlying abstract types hierarchy. I also toyed for a while with submodules to incorporate functionality that only make sense within the scope of a given base module. But from the language point of view, I did not see much benefit in doing so. That is, a Julia submodule does not see anything of the base module, unless it is explicitly use/imported, and is thus in the same position as any other module defined outside the scope of the base module. Are there any Julia packages making use submodules? Any suggestions/comments are very welcome, François
