A naive solution is to just return an arbitrary large value whenever the inversion fails (one could imagine more complicated schemes involving e.g. the determinant). I do this all the time because it happens to work for my problems. However, the right way to do this is probably to rewrite the minimizer in such a way as to "choose a different direction" if the "step in the current direction" fails. In the case of the simplex algorithm for example, one could just appropriately choose a new simplex and restart. I'd lean towards rewriting the iterate() function for the minimizer this way rather than setjmp() hax.
Take care, Andrew On Wed, Feb 20, 2008 at 11:27 AM, ddneilson <[EMAIL PROTECTED]> wrote: > > Hello there, > I'm currently working on a smallish little project wherein I'm using > GSL's multidimensional minimization routines to find a local minima of a > function. The problem is that the evaluations of this function involve > finding the inverse of a positive semi-definite matrix via Cholesky > decomposition. That in itself isn't a big problem but, some parameter > values to the function cause the matrix to become ill-conditioned; > resulting in the Cholesky decomp throwing an error. > > What I would like to do in these cases is bail out of the minimizer > since the only time this should happen is when the function doesn't have > a lower bound (I won't know there isn't a lower bound until I encounter > this problem). However, I can't seem to find a way to tell the multimin > functions to stop from within a call to the supplied f(), df() or fdf() > functions. Is this possible, or am I stuck with some sort of > thread-unsafe setjmp/longjmp hack to get out of this? > > Thanks for your time, > Daniel > > > _______________________________________________ > Help-gsl mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/help-gsl > _______________________________________________ Help-gsl mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gsl
