Skip to content

Latest commit

 

History

History
29 lines (20 loc) · 1.66 KB

README.md

File metadata and controls

29 lines (20 loc) · 1.66 KB

Unitary Fund

QAOA in Q#

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?

  1. Import this project to Microsoft Visual Studio or similar.
  2. 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).

qaoa-flowchart
Dependencies:

  1. Q# and Microsoft Quantum Libraries
  2. C# Accord Math library