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