prima icon indicating copy to clipboard operation
prima copied to clipboard

Wrap the objective & constraint function evaluation and catch exceptions if any

Open zaikunzhang opened this issue 2 years ago • 1 comments

This is related to

https://github.com/libprima/prima/issues/80

In general, we should keep in mind that function evaluations may fail or return exceptional values. A robust and reliable solver must handle such cases properly.

The capability of handling such cases can be tested by the TOUGH test. The following is a MATLAB implementation of such a test. https://github.com/libprima/prima/blob/main/matlab/tests/private/tough.m

The MATLAB interface of PRIMA handles exceptions and exceptional values as follows.
https://github.com/libprima/prima/blob/main/matlab/interfaces/private/evalobj.m https://github.com/libprima/prima/blob/main/matlab/interfaces/private/evalcon.m

In this way, the function evaluations are wrapped using a try ... catch ... so that exceptions will be taken care of. The solvers will not crash even if the function evaluation fails.

Is it possible to do similar things in C? I understand that C does not have a native try ... catch ....

zaikunzhang avatar Sep 20 '23 22:09 zaikunzhang

no, but it can be done when using prima is used with a c++ objective function

jschueller avatar Sep 21 '23 05:09 jschueller