def test_ce_k4_filtered(self):
        """Test for k=4 eigenvalues with filter"""

        # define filter criterion
        # pylint: disable=unused-argument
        def criterion(x, v, a_v):
            return v >= -1

        algo = NumPyEigensolver(k=4, filter_criterion=criterion)
        result = algo.compute_eigenvalues(operator=self.qubit_op,
                                          aux_operators=[])
        self.assertEqual(len(result.eigenvalues), 2)
        self.assertEqual(len(result.eigenstates), 2)
        self.assertEqual(result.eigenvalues.dtype, np.float64)
        np.testing.assert_array_almost_equal(result.eigenvalues,
                                             [-0.88272215, -0.22491125])
    def get_solver(self, problem: BaseProblem) -> Eigensolver:
        """Returns a NumPyEigensolver with the desired filter

        Args:
            problem: a class encoding a problem to be solved.

        Returns:
            A NumPyEigensolver suitable to compute the ground state of the molecule
            transformed by ``transformation``.
        """
        filter_criterion = self._filter_criterion
        if not filter_criterion and self._use_default_filter_criterion:
            filter_criterion = problem.get_default_filter_criterion()

        npe = NumPyEigensolver(filter_criterion=filter_criterion, k=self.k)
        return npe
    def get_solver(self, transformation: Transformation) -> Eigensolver:
        """Returns a NumPyEigensolver with the desired filter

        Args:
            transformation: a fermionic/bosonic qubit operator transformation.

        Returns:
            A NumPyEigensolver suitable to compute the ground state of the molecule
            transformed by ``transformation``.
        """
        filter_criterion = self._filter_criterion
        if not filter_criterion and self._use_default_filter_criterion:
            filter_criterion = transformation.get_default_filter_criterion()

        npe = NumPyEigensolver(filter_criterion=filter_criterion, k=self.k)
        return npe
Esempio n. 4
0
    def setUp(self):
        super().setUp()
        algorithm_globals.random_seed = 8
        try:
            self.driver = PySCFDriver(atom='H .0 .0 .0; H .0 .0 0.75',
                                      unit=UnitsType.ANGSTROM,
                                      charge=0,
                                      spin=0,
                                      basis='sto3g')
        except QiskitNatureError:
            self.skipTest('PYSCF driver does not appear to be installed')

        self.reference_energies = [-1.8427016, -1.8427016 + 0.5943372, -1.8427016 + 0.95788352,
                                   -1.8427016 + 1.5969296]
        self.transformation = \
            FermionicTransformation(qubit_mapping=FermionicQubitMappingType.JORDAN_WIGNER)
        solver = NumPyEigensolver()
        self.ref = solver
        self.quantum_instance = QuantumInstance(BasicAer.get_backend('statevector_simulator'),
                                                seed_transpiler=90, seed_simulator=12)
    def setUp(self):
        super().setUp()
        algorithm_globals.random_seed = 8
        try:
            self.driver = PySCFDriver(atom='H .0 .0 .0; H .0 .0 0.75',
                                      unit=UnitsType.ANGSTROM,
                                      charge=0,
                                      spin=0,
                                      basis='sto3g')
        except QiskitNatureError:
            self.skipTest('PYSCF driver does not appear to be installed')

        self.reference_energies = [-1.8427016, -1.8427016 + 0.5943372, -1.8427016 + 0.95788352,
                                   -1.8427016 + 1.5969296]
        self.qubit_converter = QubitConverter(JordanWignerMapper())
        self.electronic_structure_problem = ElectronicStructureProblem(self.driver)

        solver = NumPyEigensolver()
        self.ref = solver
        self.quantum_instance = QuantumInstance(BasicAer.get_backend('statevector_simulator'),
                                                seed_transpiler=90, seed_simulator=12)
Esempio n. 6
0
 def test_ce_k2_1q(self, op):
     """Test for 1 qubit operator"""
     algo = NumPyEigensolver(k=2)
     result = algo.compute_eigenvalues(operator=op)
     np.testing.assert_array_almost_equal(result.eigenvalues, [-1, 1])
Esempio n. 7
0
 def test_ce_fail(self):
     """ Test no operator """
     algo = NumPyEigensolver()
     with self.assertRaises(AlgorithmError):
         _ = algo.run()