def test_io_consistency(self):
        """ consistency test """
        new_op = X ^ Y ^ I
        label = 'XYI'
        # label = new_op.primitive.to_label()
        self.assertEqual(str(new_op.primitive), label)
        np.testing.assert_array_almost_equal(new_op.primitive.to_matrix(),
                                             Operator.from_label(label).data)
        self.assertEqual(new_op.primitive, Pauli(label=label))

        x_mat = X.primitive.to_matrix()
        y_mat = Y.primitive.to_matrix()
        i_mat = np.eye(2, 2)
        np.testing.assert_array_almost_equal(new_op.primitive.to_matrix(),
                                             np.kron(np.kron(x_mat, y_mat), i_mat))

        hi = np.kron(H.to_matrix(), I.to_matrix())
        hi2 = Operator.from_label('HI').data
        hi3 = (H ^ I).to_matrix()
        np.testing.assert_array_almost_equal(hi, hi2)
        np.testing.assert_array_almost_equal(hi2, hi3)

        xy = np.kron(X.to_matrix(), Y.to_matrix())
        xy2 = Operator.from_label('XY').data
        xy3 = (X ^ Y).to_matrix()
        np.testing.assert_array_almost_equal(xy, xy2)
        np.testing.assert_array_almost_equal(xy2, xy3)

        # Check if numpy array instantiation is the same as from Operator
        matrix_op = Operator.from_label('+r')
        np.testing.assert_array_almost_equal(PrimitiveOp(matrix_op).to_matrix(),
                                             PrimitiveOp(matrix_op.data).to_matrix())
        # Ditto list of lists
        np.testing.assert_array_almost_equal(PrimitiveOp(matrix_op.data.tolist()).to_matrix(),
                                             PrimitiveOp(matrix_op.data).to_matrix())
Exemple #2
0
    def aux_operators(
        self, aux_operators: Optional[
            Union[OperatorBase, LegacyBaseOperator,
                  List[Optional[Union[OperatorBase, LegacyBaseOperator]]]]]
    ) -> None:
        """ Set aux operators """
        if aux_operators is None:
            aux_operators = []
        elif not isinstance(aux_operators, list):
            aux_operators = [aux_operators]

        # We need to handle the array entries being Optional i.e. having value None
        self._aux_op_nones = [op is None for op in aux_operators]
        if aux_operators:
            zero_op = I.tensorpower(self.operator.num_qubits) * 0.0
            converted = []
            for op in aux_operators:
                if op is None:
                    converted.append(zero_op)
                elif isinstance(op, LegacyBaseOperator):
                    converted.append(op.to_opflow())
                else:
                    converted.append(op)

            # For some reason Chemistry passes aux_ops with 0 qubits and paulis sometimes.
            aux_operators = [zero_op if op == 0 else op for op in converted]

        self._aux_operators = aux_operators  # type: List
Exemple #3
0
 def aux_operators(self,
                   aux_operators: Optional[List[Optional[Union[OperatorBase,
                                                               LegacyBaseOperator]]]]) -> None:
     """ Set aux operators """
     # We need to handle the array entries being Optional i.e. having value None
     self._aux_op_nones = None
     if isinstance(aux_operators, list):
         self._aux_op_nones = [op is None for op in aux_operators]
         zero_op = I.tensorpower(self.operator.num_qubits) * 0.0
         converted = [op.to_opflow() if op else zero_op for op in aux_operators]
         # For some reason Chemistry passes aux_ops with 0 qubits and paulis sometimes.
         converted = [zero_op if op == 0 else op for op in converted]
         aux_operators = ListOp(converted)
     elif isinstance(aux_operators, LegacyBaseOperator):
         aux_operators = [aux_operators.to_opflow()]
     self._aux_operators = aux_operators
Exemple #4
0
 def aux_operators(self,
                   aux_operators: Optional[List[Optional[Union[OperatorBase,
                                                               LegacyBaseOperator]]]]) -> None:
     """ Set aux operators """
     # This is all terrible code to deal with weight 0-qubit None aux_ops.
     self._aux_op_nones = None
     if isinstance(aux_operators, list):
         self._aux_op_nones = [op is None for op in aux_operators]
         zero_op = I.tensorpower(self.operator.num_qubits) * 0.0
         converted = [op.to_opflow() if op else zero_op for op in aux_operators]
         # For some reason Chemistry passes aux_ops with 0 qubits and paulis sometimes.
         converted = [zero_op if op == 0 else op for op in converted]
         aux_operators = ListOp(converted)
     elif isinstance(aux_operators, LegacyBaseOperator):
         aux_operators = [aux_operators.to_opflow()]
     self._aux_operators = aux_operators
 def aux_operators(
     self,
     aux_operators: Optional[List[Optional[Union[OperatorBase,
                                                 LegacyBaseOperator]]]]
 ) -> None:
     """ set aux operators """
     if aux_operators is None:
         self._aux_operators = []
     else:
         aux_operators = \
             [aux_operators] if not isinstance(aux_operators, list) else aux_operators
         converted = [
             op.to_opflow() if op is not None else None
             for op in aux_operators
         ]
         # Chemistry passes aux_ops with 0 qubits and paulis sometimes
         zero_op = I.tensorpower(self.operator.num_qubits) * 0.0
         converted = [zero_op if op == 0 else op for op in converted]
         self._aux_operators = converted
    def aux_operators(self,
                      aux_operators: Optional[
                          Union[OperatorBase,
                                LegacyBaseOperator,
                                List[Optional[Union[OperatorBase,
                                                    LegacyBaseOperator]]]]]) -> None:
        if aux_operators is None:
            aux_operators = []
        elif not isinstance(aux_operators, list):
            aux_operators = [aux_operators]

        if aux_operators:
            zero_op = I.tensorpower(self.operator.num_qubits) * 0.0
            converted = [op.to_opflow() if isinstance(op, LegacyBaseOperator)
                         else op for op in aux_operators]

            # For some reason Chemistry passes aux_ops with 0 qubits and paulis sometimes.
            aux_operators = [zero_op if op == 0 else op for op in converted]

        self._aux_operators = aux_operators
Exemple #7
0
@author: linmin
"""
import numpy as np
from docplex.mp.model import Model
from qiskit.optimization.problems import QuadraticProgram
from qiskit.optimization.converters import QuadraticProgramToIsing
from qiskit import QuantumCircuit
from qiskit.aqua.operators import StateFn

from qiskit.aqua.operators import Z, X, Y, I, H, S
import random

count = 0
w = 0
P_0 = I.to_matrix()
P_1 = X.to_matrix()
P_2 = Y.to_matrix()
P_3 = Z.to_matrix()
HH = H.to_matrix()
S = S.to_matrix()
OPE = [P_0, HH, S]
pauli = [P_0, P_1, P_2, P_3]
Pauli = [I, X, Y, Z]

R = 2 #number of iteration == R

n = 5 #number of qubits
x_matrix = np.zeros((R, n))
z_matrix = np.zeros((R, n))
matrix = np.zeros((R, 2*n))