Performance 为什么Nelder Mead在scipy中的每次迭代都如此缓慢?

Performance 为什么Nelder Mead在scipy中的每次迭代都如此缓慢?,performance,scipy,minimize,simplex,Performance,Scipy,Minimize,Simplex,我正在尝试使用scipy.minimize(method='Nelder-Mead')中实现的Nelder-Mead最小化函数。该函数大约有30个输入,但我一直在按顺序优化(即,在前5个输入上进行优化,保持其余25个输入不变,然后逐渐增加要最小化的变量数量)。 (我没有使用基于梯度的方法,因为我的目标函数中存在模拟噪声,这使得步长太小时不平滑,梯度不可靠) 但是,迭代非常缓慢。如果我对单个函数计算的步骤计时,大约需要60秒,但是优化中的每个迭代都非常慢,至少慢于10分钟。我使用回调函数选项来计算

我正在尝试使用scipy.minimize(method='Nelder-Mead')中实现的Nelder-Mead最小化函数。该函数大约有30个输入,但我一直在按顺序优化(即,在前5个输入上进行优化,保持其余25个输入不变,然后逐渐增加要最小化的变量数量)。 (我没有使用基于梯度的方法,因为我的目标函数中存在模拟噪声,这使得步长太小时不平滑,梯度不可靠)

但是,迭代非常缓慢。如果我对单个函数计算的步骤计时,大约需要60秒,但是优化中的每个迭代都非常慢,至少慢于10分钟。我使用回调函数选项来计算所花费的时间

它在每次迭代中做什么?它在初始单纯形中实际需要N^2个步骤吗?算法的每一步都做了什么?我知道这与Matlab实现不同,Matlab实现每次迭代只需要一个步骤(如果收缩或扩展单纯形,有时需要更多步骤)。还是仅仅是调用回调函数的时间问题

顺便说一句,我在Jupyter笔记本上运行这个。但我已经让它运行了3天多,只完成了221次迭代,需要优化20个变量;平均每次迭代超过20分钟