Metadata-Version: 2.1
Name: ga_vqc
Version: 1.0.13
Summary: Genetic Algorithm for VQC ansatz search.
Home-page: https://github.com/tcoulvert/GA_Ansatz_Search
Author: Thomas Sievert
Author-email: 63161166+tcoulvert@users.noreply.github.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib >=2.2.5
Requires-Dist: numpy >=1.23
Requires-Dist: pandas >=1.5
Requires-Dist: scikit-learn >=1.2
Requires-Dist: pennylane >=0.29
Requires-Dist: pennylane-qulacs >=0.32
Requires-Dist: qulacs-gpu >=0.3
Provides-Extra: dev
Requires-Dist: pytest >=3.7 ; extra == 'dev'
Requires-Dist: check-manifest >=0.47 ; extra == 'dev'

# GA for VQC Ansatz Search
This is a module to support Variational Quantum Circuits by optimizing the ansatz. The ansatz optimization is performed using a Genetic Algorithm, which can be parallelized with GPUs.

For a detailed example of using this package see the https://github.com/tcoulvert/QAE_4_HEP repository.


## Installation
Run the following to install:
```bash
$ pip install ga-vqc
```

## Contributors
This module was developed through the Caltech SURF program. Special thanks
to my mentor at Caltech.
- Jean-Roch (California Institute of Technology, Pasadena, CA 91125, USA)

## Usage
```python
import ga_vqc as gav

## Config (hyperparameters) for GA, see full list in example ##

vqc_main = <'Function that handles running your VQC optimization'>

# Example of allowed optimization gates, see Genepool.py for documentation
gates_dict = {"I": (1, 0), "RX": (1, 1), "CNOT": (2, 0)}
gates_probs = [0.35, 0.35, 0.3]
genepool = gav.Genepool(gates_dict, gates_probs)

vqc_config = {
    'num_qubits': 3,
    'etc': <'whatever config params your VQC model requires'>
}

ga_output_path = FILEPATH_FOR_GA_OUTPUT

config = gav.Config(vqc_main, vqc_config, genepool, ga_output_path)

# Create the GA with the given hyperparameters
ga = gav.setup(config)

# Evolve the GA and search for the best ansatz
ga.evolve()
```
