IBM

QAOA - Quantum Approximate Optimization Algorithm

The Quantum Approximate Optimization Algorithm ([QAOA](https://arxiv.org/abs/1411.4028)) solves combinatorial optimization problems by approximating the solution: For a given problem represented as a cost Hamiltonian we formulate two unitary operators. The QAOA solves the problem by iteratively applying the two unitary operators on the cost Hamiltonian for a number of steps p. The angles for the unitary operators are iteratively updated by measuring the state after applying these (like in VQE). For further information see [QAOA Qiskit](https://qiskit.org/documentation/stubs/qiskit.algorithms.QAOA.html).

Provider:

ibm

Solution Example:

## Example of creating solution for quantum_approximate_optimization_algorithm (QAOA) from ibm solution = ls.solution.create( optimization_id=optimization.id, solver_name="QAOA", provider="ibm", parameters={}, qpu_tokens={} )

Parameters:

qaoa_config: qaoa.QaoaConfig

Configuration for the QAOAAnsatz

Default:

reps: int

Depth of the circuit

Default: 1

name: str

Name of the circuit

Default: "QAOA"

backend: str | dict[str, typing.Any] | None

Which backend to use. If None, will use no backend and StatevectorSampler and StatevectorEstimator. If dict, will call `runtime_service.least_busy` with the params given in the dict. If str: If 'AerSimulator', use AerSimulator. If string starts with 'Fake', will use the corresponding fake backend from qiskit_ibm_runtime.fake_provider. Otherwise, will try to use a real backend with this name.

Default: "AerSimulator"

shots: int

Shots for the optimizer

Default: 1024

dynamical_decoupling: dict[str, typing.Any]

Dynamical decoupling options for the optimizer

Default:

optimizer: str

Name of the optimizer to use in scipy minimize

Default: "COBYLA"

maxiter: int

Maximum number of iterations for the algorithm

Default: 10

optimization_level: int

Optimization level for the pass manager

Default: 2

service_config: standard_ServiceConfig

Parameters to be passed to the `QiskitRuntimeService` object

Default:

channel: typing.Literal['ibm_cloud', 'ibm_quantum']

The channel type for the service

Default: "ibm_quantum"

url: str | None

The URL of the service

Default: None

name: str | None

The name of the service

Default: None

instance: str | None

The instance identifier

Default: None

proxies: dict | None

Proxy settings for the service

Default: None

verify: bool | None

SSL verification setting

Default: None

channel_strategy: str | None

The strategy for the channel

Default: None

VQE - Variational Quantum Eigensolver

The Variational Quantum Eigensolver ([VQE](https://arxiv.org/abs/1304.3061)) solves combinatorial optimization problems by approximating the solution: For a given problem represented as a cost Hamiltonian we apply a classical/quantum hybrid algorithm to find the solution. The VQE solves the problem by iteratively applying a linear transformation (variational form) on the cost Hamiltonian and optimizing the parameters of the transformation using a classical optimizer. For further information see qiskit's [VQE tutorial](https://learning.quantum.ibm.com/tutorial/variational-quantum-eigensolver).

Provider:

ibm

Solution Example:

## Example of creating solution for variational_quantum_eigensolver (VQE) from ibm solution = ls.solution.create( optimization_id=optimization.id, solver_name="VQE", provider="ibm", parameters={}, qpu_tokens={} )

Parameters:

ansatz: str

Which ansatz to use from `qiskit.circuit.library`

Default: "EfficientSU2"

ansatz_config: dict[str, typing.Any]

Configuration for the ansatz

Default:

backend: str | dict[str, typing.Any] | None

Which backend to use. If None, will use no backend and StatevectorSampler and StatevectorEstimator. If dict, will call `runtime_service.least_busy` with the params given in the dict. If str: If 'AerSimulator', use AerSimulator. If string starts with 'Fake', will use the corresponding fake backend from qiskit_ibm_runtime.fake_provider. Otherwise, will try to use a real backend with this name.

Default: "AerSimulator"

shots: int

Shots for the optimizer

Default: 1024

dynamical_decoupling: dict[str, typing.Any]

Dynamical decoupling options for the optimizer

Default:

optimizer: str

Name of the optimizer to use in scipy minimize

Default: "COBYLA"

maxiter: int

Maximum number of iterations for the algorithm

Default: 10

optimization_level: int

Optimization level for the pass manager

Default: 2

service_config: standard_ServiceConfig

Parameters to be passed to the `QiskitRuntimeService` object

Default:

channel: typing.Literal['ibm_cloud', 'ibm_quantum']

The channel type for the service

Default: "ibm_quantum"

url: str | None

The URL of the service

Default: None

name: str | None

The name of the service

Default: None

instance: str | None

The instance identifier

Default: None

proxies: dict | None

Proxy settings for the service

Default: None

verify: bool | None

SSL verification setting

Default: None

channel_strategy: str | None

The strategy for the channel

Default: None