hdavid16 / DisjunctiveProgramming.jl

A JuMP extension for Generalized Disjunctive Programming
MIT License
27 stars 3 forks source link

support interval arithmetic for quadratic expressions #65

Closed hdavid16 closed 9 months ago

hdavid16 commented 1 year ago

need an analytical expression to find the min/max of the quadratic

hdavid16 commented 1 year ago

Options:

pulsipher commented 1 year ago

Pyomo now avoids CNF altogether by default and instead uses a combination of algebraic and disjunctive constraints, taking inspiration from factorable programming: https://github.com/Pyomo/pyomo/blob/main/pyomo/contrib/cp/transform/logical_to_disjunctive_program.py

This is will yield a different MILP formulation, but the reformulation should be faster.

hdavid16 commented 1 year ago

CNF is for the logic proposition constraints, not for Big-M, which is what this issue is about... However, I'll have to take a look at what they do in that regard. Thanks!

pulsipher commented 1 year ago

Whoops, I posted on the wrong issue by mistake.

On Wed, Aug 16, 2023, 2:49 PM Hector Perez @.***> wrote:

CNF is for the logic proposition constraints, not for Big-M, which is what this issue is about... However, I'll have to take a look at what they do in that regard. Thanks!

— Reply to this email directly, view it on GitHub https://github.com/hdavid16/DisjunctiveProgramming.jl/issues/65#issuecomment-1681113050, or unsubscribe https://github.com/notifications/unsubscribe-auth/AICHX55J5VI2B2RNAECM4ILXVUI4VANCNFSM6AAAAAA2G2XPSA . You are receiving this because you commented.Message ID: @.***>

hdavid16 commented 9 months ago

There is no analytical expression for a constrained quadratic that I know of. Getting tight Big-M values for quadratic or other nonlinear constraints will require solving a separate optimization problem...or borrowing something from PYOMO GDP.

pulsipher commented 9 months ago

There is no analytical expression for a constrained quadratic that I know of. Getting tight Big-M values for quadratic or other nonlinear constraints will require solving a separate optimization problem...or borrowing something from PYOMO GDP.

What does Pyomo do?

hdavid16 commented 9 months ago

"By default, the BM transformation will estimate reasonably tight M values for you if variables are bounded. For nonlinear models where finite expression bounds may be inferred from variable bounds, the BM transformation may also be able to automatically compute M values for you. For all other models, you will need to provide the M values through a “BigM” Suffix, or through the bigM argument to the transformation." https://pyomo.readthedocs.io/en/stable/modeling_extensions/gdp/solving.html#big-m-bm-reformulation

pulsipher commented 9 months ago

I wonder how they "infer" "finite expression bounds" on nonlinear constraints. If they can do it, it would be nice to add that capability here as well.