Python Nelder-Mead优化中的终端容差
我正在尝试使用Nelder-Mead方法优化某个函数,我需要帮助理解一些参数。我对数值优化的世界相当陌生,所以,请原谅我对更有经验的用户可能会看到的东西的无知。我注意到我已经看了又看,但没有我希望的那么多帮助。我试图在两种情况下优化函数$f$:(I)我希望在$f$值低于某个值时停止优化,以及(ii)一旦参数接近最佳值,我不希望优化器再次增加步长(也就是说,一旦它低于阈值并在几次迭代中保持低于阈值,我希望优化终止)。下面是我使用的优化代码:Python Nelder-Mead优化中的终端容差,python,optimization,scipy,minimize,Python,Optimization,Scipy,Minimize,我正在尝试使用Nelder-Mead方法优化某个函数,我需要帮助理解一些参数。我对数值优化的世界相当陌生,所以,请原谅我对更有经验的用户可能会看到的东西的无知。我注意到我已经看了又看,但没有我希望的那么多帮助。我试图在两种情况下优化函数$f$:(I)我希望在$f$值低于某个值时停止优化,以及(ii)一旦参数接近最佳值,我不希望优化器再次增加步长(也就是说,一旦它低于阈值并在几次迭代中保持低于阈值,我希望优化终止)。下面是我使用的优化代码: scipy.optimize.minimize(fun=
scipy.optimize.minimize(fun=f, x0=init_pos, method="nelder-mead",
options={"initial_simplex": simplex,
"disp": True, "maxiter" : 25,
"fatol": 0.50, "adaptive": True})
其中f
是我的函数(f:RxR->[0,sqrt(2))。我知道x0=init\u pos
是f的初始值,“initial\u simplex”:simplex
是初始三角形(在我的2D示例中),“maxiter”:25
意味着优化器在终止之前将运行多达25次迭代
以下是我不理解/不确定的事情:
“fatol”:0.50意味着一旦f(x)发生变化,优化就会终止吗将具有0.5或更小的值?如果没有,我如何修改终止条件(在我的情况下,我如何确保它在f(x)时停止)
只要| f(x_n)-f(x_(n+1))|
相同:此条件在| x|n-x|(n+1)|
只要| f(x_n)-f(x_(n+1))|
相同:此条件在| x|n-x|(n+1)|