Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support interval arithmetic for quadratic expressions #65

Closed
hdavid16 opened this issue Jul 12, 2023 · 8 comments
Closed

support interval arithmetic for quadratic expressions #65

hdavid16 opened this issue Jul 12, 2023 · 8 comments
Labels
enhancement New feature or request

Comments

@hdavid16
Copy link
Owner

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

@hdavid16 hdavid16 added the enhancement New feature or request label Jul 12, 2023
@hdavid16
Copy link
Owner Author

hdavid16 commented Jul 12, 2023

Options:

  • use IntervalArithmetic.jl to get a lower and upper bound on the min/max of a quadratic.
  • use IntervalOptimisation.jl to get the min/max of a quadratic
  • use JuMP.jl to solve the min/max problem
  • an analytical approach? Not likely, maybe for R^2, but for higher order quadratics, it gets messy

@pulsipher
Copy link
Collaborator

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
Copy link
Owner Author

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
Copy link
Collaborator

pulsipher commented Aug 16, 2023 via email

@hdavid16
Copy link
Owner Author

hdavid16 commented Dec 8, 2023

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
Copy link
Collaborator

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
Copy link
Owner Author

hdavid16 commented Dec 8, 2023

"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
Copy link
Collaborator

pulsipher commented Dec 8, 2023

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants