lanl-ansi / Alpine.jl

A Julia/JuMP-based Global Optimization Solver for Non-convex Programs
https://lanl-ansi.github.io/Alpine.jl/latest/
Other
244 stars 39 forks source link

Bug with 1 < Delta <=2 ? #60

Closed harshangrjn closed 7 years ago

harshangrjn commented 7 years ago

While running nlp1 and nlp3 (in examples folder of POD) with 1 < Delta <=2, I see that lower bounding algorithms gets stuck at a particular gap on every iteration. This seems to happen with/without BT.

Though these values of Delta aren't of importance, still good to look at it. If this is an issue related to the stuck partition, we need to discuss this issue.

jac0320 commented 7 years ago

Ok, theoretically Delta must be > 2.

A partition is added around a bounding solutions by taking [x-(L-U)/Delta, x+(L-U)/Delta], where the case x is found in the active partition [L, U]. In cases when Delta < 2, it is possible to have [x-(L-U)/Delta, x*+(L-U)/Delta] = [L, U] since (L-U)/Delta > (L-U)/Delta. This forbids a partition to be added within [L,U], which can affect the convergence.

Do you think it is reasonable to add a warning when user give Delta <= 2?

harshangrjn commented 7 years ago

Not sure about that. Even Delta=2 should converge (may be slowly) if the solutions do not lie exactly at the mid point of the current active partition (which is not the case in NLP3?). For example, if the L=0 and U=10 and x=5 (from current iteration), the new partition will be [0,10] and hence will not be added (as expected). But, if the solution is not symmetric from U and L, say x=6, at least one partition has to be added nearer to the lower bound.

jac0320 commented 7 years ago

Exactly. Numerically, on nlp3, Delta=2 will make the problem not converging (or super slowly). The symmetric case happened on x6, x8, x5, x3, x2, x7, x4 (well, except x1).

There can be a warning when the user gives a Delta<=2. This warning will not stop POD, but to let the user know from the log that it can be a bad choice.

jac0320 commented 7 years ago

This is resolved in the most recent commit in #58.