与这篇文章相比,我有一个类似的问题。
我正在尝试最大化一个功能,这对我来说是一个黑匣子。我有无梯度方法的工具;事实上,这个问题相当顺利,我什至可以在大多数情况下使用梯度的数值近似。但是,还有最后一个问题:定义函数的域是未知的。在评估之前,我无法知道该函数是否已定义。
因此,我所做的是,如果在评估过程中我意识到这个函数是未定义的,我给它的值是-inf
or -nan
。然而,程序有时会到达这一点并尝试评估它的导数——然后程序就失败了。
我不认为这是一个罕见的问题,所以我尝试在网上搜索,但没有运气。我想在这里提出这个问题,并且非常感谢任何可能有帮助的想法。