pyomo.gpd | bigm vs. hull transformations

12 views
Skip to first unread message

Jan Wiegner

unread,
Apr 10, 2025, 12:45:06 PMApr 10
to Pyomo Forum
Dear pyomo community,

we developed a large energy system model using pyomo and the pyomo.gdp extention to model disjunctive problem structures (e.g. on/off unit schedules, min up/downtime of generators etc.). Now, we looked at the differences between bigm and hull transformations and have a couple of questions.

(1) Our model is organized in Blocks and we apply the transformation to each block holding a Disjunction - is this the correct approach? I believe this way, we also transform multiple Disjunctions on one Block. 

(2) What happens, if we have a hierarchical model, with a Block holding multiple other Blocks and we perform the transformation on the parent and all children Blocks. Does that cause problems? Is it maybe better to apply the transformation once at top level to the whole model? Initially we implemented it this way to be able to chose the transformation method for each block individually.

(3) What concerned us most is that the model solution for bigm and hull transformations are significantly different (20-30% difference in objective values) and constraints formulated in Disjuncts were clearly violated in the hull transformed model. The model is rather large and is poorly scaled - binary variables do not converge exactly to 1, so this might be some part of the problem. From experience, we do not expect though, that numeric instability would cause 20-30% differences and cosntraint violations to the degree we observed. Has anyone of you experienced similar issues or has an idea where this difference might come from? We believe the bigm formulation is the correct one, but we also cannot be sure. 

We are happy to hear your experience/advise!
Thanks in advance,

Jan 
Reply all
Reply to author
Forward
0 new messages