Added option to not compute hessian during search
This commit is contained in:
parent
f452301f0a
commit
e90e9ddb96
@ -665,27 +665,28 @@ class Search(Simulation):
|
|||||||
print(f'Equilibrium: {i:04}\n', flush=True)
|
print(f'Equilibrium: {i:04}\n', flush=True)
|
||||||
# Calculate kernel, and travel in some direction.
|
# Calculate kernel, and travel in some direction.
|
||||||
|
|
||||||
hess = self.frames[i].hessian(10e-5)
|
if self.kernel_step > 0:
|
||||||
ns = scipy.linalg.null_space(hess, 10e-4).T
|
hess = self.frames[i].hessian(10e-5)
|
||||||
|
ns = scipy.linalg.null_space(hess, 10e-4).T
|
||||||
|
|
||||||
#self.frames[i].get_statistics()
|
#self.frames[i].get_statistics()
|
||||||
eigs = np.sort(np.linalg.eig(hess)[0])
|
eigs = np.sort(np.linalg.eig(hess)[0])
|
||||||
self.frames[i].stats["eigs"] = eigs
|
self.frames[i].stats["eigs"] = eigs
|
||||||
|
|
||||||
zero_eigs = np.count_nonzero(np.isclose(eigs, np.zeros((len(eigs),)), atol=1e-4))
|
zero_eigs = np.count_nonzero(np.isclose(eigs, np.zeros((len(eigs),)), atol=1e-4))
|
||||||
if zero_eigs != 2:
|
if zero_eigs != 2:
|
||||||
print("WARNING, 0 EIGS NOT 2", zero_eigs)
|
print("WARNING, 0 EIGS NOT 2", zero_eigs)
|
||||||
|
|
||||||
if i == self.iter-1:
|
if i == self.iter-1:
|
||||||
break
|
break
|
||||||
|
|
||||||
if len(ns) <= 2:
|
if len(ns) <= 2:
|
||||||
new_sites = dim * np.random.random_sample((self.n, 2))
|
new_sites = dim * np.random.random_sample((self.n, 2))
|
||||||
else:
|
else:
|
||||||
vec = ns[random.randint(0, len(ns)-1)] # Choose random vector
|
vec = ns[random.randint(0, len(ns)-1)] # Choose random vector
|
||||||
new_sites = self.frames[i].add_sites(self.kernel_step*vec.reshape((self.n, 2)))
|
new_sites = self.frames[i].add_sites(self.kernel_step*vec.reshape((self.n, 2)))
|
||||||
|
|
||||||
new_sites += (center - new_sites[fixed]) % dim # Offset
|
new_sites += (center - new_sites[fixed]) % dim # Offset
|
||||||
self.frames.append(None)
|
self.frames.append(None)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user