def set_vqe_circuit(self, backend = None):    
    #Check https://qiskit.org/documentation/tutorials/algorithms/03_vqe_simulation_with_noise.html
    #seed = 170
    
    iterations = self.vqe_options['maxiter']
    #aqua_globals.random_seed = seed
    if backend is None:
        backend = 'statevector_simulator'
    backend = Aer.get_backend(backend)

    counts = []
    values = []
    stds = []
    def store_intermediate_result(eval_count, parameters, mean, std):
        counts.append(eval_count)
        values.append(mean)
        stds.append(std)

    var_form = TwoLocal(reps = self.vqe_options['n_steps'], 
                        rotation_blocks = 'ry', 
                        entanglement_blocks = 'cx', 
                        entanglement = 'linear',
                        insert_barriers = True)
    spsa = SPSA(maxiter=iterations)

    if self.vqe_options['noise']:
        os.environ['QISKIT_IN_PARALLEL'] = 'TRUE'
        device = QasmSimulator.from_backend(device_backend)
        coupling_map = device.configuration().coupling_map
        noise_model = NoiseModel.from_backend(device)
        basis_gates = noise_model.basis_gates

        qi = QuantumInstance(backend=backend,
                            coupling_map=coupling_map,
                            noise_model=noise_model)

    else:
        qi = QuantumInstance(backend=backend)

    vqe = VQE(var_form=var_form, optimizer=spsa, callback=store_intermediate_result, quantum_instance=qi)
    result = vqe.compute_minimum_eigenvalue(operator=self.H)

    return vqe.get_optimal_circuit(), vqe.optimal_params, vqe.get_optimal_vector(), vqe.get_optimal_cost()
class SeparableInitialStateReal(InitialState):
    """An initial state constructed from a completely separable VQE ansatz."""

    CONFIGURATION = {
        'name': 'VQE-Separable-State',
        'description': 'VQE Separable initial state',
        'input_schema': {
            '$schema': 'http://json-schema.org/schema#',
            'id': 'separable_state_schema',
            'type': 'object',
            'properties': {},
            'additionalProperties': False
        }
    }

    def __init__(self, operator, optimizer, **vqe_kwargs):
        """Initialize separable state object.
        Parameters
        ----------
        operator : Operator
            Operator to minimize the separable state with respect to.
        optimizer : Optimzer
            Optimizer to use for determining optimal separable state.
        **vqe_kwargs : type
            Options for VQE that determines optimal initial state.
        """
        super().__init__()
        self.vqe = VQE(operator=operator,
                       var_form=SingleQubitRotationsReal(operator.num_qubits),
                       optimizer=optimizer,
                       **vqe_kwargs)
        self._circuit = None
        self._result = None

    def initialize(self, quantum_instance):
        """Initialize the separable initial state.
        Parameters
        ----------
        quantum_instance : QuantumInstance
            What device/simulator to use for determining the optimal separable state.
        """
        if self._circuit is None:
            self._result = self.vqe.run(quantum_instance)
            logger.info('Found initial separable state cost {}'.format(
                self.vqe.get_optimal_cost()))
            self._circuit = self.vqe.get_optimal_circuit()
            return self._circuit
        else:
            return self._circuit

    def construct_circuit(self, mode='circuit', register=None):
        """Return the optimal separable state.
        Parameters
        ----------
        mode : str
            Mode to use for construction.
        register : type
            Register to use for constructing circuit. Currently unused.
        Returns
        -------
        QuantumCircuit
            Circuit that prepares optimal separable state.
        """
        if mode != 'circuit':
            raise ValueError('Selected mode {} is not supported'.format(mode))
        if self._circuit is None:
            raise ValueError('Initial state has not yet been initialized.')
        circuit = self._circuit
        return circuit