plasmo-dev / Plasmo.jl

A Platform for Scalable Modeling and Optimization
Other
140 stars 19 forks source link

Interface to DSP #10

Open kibaekkim opened 4 years ago

kibaekkim commented 4 years ago

I would like to start threads about implementing the interface to DSP with Plasmo.jl. I have a working interface based on StructJuMP.jl: https://github.com/kibaekkim/DSP.jl

Where do we need to start?

jalving commented 4 years ago

I think we can put together the interface in much the same way you did for StructJuMP. We could probably add another file to DSP.jl and define the same functions for Plasmo.jl like you did for the StructJump model. I would be happy to fork DSP.jl and take a stab at it.

One caveat is that we have to do a littlle more work to permute an OptiGraph in Plasmo.jl into the DSP model structure you're expecting. For instance, we would have to check that we have a subgraph structure that works for parent-child relationships. Or, we might have linkconstraints that couple OptiNodes in a DW structure.

A good start might be to match OptiGraph traits (linkconstraints, subgraphs) to specific DSP structures. I see you have both a stochastic and a structured problem environment. Do those correspond to different decompositions?

kibaekkim commented 4 years ago

Thanks @jalving. I guess I will learn more about the caveat part over time.

Regardless of the type of problems (i.e., stochastic vs. non-stochastic), they use the same set of algorithms.

I just sent you an invite to DSP.jl. Please feel free to create a branch there, if you want.

jalving commented 3 years ago

Hey @kibaekkim, is https://github.com/kibaekkim/DSPopt.jl the latest DSP interface? I can finally start working on a Plasmo.jl integration. I think we can just add another file to DSPopt.jl that translates an optigraph to the DSP environment object.

It looks like src/Model.jl and src/JuMP_Wrapper.jl are where you translate the StructJuMP model to a DSP model. It should be straightforward for me to write something similar.

kibaekkim commented 3 years ago

Glad to hear that. Yes, the repo is up-to-date. In fact, active development is going on for DSP and DSPopt.jl#master in order to implement QCQP solvers. It would be great if you can start synching Plasmo.jl with DSPopt.jl. Then, hopefully in future we can just work on Plasmo.jl only for DSP.