PSORLab / EAGO.jl

A development environment for robust and global optimization
MIT License
140 stars 16 forks source link

Handling nonlinear expressions near domain violations #41

Open mewilhel opened 4 years ago

mewilhel commented 4 years ago

Right now, we're using a fancy overloading approach to build relaxations of nonlinear terms. Expansiveness of the interval calculations can lead to intermediate terms containing an interval bound on which some functions aren't defined (e.g. sqrt on [-0.001, 10]). Two potential approaches to dealing with this:

mewilhel commented 4 years ago

We've added a default safeguard to the McCormick.jl operators to address this.

Basically, z = y/x becomes MC{N,T}(union(y/Interval(x.Intv.lo,-MC_DOMAIN_TOL), y/Interval(MC_DOMAIN_TOL, x.Intv.hi))) this can be disable by setting const MC_DOMAIN_CATCH = false in line 81 of McCormick.jl. This is in place for /, inv, and pow functions. We'll need to look at hyperbolic functions and trig functions shortly.