通过4个参数输入我的数学函数。参数也有界限:
a = [0,2]
b = [-1,1]
c = [eps, inf]
d = [-inf, inf]
我想最小化最终值并找到函数中的最佳参数。
在Scipy中,只有3个函数支持边界优化问题'TNC', 'SLSQP' and 'L-BFGS-B'
[参考:optimizations]。
问题是当SLSQP
和有时其他方法为参数选择nan
时,函数的结果会转到nan
获取值。它突然发生,例如,在step i-1
中运行正常并返回实际值,但对于step i
输入参数为nan
,因此最终结果将转到nan
。从那时起,输入和输出为nan
,同时达到最大迭代次数!
问题出在哪里?
夏季代码在这里:
bnds = [(eps, 2.), (-1.,1.), (eps, np.inf), (-np.inf, np.inf)]
scipy.optimize.fmin_slsqp(myFunc, params, bounds=bnds)
或
scipy.optimize.minimize(myFunc, params, method='SLSQP', bounds=bnds)
由于这个问题没有真正的解决方案,我被迫改变了我的问题!