-
Notifications
You must be signed in to change notification settings - Fork 51
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
[ibexopt] bad optimum bounds (loup<uplo) #450
Comments
After some tests, it seems to appear only in rigor mode. |
OK, here are explanations. The first thing is that you cannot ask ibex to certify feasibility when the number of equations exceed the number of variables. In your problem you have 7 equations so the rigor mode is inapplicable. However Ibex had a buggy behavior in this case, I agree. I never tested that so far. So I've just made a fix (see abdab2d in the develop branch) and now, if you run
and the optimizer will never end.... which is fine. Now, going back to your model: Equations 5 and 6 are redundant and enforce x4=0 so you have to throw one away. Then a third problem appears: equations 2 and 3 are redundant and enforce x1x2=0. It is impossible to certify equations numerically in case of redundant constraints, would there be less than the number of variables, as this enforce somehow a permanent singularity. So you need to throw again one of them. But then, a fourth problem in your model appears. You have an infinity of global minima (x4=0), all reached in the line of points satisfying x5+x6=k13. So ibex is basically running again and again trying to handle all of them. So you need to add an equation, e.g., x5=0; And then a last problem appears: you are running ibexopt with a goal absolute precision ( So, finally, with the model modified as I've suggested and running ibex as follows:
it gives an immediate and correct result:
Gilles |
edit:
As noticed by G. Trombettoni, the problem is actual not related to upper bounding (which still occurs) but lower bounding. In rigor mode, the loup does not take into account relaxation and is stuck to the real (non-relaxed) system minimum. On the other hand, the uplo results from contraction and is stuck to the relaxed-system minimum. If eps-h is drastically less than the absolute precision (note: in your problem, relative precision is ineffective because the minimum is 0), then the gap between the loup and the uplo never reaches it. In non-rigor mode, there is no problem of this kind. |
The following run on the attached problem gives loup<uplo (tested on v2.8.7)
./ibexopt -r1e-3 -a1e-30 --eps-h=1e-8 --rigor ~/Tmp/BIOMD0000000272debug.txt
BIOMD0000000272debug.txt
and using
--kkt
fails in debug mode with an assertion violated.The text was updated successfully, but these errors were encountered: