Pyomo / pyomo

An object-oriented algebraic modeling language in Python for structured optimization problems.
https://www.pyomo.org
Other
2.05k stars 523 forks source link

Adding bounds of expressions to fbbt #2993

Open codykarcher opened 1 year ago

codykarcher commented 1 year ago

Summary

As an example if I have:

pi <= x+y <= 2*pi

as a constraint and:

sin(x+y) ==z+u

Then I know that z+u is bounded to be between -1 and 0. It would be helpful if fbbt could perform these types of bound operations

Rationale

I would like to be able to make statements about convexity in the case where I have some known interval. In the case above, I can solve the problem as a convex optimization problem (despite the sin function not being convex) because it is convex on the valid interval. I can also replace the sin function with a polynomial approximation on the given valid domain for more efficient solution

Description

@michaelbynum had thoughts on this that I did not really understand

Additional information

Can discuss during the next developer meeting

michaelbynum commented 1 year ago

We could support this if we identified common expressions, forming a single DAG for the entire problem. It should be doable, and is a feature worth having.