【发布时间】:2019-05-22 08:02:32
【问题描述】:
我已经实现了 scipy.optimize.minimize 以最小化具有 128 个值的一维数组的 pandas 数据帧的增量值的平均值。
它似乎在运行并做一些事情,但它并没有停止在 maxiter 或从此处的另一个 Stack Overflow 问题获取的回调函数处。
我的代码是:
import numpy as np
from scipy.optimize import minimize, rosen
import time
import warnings
class TookTooLong(Warning):
pass
class MinimizeStopper(object):
def __init__(self, max_sec=60*60*5):
self.max_sec = max_sec
self.start = time.time()
def __call__(self, xk=None):
elapsed = time.time() - self.start
if elapsed > self.max_sec:
warnings.warn("Terminating optimization: time limit reached",
TookTooLong)
else:
# you might want to report other stuff here
print("Elapsed: %.3f sec" % elapsed)
import scipy.optimize
res = scipy.optimize.minimize(minFunct,oned,options=
{"disp":True,"maxiter":100},tol=0.01,
method ="BFGS",callback=MinimizeStopper(1E-3))
一段时间后显示的消息告诉我已达到maxiter,并且已达到比开始时更小的函数值,但它并没有停止。由于它是在 jupyter 中运行的,因此如果没有完成单元格,我无法到达 res。
【问题讨论】:
标签: python scipy scipy-optimize-minimize