gpt4 book ai didi

r - R optim 实现中的 Brent 方法始终返回相同的局部最小值

转载 作者:行者123 更新时间:2023-12-03 16:38:12 25 4
gpt4 key购买 nike

Function to be minimised

我正在尝试最小化上面显示的函数。我在 (-1,1) 之间搜索。我使用以下代码

optim(runif(1,min=-1,max=+1), ..., method = "Brent", lower = -1.0, upper = 1.0)

我注意到它总是返回值 x = -0.73 而不是正确的 x = 0.88 答案。 optimise帮助页面给出了原因:

The first evaluation of f is always at x_1 = a + (1-φ)(b-a) where (a,b) = (lower, upper) and phi = (sqrt(5) - 1)/2 = 0.61803.. is the golden section ratio. Almost always, the second evaluation is at x_2 = a + phi(b-a). Note that a local minimum inside [x_1,x_2] will be found as solution, even when f is constant in there, see the last example.

我很好奇是否可以使用 Brent 方法而不会每次都达到相同的局部最小值。

将方法更改为“L-BFGS-B”效果更好(每次返回随机局部最小值):

optim(runif(1,min=-1,max=+1), ..., method = "L-BFGS-B", lower = -1.0, upper = 1.0)

最佳答案

您的函数不是凸函数,因此您将有多个局部/全局最小值或最大值。对于你的功能,我会运行一个非传统/无导数的全局优化器,如模拟退火或遗传算法,并将输出用作 BFGS 或任何其他局部优化器的起点,以获得精确的解决方案。多次重复上述步骤,您将找到所有的全局和局部最优点。

关于r - R optim 实现中的 Brent 方法始终返回相同的局部最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30972623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com