函数f(x)的最大化

2024-09-30 01:37:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有一些函数f(x)我想最大化。但是,我只能计算f(x);我不能显式地计算它的导数。此外,我无法对x进行大范围采样;如果f(x)<;阈值,我就有麻烦了(需要一天多的时间才能恢复)。幸运的是,我有一个起始值x\u 0,使得f(x\u 0)>;阈值,并且我可以猜测f(x\u 0+eps)>;阈值也适用的一些初始步长eps(但是,在计算之前,我不知道f(x\u 0+eps)>;还是<;f(x\u 0))。有人能建议一个算法/自适应/反馈协议来找到最大化f(x)的x,直到某个公差x\u tol吗?到目前为止,我已经找到黄金分割搜索,但这需要选择一些范围(a,b),你想最大化,我不能做;我不能从一些广泛的范围开始,因为这可能会使我低于我的容忍度。你知道吗

我目前手动执行的方法如下:先计算f(xu0),然后计算f(xu0+eps)。如果这导致减少,我计算f(x0-eps)。基于梯度(基本上我只看是否有大的步进或大的步进w.r.t阈值我不能跨越),我要么增加或减少eps,并继续在同一方向上搜索,直到找到一个最大值,我注意到,因为f(x)开始减少。然后我回到最大值。这样,我总是探测最大值的顶部,因此保持在安全范围内。你知道吗


Tags: 函数ltgt算法时间评论阈值eps

热门问题