优化问题中的未知域

计算科学 优化
2021-12-24 21:37:00

与这篇文章相比,我有一个类似的问题

我正在尝试最大化一个功能,这对我来说是一个黑匣子。我有无梯度方法的工具;事实上,这个问题相当顺利,我什至可以在大多数情况下使用梯度的数值近似。但是,还有最后一个问题:定义函数的域是未知的。在评估之前,我无法知道该函数是否已定义。

因此,我所做的是,如果在评估过程中我意识到这个函数是未定义的,我给它的值是-infor -nan然而,程序有时会到达这一点并尝试评估它的导数——然后程序就失败了。

我不认为这是一个罕见的问题,所以我尝试在网上搜索,但没有运气。我想在这里提出这个问题,并且非常感谢任何可能有帮助的想法。

2个回答

选择一个具有有限函数值的固定点x0

然后在作为梯度的点返回具有有限函数值通过回溯选择。f(x)=x0+t(xx0)t<1

这应该可以解决您的问题,至少在使用线搜索方法时是这样。

从您的描述来看,您的问题是在使用基于导数的方法时出现的。

因此,我建议您尝试保持在可行区域内——如有必要——调整当前梯度方向上的步长,以便始终在搜索空间中找到有效点。

对于其他无导数的方法,如单纯形法或遗传算法,评估的零星失败不会使算法失败。

免责声明:我对优化领域只有基本的了解。