【发布时间】:2018-02-13 02:07:05
【问题描述】:
我正在运行嵌套优化代码。
sp.optimize.minimize(fun=A, x0=D, method="SLSQP", bounds=(E), constraints=({'type':'eq','fun':constrains}), options={'disp': True, 'maxiter':100, 'ftol':1e-05})
sp.optimize.minimize(fun=B, x0=C, method="Nelder-Mead", options={'disp': True})
第一个最小化是函数 B 的一部分,所以它是在第二个最小化内部运行的。
而且整个优化都是基于数据的,不涉及随机数。
我在两台不同的计算机上运行完全相同的代码,得到完全不同的结果。
我安装了不同版本的anaconda,但是
scipy、numpy 和所有使用的包都有相同的版本。
我认为操作系统并不重要,但一个是 windows 10(64 位),另一个是 windows 8.1(64 位)
我正在尝试找出可能导致此问题的原因。
即使我没有说明所有选项,但如果两台计算机运行相同的代码,结果不应该相同吗?
或者对于 sp.optimize 是否有任何选项可以将默认值设置为因计算机而异?
附言。我在看选项“eps”。这些计算机上的“eps”默认值是否可能不同?
【问题讨论】:
-
Python版本有区别吗?
-
哦。你说的对。我错过了这个.. 一个是 Python 3.6.0,另一个是 Python 3.6.1 它会导致差异吗?我的意思是.. 这有点令人沮丧,因为在一台计算机上它会在 3000 次迭代中收敛,但在另一台计算机上,它直到 7000 次迭代才会收敛..
-
两个 Python 实例都是 64 位的吗?这也可能是一个因素。检查 numpy 数组是否在两个实例上使用相同的
dtype。
标签: python optimization scipy minimization