def test_ground_state_energy(self): N = 3 a = generate_variables(N, name="a") substitutions = bosonic_constraints(a) hamiltonian = sum(Dagger(a[i]) * a[i] for i in range(N)) sdpRelaxation = SdpRelaxation(a, verbose=0) sdpRelaxation.get_relaxation(1, objective=hamiltonian, substitutions=substitutions) sdpRelaxation.solve() self.assertTrue(abs(sdpRelaxation.primal) < 10e-5)
def test_ground_state_energy(self): N = 3 a = generate_operators('a', N) substitutions = bosonic_constraints(a) hamiltonian = sum(Dagger(a[i]) * a[i] for i in range(N)) sdpRelaxation = SdpRelaxation(a, verbose=0) sdpRelaxation.get_relaxation(1, objective=hamiltonian, substitutions=substitutions) sdpRelaxation.solve() self.assertTrue(abs(sdpRelaxation.primal) < 10e-5)
def createSubstitutions(self): return bosonic_constraints(self._b)
level = 1 # Number of variables N = 3 # Parameters for the Hamiltonian hbar, omega = 1, 1 # Define ladder operators a = generate_variables(N, name='a') hamiltonian = 0 for i in range(N): hamiltonian += hbar * omega * (Dagger(a[i]) * a[i] + 0.5) substitutions, equalities = bosonic_constraints(a) inequalities = [] time0 = time.time() # Obtain SDP relaxation print("Obtaining SDP relaxation...") sdpRelaxation = SdpRelaxation(a, verbose=1) sdpRelaxation.get_relaxation(level, objective=hamiltonian, equalities=equalities, substitutions=substitutions, removeequalities=True) # Export relaxation to SDPA format print("Writing to disk...") write_to_sdpa(sdpRelaxation, 'harmonic_oscillator.dat-s') print('%0.2f s' % ((time.time() - time0)))
""" import time from sympy.physics.quantum.dagger import Dagger from ncpol2sdpa import generate_variables, SdpRelaxation,\ bosonic_constraints # Level of relaxation level = 1 # Number of variables N = 3 # Parameters for the Hamiltonian hbar, omega = 1, 1 # Define ladder operators a = generate_variables(N, name='a') substitutions = bosonic_constraints(a) hamiltonian = sum(hbar * omega * (Dagger(a[i]) * a[i]) for i in range(N)) time0 = time.time() # Obtain SDP relaxation sdpRelaxation = SdpRelaxation(a, verbose=1) sdpRelaxation.get_relaxation(level, objective=hamiltonian, substitutions=substitutions) # Export relaxation to SDPA format sdpRelaxation.write_to_file("harmonic_oscillator.dat-s") print('%0.2f s' % ((time.time() - time0)))