All Projects → qucontrol → krotov

qucontrol / krotov

Licence: other
Python implementation of Krotov's method for quantum optimal control

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to krotov

OpenJij
OpenJij : Framework for the Ising model and QUBO.
Stars: ✭ 57 (+23.91%)
Mutual labels:  quantum-mechanics, quantum-computing
miniqubit
Quantum emulator of the IBM Quantum experience
Stars: ✭ 24 (-47.83%)
Mutual labels:  quantum-mechanics, quantum-computing
Qu.js
Quantum Computing for Humans!
Stars: ✭ 15 (-67.39%)
Mutual labels:  quantum-mechanics, quantum-computing
Quantum-Computing-Collection-Of-Resources
A Well Maintained Repository On Quantum Computing Resources [Code+Theory] Updated Regularly During My Time At IBM, Qubit x Qubit And The Coding School's Introduction To Quantum Computing Course '21
Stars: ✭ 183 (+297.83%)
Mutual labels:  quantum-mechanics, quantum-computing
FastExpm.jl
Implementation of a fast exponential matrix for large matrices (full and sparse)
Stars: ✭ 22 (-52.17%)
Mutual labels:  quantum-mechanics, quantum-computing
qsel
Quantum programming language putting entanglement and superposition front and center
Stars: ✭ 37 (-19.57%)
Mutual labels:  quantum-computing
Quantum-Computing-UK-Repository
This repository contains all of the code found in the quantum computing tutorials at : https://quantumcomputinguk.org.
Stars: ✭ 52 (+13.04%)
Mutual labels:  quantum-computing
ddsim
MQT DDSIM - A quantum circuit simulator based on decision diagrams written in C++
Stars: ✭ 45 (-2.17%)
Mutual labels:  quantum-computing
sike-java
SIKE for Java is a software library that implements experimental supersingular isogeny cryptographic schemes that aim to provide protection against attackers running a large-scale quantum computer.
Stars: ✭ 28 (-39.13%)
Mutual labels:  quantum-computing
dwave-cloud-client
A minimal implementation of the REST interface used to communicate with D-Wave Solver API (SAPI) servers.
Stars: ✭ 51 (+10.87%)
Mutual labels:  quantum-computing
launchpad
Resources to get started in Quantum Computing!
Stars: ✭ 21 (-54.35%)
Mutual labels:  quantum-computing
bloch sphere
Visualization tools for the qubit Bloch sphere
Stars: ✭ 46 (+0%)
Mutual labels:  quantum-computing
learn-qc-with-python-and-qsharp
Companion code for Learn Quantum Computing with Python and Q# Book by Dr. Sarah Kaiser and Dr. Chris Granade 💖
Stars: ✭ 62 (+34.78%)
Mutual labels:  quantum-computing
awesome-qsharp
A curated list of Q# code and resources.
Stars: ✭ 123 (+167.39%)
Mutual labels:  quantum-computing
YaoBlocks.jl
Standard basic quantum circuit simulator building blocks. (archived, for it is moved to Yao.jl)
Stars: ✭ 26 (-43.48%)
Mutual labels:  quantum-computing
mpc-DL-controller
Deep Neural Network architecture as a predictive optimal controller for {HVAC+Solar cell + battery} disturbance afflicted system vs classic Model Predictive Control
Stars: ✭ 37 (-19.57%)
Mutual labels:  optimal-control
IonSim.jl
a simple tool for simulating trapped ion systems
Stars: ✭ 46 (+0%)
Mutual labels:  quantum-mechanics
dwave-hybrid
Hybrid Asynchronous Decomposition Sampler prototype framework.
Stars: ✭ 69 (+50%)
Mutual labels:  quantum-computing
dwave-system
An API for easily incorporating the D-Wave system as a sampler, either directly or through Leap's cloud-based hybrid samplers
Stars: ✭ 77 (+67.39%)
Mutual labels:  quantum-computing
QuantumPoker
Quantum Poker – a serious pedagogical tool to learn quantum computing that is fun to play
Stars: ✭ 16 (-65.22%)
Mutual labels:  quantum-computing

Krotov Python Package

Source code on Github Documentation Krotov on the Python Package Index Join the chat at https://gitter.im/qucontrol_krotov/Lobby Docs Tests Codecov BSD License Launch Binder DOI

Python implementation of Krotov's method for quantum optimal control.

This implementation follows the original implementation in the QDYN Fortran library.

The krotov package is built on top of QuTiP.

Development happens on Github. You can read the full documentation online or download a PDF version.

If you use the krotov package in your research, please cite it.

Purpose

Optimal control is a cornerstone of quantum technology: relying not just on a passive understanding of quantum mechanics, but on the active utilization of the quantum properties of matter. Quantum optimal control asks how to manipulate the dynamics of a quantum system in some desired way. This is essential for the realization of quantum computers and related technologies such as quantum sensing.

Krotov's method and GRAPE are the two leading gradient-based optimization algorithms used in numerical quantum optimal control. Krotov's method distinguishes itself by guaranteeing monotonic convergence for near-continuous control fields. This makes is particularly useful for exploring the limits of controllability in a physical system. While GRAPE is found in various software packages, there has not been an open source implementation of Krotov's method to date. Our package provides that missing implementation.

The Krotov package targets both students wishing to enter the field of quantum control and researchers in the field. It was designed towards the following goals:

  • Leverage the QuTiP library as a platform for numerically describing quantum systems.
  • Provide a collection of examples inspired by recent publications in the Jupyter notebook format, allowing for interactive exploration of the method.
  • Define a general interface for formulating any quantum control problem, which may extend to other optimization methods in the future.
  • Serve as a reference implementation of Krotov's method, and as a foundation against which to test other implementations.
  • Enable the more widespread use of Krotov's method, for example in the design of experiments.

Prerequisites

The Krotov package is available for Python versions >= 3.5. Its main dependency is QuTiP (apart from the core packages of the Python scientific ecosystem). Thus, you should consider QuTiP's installation instructions.

In any case, using some sort of virtual environment is strongly encouraged. Most packages in the Python scientific ecosystem are now available as wheels, making installation via pip easy. However, QuTiP currently does not provide wheels. Thus, on systems that do not have the necessary compilers installed (Windows, macOS), the conda package manager provides a good solution.

Assuming conda is installed (e.g. through Miniconda), the following commands set up a virtual (conda) environment into which the Krotov package can then be installed:

conda create -n qucontrolenv "python=3.7"
conda activate qucontrolenv
conda config --append channels conda-forge
conda install qutip

Installation

To install the latest released version of krotov into your current (conda) environment, run this command in your terminal:

python -m pip install krotov

This is the preferred method to install the krotov package, as it will always install the most recent stable release.

You may also do

python -m pip install krotov[dev,extras]

to install additional development dependencies, including packages required to run the example notebooks.

If you don't have pip installed, the Python installation guide, respectively the Python Packaging User Guide can guide you through the process.

To install the latest development version of krotov from Github:

python -m pip install git+https://github.com/qucontrol/krotov.git@master#egg=krotov

Usage

To use Krotov's method for quantum optimal control in a Python script or Jupyter notebook, start with:

import krotov
import qutip

Then,

  1. define the necessary quantum operators and states using QuTiP.
  2. create a list of objectives, as instances of krotov.Objective.
  3. call krotov.optimize_pulses to perform an optimization of an arbitrary number of control fields over all the objectives.

See Using Krotov with QuTiP and Examples for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].