在不评估导数的情况下最大化函数f(x)

时间:2018-09-21 11:35:01

标签: python algorithm measurement feedback

我是一名实验物理学家,试图使我的测量中相对简单(但敏感)的优化自动化,该优化目前完全由人工完成,并占用了我很多时间。经过一些思考和评论中的提示,我将问题简化为以下内容:

我想最大化一些函数f(x)。但是,我只能评估f(x);我无法明确评估其派生词。而且,我无法对大范围的x进行采样;如果f(x)<阈值,则我有麻烦(并且我需要一天的时间才能恢复)。幸运的是,我有一个起始值x_0,使得f(x_0)>阈值,我可以猜出一些初始步长eps,f(x_0 + eps)>阈值也成立(但是,我不知道f(x_0 + eps)>或

我目前的手动操作如下:先评估f(x_0),然后评估f(x_0 + eps)。如果这导致减少,我改为评估f(x_0-eps)。基于梯度(本质上,我只是查看是否存在较大的步长或无法跨过阈值的大步长),我要么增大或减小eps,一边继续沿相同方向搜索,直到找到最大值为止,这是因为f (x)开始减少。然后,我回到那个最大值。这样,我一直在探测最大值的顶部,因此保持在安全范围内。

1 个答案:

答案 0 :(得分:0)

我会说您需要定义问题或将其分解,例如finding local optimumOr Gradient descent