ibex-team / ibex-lib

IBEX is a C++ library for constraint processing over real numbers.
http://ibex-team.github.io/ibex-lib/
GNU Lesser General Public License v3.0
67 stars 51 forks source link

New linearizer + loupfinders #510

Open vareyesr opened 3 years ago

vareyesr commented 3 years ago

Hi Gilles,

We have incorporated the AbsTaylor upperbounding/linearization methods and the Iterative loupfinder into the last version of Ibex.

AbsTaylor is a linearization method that can use any point inside the box as an expansion point for constructing a inner polytope (by default the midpoint of the box). This feature enables the method to find more upperbounds than its counterpart (XTaylor). It can be used through the new class LoupFinderIP (Loup Finder Inner Polytope). We replaced the class LoupFinderXTaylor by LoupFinderIP. By default, LoupFinderIP uses XTaylor as inner-linearization, thus it is equivalent to the old LoupFinderXTaylor class.

Additionally, the new loupfinder Iterative performs a local search. Starting from an initial point (e.g., the midpoint of the current box), LoupFinderIterative first attempts to find a candidate feasible solution by using AbsTaylor (or XTaylor) and Simplex. If it is successful, then the algorithm performs a loop while the candidate solution is improved. This method gives good results compared to X-Taylor. The “best” parameters found for this method have also been included in the .h as default.

Finally, there is also the source abstaylor.cpp inside the example folder in order to test/check things.

Summarizing, we have included the files: examples/abstaylor.cpp src/loup/LoupFinderIP.h src/loup/LoupFinderIP.cpp src/loup/LoupFinderIterative.h src/loup/LoupFinderIterative.cpp src/numeric/ibex_LinearizerAbsTaylor.cpp src/numeric/ibex_LinearizerAbsTaylor.h

Regards,

Victor Reyes, Ignacio Araya.