The project is still in progress. This readme will be extended as the project develops.
This project provides a hybrid quantum-classical algorithm for solving optimization problems. It includes a Q# implementation of the Quantum Approximate Optimization Algorithm (QAOA) together with a classical optimizer in C#. The classical optimizer uses a quantum objective function to choose hopefully optimal parameters for running the QAOA. The quantum objective function is currently evaluated on a simulator backend provided by Q#.
How to run it?
- Import this project to Microsoft Visual Studio or similar.
- Use Driver.cs to prepare your ProblemInstance and run the project (some examples also provided).
Current limitations:
- an optimization problem shall be encoded into a Hamiltonian consisting of Z operators,
- support for up to 2-local Hamiltonians,
- input consists of arrays of coefficients for 1-local and 2-local Hamiltonian terms,
- a gradient-free Cobyla optimizer is used for finding good QAOA input parameters.
The flowchart of the implementation can be seen below. Notation comes from the QAOA paper).