2
$\begingroup$

The class QAOA from qiskit: https://qiskit.org/documentation/stubs/qiskit.aqua.algorithms.QAOA.html
has the parameter initial_state from the type InitialState. https://qiskit.org/documentation/apidoc/qiskit.aqua.components.initial_states.html#module-qiskit.aqua.components.initial_states

class QAOA(operator=None, optimizer=None, p=1, initial_state=None, mixer=None, initial_point=None, gradient=None, expectation=None, include_custom=False, max_evals_grouped=1, aux_operators=None, callback=None, quantum_instance=None) 

But this doesnt work.

qaoa_mes = QAOA(H, p=p, optimizer=optimizer, initial_state = Zero, quantum_instance=Aer.get_backend("qasm_simulator"))
results = qaoa_mes.run()  

Any Ideas?

$\endgroup$

1 Answer 1

4
$\begingroup$

You need to add the number of qubits for the initial state, this worked for me :

n_qubits = 2 #or whatever you want for your example 
qaoa_mes = QAOA(H, p=p, optimizer=optimizer, initial_state = Zero(n_qubits), quantum_instance=Aer.get_backend("qasm_simulator"))

You can also pass a list for the initial point, for example :

qaoa_mes = QAOA(H, p=p, optimizer=optimizer, initial_state = [0.,0.], quantum_instance=Aer.get_backend("qasm_simulator"))

You can even pass a circuit for the initial point, there :

n_qubits = 2
initial = QuantumCircuit(n_qubits)
#add any gate you want in the circuit, for example :
initial.h(0)
initial.cx(0,1)

qaoa_mes = QAOA(H, p=p, optimizer=optimizer, initial_state = initial, quantum_instance=Aer.get_backend("qasm_simulator"))

If you need something else feel free to ask ! :)

$\endgroup$
3
  • 1
    $\begingroup$ Good answer Lena, +1. I have not try it but it seems like you should be able to pass in quantum circuit for initial state, yes? For instance, if I want to pass in an initial state that uses all $2^n$ eigenbasis then it probably not a good idea to pass in as a state vector. I know the OP didn't ask for this but it would be great if you can add that details. :) $\endgroup$
    – KAJ226
    Commented Jan 21, 2021 at 10:46
  • 1
    $\begingroup$ Indeed @KAJ226, thanks for pointing that out, it is possible to put in a circuit, I will add that. Thanks ! :) $\endgroup$
    – Lena
    Commented Jan 21, 2021 at 10:55
  • $\begingroup$ @Lena Thank you so much! $\endgroup$
    – Hannah
    Commented Jan 22, 2021 at 12:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.