def test_reset(self): # do several minimization iterations m1 = LBFGS(self.x, self.pot) for i in range(10): m1.one_iteration() # reset the minimizer and do it again m1.reset() e, g = self.pot.getEnergyGradient(self.x) m1.update_coords(self.x, e, g) for i in range(10): m1.one_iteration() # do the same number of steps of a new minimizer m2 = LBFGS(self.x, self.pot) for i in range(10): m2.one_iteration() # they should be the same (more or less) n = min(m1.k, m1.M) self.assertAlmostEqual(m1.H0, m2.H0, 5) self.assertEqual(m1.k, m2.k) arrays_nearly_equal(self, m1.y[:n, :], m2.y[:n, :]) arrays_nearly_equal(self, m1.s[:n, :], m2.s[:n, :]) arrays_nearly_equal(self, m1.rho[:n], m2.rho[:n]) res1 = m1.get_result() res2 = m2.get_result() self.assertNotEqual(res1.nfev, res2.nfev) self.assertNotEqual(res1.nsteps, res2.nsteps) self.assertAlmostEqual(res1.energy, res2.energy) arrays_nearly_equal(self, res1.coords, res2.coords)
def test_reset(self): # do several minimization iterations m1 = LBFGS(self.x, self.pot) for i in xrange(10): m1.one_iteration() # reset the minimizer and do it again m1.reset() e, g = self.pot.getEnergyGradient(self.x) m1.update_coords(self.x, e, g) for i in xrange(10): m1.one_iteration() # do the same number of steps of a new minimizer m2 = LBFGS(self.x, self.pot) for i in xrange(10): m2.one_iteration() # they should be the same (more or less) n = min(m1.k, m1.M) self.assertAlmostEqual(m1.H0, m2.H0, 5) self.assertEqual(m1.k, m2.k) arrays_nearly_equal(self, m1.y[:n, :], m2.y[:n, :]) arrays_nearly_equal(self, m1.s[:n, :], m2.s[:n, :]) arrays_nearly_equal(self, m1.rho[:n], m2.rho[:n]) res1 = m1.get_result() res2 = m2.get_result() self.assertNotEqual(res1.nfev, res2.nfev) self.assertNotEqual(res1.nsteps, res2.nsteps) self.assertAlmostEqual(res1.energy, res2.energy) arrays_nearly_equal(self, res1.coords, res2.coords)
def reset(self): LBFGS.reset(self) self._iter = 0
def reset(self): LBFGS.reset(self) self._iter = 0