def test_min_ntr_noble_atoms_lsr1(): for irep in xrange(10): with numpy_random_seed(irep): fn = Atoms(1.0, 1.0, 1, 10, np.random.normal(0, 2, 30)) hm = LSR1HessianModel(7) wr = HessianModelWrapper(fn, hm) minimize_objective_ntr(wr, maxiter=5125) assert rms(fn.gradient()) < 1e-7
def test_multi_gauss_diis(): completed = 0 for irep in xrange(100): with numpy_random_seed(irep): reference, xs = get_problem(4) converged_a, counter_a, amps_a = run_mult_gauss_diis(reference, xs, 500, False) converged_b, counter_b, amps_b = run_mult_gauss_diis(reference, xs, 200, True) assert counter_a >= counter_b assert converged_b if converged_a and converged_b: completed += 1 assert abs(amps_a - amps_b).max() < 1e-10 assert completed > 50
def test_multi_gauss_diis(): completed = 0 for irep in xrange(100): with numpy_random_seed(irep): reference, xs = get_problem(4) converged_a, counter_a, amps_a = run_mult_gauss_diis( reference, xs, 500, False) converged_b, counter_b, amps_b = run_mult_gauss_diis( reference, xs, 200, True) assert counter_a >= counter_b assert converged_b if converged_a and converged_b: completed += 1 assert abs(amps_a - amps_b).max() < 1e-10 assert completed > 50
def test_compare_sr1_lsr1_constant(): n = 5 for irep1 in xrange(100): with numpy_random_seed(irep1): A = np.random.normal(0, 1, (n, n)) A = (A + A.T) hm = SR1HessianModel(eps_skip=0.0) lhm = LSR1HessianModel(n, eps_skip=0.0) for i in xrange(3): delta_x = np.zeros(n) delta_x[i] = 1.0 delta_g = np.dot(A, delta_x) hm.feed(delta_x, delta_g) lhm.feed(delta_x, delta_g) for irep2 in xrange(100): v = np.random.normal(0, 1, n) o1 = hm.dot_hessian(v) o2 = lhm.dot_hessian(v) assert abs(o1 - o2).max() < 1e-8
def test_gradient(): fn = Atoms(1.0, 1.0, 6, 10, np.zeros(30, float)) with numpy_random_seed(2): xs = [np.random.normal(0, 7, 30) for ix in xrange(100)] fn.test_gradient(xs, nrep=4)