控制'中的步长;optim';R函数

控制'中的步长;optim';R函数,r,optimization,R,Optimization,我使用R来优化一个函数,使用“optim”函数。然而,我正在优化的变量的真实值至少间隔10^-5左右。但是,据我所知,默认步长(即optim向每个控制变量添加多少,以查看其如何改变目标函数)为10^-8 有没有简单的方法告诉“optim”函数将步长增加到10^5或更高 参考我的代码如下: Optimal <- optim(par = starting, fn =expectedSeats, propensities = propsShocked

我使用R来优化一个函数,使用“optim”函数。然而,我正在优化的变量的真实值至少间隔10^-5左右。但是,据我所知,默认步长(即optim向每个控制变量添加多少,以查看其如何改变目标函数)为10^-8

有没有简单的方法告诉“optim”函数将步长增加到10^5或更高

参考我的代码如下:

Optimal <- optim(par = starting, fn =expectedSeats,
                       propensities = propsShocked, n = NumberofDistricts, 
                       shockType = "normal", shockSD = 0.1,
                       method =  "L-BFGS-B",
                       lower = rep(0,NumberofDistricts), upper = rep(1,NumberofDistricts),
                       control=list(factr =  1e12)
                       )

Optimal(1)有两种步长。一个用于直线搜索,另一个用于有限差分计算。(2) 解算器采用连续、平滑的函数。这意味着您真的不应该对步长(我在1中提到的任何一个)施加这样的限制。嗨,谢谢您的回复。我可以问一下关于R中其他优化算法的建议吗?您认为这些算法可能对我的问题有帮助。我发布的那个经常收敛到不同的局部极小值。我的问题的关键特征:1)选择变量的数量很大,2)被计算的函数非常慢,3)选择变量的绝对界限(介于0和1之间)。任何提示都很好!谢谢,我对你的问题不太了解,所以这就像医生在没有检查的情况下诊断病人一样。昂贵的函数计算通常意味着没有简单的梯度(有限差分非常昂贵)。这表明无导数方法可能是合适的。更多信息或/和可复制的示例有助于澄清问题。如果目标函数的评估速度较慢,我最近的R包Optimiparallel可能会引起兴趣。