繁体   English   中英

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

[英]Maximizing a function f(x) without evaluating the derivative

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

我想最大化一些函数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)最大化到一定容差x_tol的x吗? 到目前为止,我已经找到了黄金分割搜索,但是这需要选择一个想要最大化的范围(a,b),而我无法做到。 我不能从一个广泛的范围开始,因为那可能使我低于我的承受能力。

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

我会说您需要定义问题或将其分解,例如找到局部最优值 或梯度下降

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM