2017-07-11 2 views
0

Par exemple cette page (http://docs.scipy.org/doc/scipy/reference/optimize.minimize-lbfgsb.html) décrit les options de solveur que l'on peut passer à la méthode L-BFGS-B 'du paquet d'optimisation de scipy. J'essaie de définir la tolérance de sortie du solveur pour certaines méthodes (L-BFGS-B, Nelder-Mead, TNC).Tolérance pour la terminaison

Je mets 'tol':0.001 mais je ne comprends pas pourquoi le solveur arrête cette convergence avec un error = 0.49.

Je suppose que la tolérance est la différence entre le retour de ma fonction et la valeur de tolérance. Donc pour moi, le solveur doit converger si l'erreur est inférieure à 0.001, mais pas pour error = 0.49!

Comment puis-je définir ma tolérance de convergence? Avec des options spécifiques comme gtol ou ftol?

Merci beaucoup!

+0

Où est votre code? – klutt

+0

Et le message d'erreur exact serait probablement aussi utile. – obachtos

Répondre

0

Ceci est mon code:

P = minimize(Run_job_mini, [float(0.7),float(0.25), float(0.4)], args=('KM3.inp'), method="L-BFGS-B", tol = 0.001, bounds = bnds, options={'disp': True, 'ftol': 1e-7, 'gtol': 1e-3,'eps': 0.1}) 

Run_job_mini est fonction qui dirigent Abaqus et de retour Error, qui est réglé de telle sorte que Error = 0 est la cible.

Cela fonctionne bien, sans message d'erreur. Mais je ne comprends pas pourquoi le script s'arrête avec Error = 0.49. Que signifie tol? Je pensais que le script doit être arrêté avec Error < tol