Je cours un code d'optimisation imbriqué.Même résultat d'optimisation du code d'optimisation sur différents ordinateurs
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})
La première minimisation est la partie de la fonction B, donc elle est en quelque sorte exécutée dans la seconde minimisation.
Et toute l'optimisation est basée sur les données, il n'y a pas de nombre aléatoire impliqué. Je cours exactement le même code sur deux ordinateurs différents, et obtient des résultats totalement différents.
J'ai installé différentes versions de Anaconda, mais
scipy, numpy, et tous les emballages utilisés ont les mêmes versions.
Je ne pense pas vraiment OS importerait, mais est Windows 10 (64 bits), et l'autre est Windows 8.1 (64 bits)
Je suis en train de comprendre ce qui pourrait être la cause.
Même si je n'ai pas indiqué toutes les options, si deux ordinateurs exécutent le même code, les résultats ne devraient-ils pas être les mêmes?
ou existe-t-il des options pour sp.optimize que les valeurs par défaut sont définies pour être différent d'un ordinateur à l'autre?
PS. Je regardais l'option "eps". Est-il possible que les valeurs par défaut de "eps" sont différentes sur ces ordinateurs?
Y a-t-il une différence dans la version Python? –
Oh. tu as raison. J'ai manqué ceci .. L'un est Python 3.6.0 et l'autre est Python 3.6.1 Sera-ce la cause de la différence? Je veux dire .. C'est un peu frustrant, car sur un ordinateur il converge en 3000 itérations, mais sur l'autre, il ne converge pas avant 7000 itérations. – WKW
Les deux instances Python 64 bits? Cela pourrait aussi être un facteur. Vérifiez que les tableaux chiffrés utilisent le même 'dtype' sur les deux instances. –