scheduling and dynamic optimization using pyomo.dae

356 views
Skip to first unread message

Federico Lozano Santamaria

unread,
Nov 2, 2016, 10:05:08 AM11/2/16
to Pyomo Forum
Hello,

I was wondering if you can use pyomo.dae for solving problems in which time is a variable, and if so how can you formulate it? 
For example, you have a reactor for producing two products (A, B) and you want to define which one to produce first and how long each task take. Assuming a dynamic model for the process operation and state transition is available.
In the end, it will be a MIDO problem but I'm not sure how can it be transcribed to Pyomo using the DAE module.

Federico

Bethany Nicholson

unread,
Nov 2, 2016, 11:55:56 AM11/2/16
to pyomo...@googlegroups.com
I think you should be able to do this by combining the DAE and GDP extensions and removing the explicit time scaling from the ContinuousSet similar to the car example. If you post a toy example I can work on an example implementation.

Bethany

--
You received this message because you are subscribed to the Google Groups "Pyomo Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pyomo-forum+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Federico Lozano Santamaria

unread,
Nov 3, 2016, 7:03:10 AM11/3/16
to Pyomo Forum
thanks for your response Bethany.

My concerns is that in this kind of problems there is more than one characteristic time, one for every task. However, in the attached file is a small formulation of how I think this can be address using the DAE extension. In short, what I think is that it can be possible to use the DAE extension as long as all the "time scale" are between 0 and 1 so only one discretization scheme is used for the whole problem. Let me know what you think about it and if this could be generalized for larger problems.

Federico

PD: the formulation might present small errors because it was a first draft.
Toy example. Scheduling and dynamic optimization.docx

Bethany Nicholson

unread,
Nov 7, 2016, 4:19:31 PM11/7/16
to pyomo...@googlegroups.com
Hi Federico,

I added an example to the Pyomo repo showing an example implementation of your toy problem (https://github.com/Pyomo/pyomo/blob/master/examples/dae/dynamic_scheduling.py). This example only considers two possible reactions but I think it captures most of what you were looking for. It could be generalized to an arbitrary number of reactions by following the GDP jobshop example.

Bethany

--
Reply all
Reply to author
Forward
0 new messages