Hi,

    I'm using COBYLA to solve a nonlinear constrained and
non-differentiable optimization problem. And it turns out that sometimes
the optimizer violates the constraint, which is weird...

   So I did some research on that. It seems I'm not alone. See earlier
discussions about COBYLA algorithm:
https://github.com/scipy/scipy/issues/2891;

http://stackoverflow.com/questions/18782092/python-scipy-optimization-issue-fmin-cobyla-one-constraint-is-not-respected

    Now some possibilities discussed in those threads can be excluded as
explanations:
   1) Initial guess infeasible. My choice of initial guess is guaranteed
feasible.
   2) Tolerance of constraint. The violation of constraint has a way much
magnitude than the tolerance, say at 10^3 when tolerance is 0.1.

    What I suspect though, is the step size in COBYLA algorithm in forming
the n+1 simplex. Could that be possible that in giving the heuristic step
size by NLOPT somehow pulls the vertex of simplex out of the feasible
region?

     I did some check along this line by calling nlo_get_initial_step (I'm
using Fortran with GNU compiler). It seems that the step dx always = x of
initial guess (excluding the case, dx=1 if x=Infinity or - Infinity). I'm
not sure how that may explain the violation....

     Would you share some thoughts about that? Thanks a lot!

Best,
Wenya




-- 
Wenya Wang
PhD Candidate
Department of Economics,
University of Western Ontario,
London, Ontario, CA
N6A 3K7
_______________________________________________
NLopt-discuss mailing list
NLopt-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss

Reply via email to