Open mewilhel opened 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.
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: