Closed hdavid16 closed 9 months ago
Options:
IntervalArithmetic.jl
to get a lower and upper bound on the min/max of a quadratic.IntervalOptimisation.jl
to get the min/max of a quadraticJuMP.jl
to solve the min/max problemPyomo 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.
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!
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: @.***>
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.
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?
"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
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.
need an analytical expression to find the min/max of the quadratic