Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/JuliaQUBO/QiskitOpt.jl
JuMP wrapper for IBMQ Optimization Algorithms (ft QUBODrivers.jl)
https://github.com/JuliaQUBO/QiskitOpt.jl
julia jump qiskit quantum-optimization
Last synced: 4 days ago
JSON representation
JuMP wrapper for IBMQ Optimization Algorithms (ft QUBODrivers.jl)
- Host: GitHub
- URL: https://github.com/JuliaQUBO/QiskitOpt.jl
- Owner: JuliaQUBO
- License: mit
- Created: 2023-01-10T14:48:14.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-19T13:04:10.000Z (5 months ago)
- Last Synced: 2024-09-30T06:04:33.298Z (about 2 months ago)
- Topics: julia, jump, qiskit, quantum-optimization
- Language: Julia
- Homepage:
- Size: 65.4 KB
- Stars: 9
- Watchers: 6
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# QiskitOpt.jl
[![DOI](https://zenodo.org/badge/587349377.svg)](https://zenodo.org/badge/latestdoi/587349377)
[![QUBODRIVERS](https://img.shields.io/badge/Powered%20by-QUBODrivers.jl-%20%234063d8)](https://github.com/psrenergy/QUBODrivers.jl)IBM Qiskit Optimization Wrapper for JuMP
## Installation
```julia
julia> import Pkgjulia> Pkg.add("QiskitOpt")
```## Basic Usage
```julia
using JuMP
using QiskitOpt# Using QAOA
model = Model(QiskitOpt.QAOA.Optimizer)# Using VQE
model = Model(QiskitOpt.VQE.Optimizer)Q = [
-1 2 2
2 -1 2
2 2 -1
]@variable(model, x[1:3], Bin)
@objective(model, Min, x' * Q * x)optimize!(model)
for i = 1:result_count(model)
xi = value.(x; result=i)
yi = objective_value(model; result=i)println("f($xi) = $yi")
end
```## Updating optimization parameters
```julia
# Number of shots
MOI.set(model, VQE.NumberOfReads(), 1000) # or QAOA.NumberOfReads# Maximum optimizer iterations
MOI.set(model, VQE.MaximumIterations(), 100) # or QAOA.MaximumIterations# Ansatz
MOI.set(model, VQE.Ansatz(), QiskitOpt.qiskit.circuit.library.EfficientSU2) # or QAOA.Ansatz# Number of QAOA ansatz repetitions (for QAOA only)
MOI.set(model, QAOA.NumberOfLayers(), 5)
```## Changing the backend and instance
```julia
MOI.set(model, VQE.IBMBackend(), "ibm_osaka") # or QAOA.IBMBackend
MOI.set(model, VQE.Instance(), "my/instance") # or QAOA.Instance# Using a fake backend
MOI.set(model, VQE.IBMFakeBackend(), QiskitOpt.qiskit_ibm_runtime.fake_provider.FakeAlgiers) # or QAOA.IBMFakeBackend```
List of fake backends available: [Qiskit Documentation](https://docs.quantum.ibm.com/api/qiskit-ibm-runtime/fake_provider#fake-backends)
## API Token
To access IBM's Quantum Computers, it is necessary to create an account at [IBM Q](https://quantum-computing.ibm.com/) to obtain an API Token and run the following python code:```python
from qiskit_ibm_runtime import QiskitRuntimeServiceQiskitRuntimeService.save_account(channel='ibm_quantum', token="YOUR_TOKEN_HERE")
```Another option is to set the `IBMQ_API_TOKEN` environment variable before loading `QiskitOpt.jl`:
```shell
$ export IBMQ_API_TOKEN=YOUR_TOKEN_HERE$ julia
julia> using QiskitOpt
```**Disclaimer:** _The IBM Qiskit Optimization Wrapper for Julia is not officially supported by IBM. If you are a commercial customer interested in official support for Julia from IBM, let them know!_
**Note**: _If you are using [QiskitOpt.jl](https://github.com/psrenergy/QiskitOpt.jl) in your project, we recommend you to include the `.CondaPkg` entry in your `.gitignore` file. The PythonCall module will place a lot of files in this folder when building its Python environment._