Skip to content

[PEP] Solving Blocks with variables that do not live on the Block #1032

Open
@michaelbynum

Description

@michaelbynum

I would like to be able to solve Pyomo Blocks with variables that do not live on the Block. I will describe my use case, but there are others.

I have a structured MINLP. In fact, it looks like a binary tree of Blocks. I have a transformation to relax this MINLP. The the root block has a constraint with a bilinear term (for example), x*y, then I will replace that bilinear term with an auxiliary variable, aux, and add constraints for the McCormick envelopes relating aux to x and y. If this same bilinear term, x*y appears in other constraints, I want to replace it with the same auxiliary variable aux. I do not want to create a new variable for the same term. Now, suppose I encounter the same bilinear term in a constraint on a child Block. I already have the auxiliary variable on the root Block. It is not easy to move the auxiliary variable so that it has a new parent. I also have a need to solve individual child Blocks.

Another example I am aware of arises in GDP transformations. Maybe @jsiirola can elaborate.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions