A package for programming general least squares problems on Quantum annealers.
$ pip install git+https://github.com/tchlux/qaml.git
This module makes the construction of least-squares energy
landscapes for a quantum annealing framework easily accessible. See
qaml/examples for demonstrations of how to setup and solve
fixed-point least squares problems.
In order to construct arbitrary least squares circuits, this module
provides a qaml.Circuit object that allows the allocations of
numbers via the function Circuit.Number. The Number objects can
be added, subtracted, multiplied, and exponentiated in standard
Python syntax.
After manipulating (a sequence of) Number(s) into an equation, use
Circuit.add( <Number> ). Multiple equations can be added to the
same circuit. Once ready to minimize, construct and run the circuit
with Circuit.run().
This will produce a QUBO whose energy function is the summed squared
value of all equations provided. That squared-value QUBO will be
executed on the selected quantum annealing system (could be a
simulator like QBSolve or real D-Wave hardware). After execution,
the results will be post-processed for logical consistency and
presented in a human-readable format.
import qaml
# Construct a circuit with two signed 4-bit fixed precision numbers.
# a = ( a0 * 2^[-1] + a1 * 2^[0] + a2 * 2^[1] - a3 * 2^[2] )
circ = qaml.Circuit()
a = circ.Number(bits=4, exponent=-1, signed=True)
b = circ.Number(bits=4, exponent=-1, signed=True)
# Add the equations:
# ( a + b - 6 )^2
# + ( a - 2 )^2
circ.add( a + b - 6 )
circ.add( a - 2 )
circ.run( min_only=False, display=True )
# ^^ Show all results, not just minimum solutions.
# SAMPLE OUTPUT
# ____________________________________________________________________
#
# QUBO with 8 bits in range [-32, 96].
# -------------------------------------------------
# -7.50
# 2.00 -14
# 4.00 8 -24
# -8.00 -16 -32 96
# 0.50 1.00 2.00 -4.00 -5.75
# 1.00 2 4 -8 1.00 -11
# 2.00 4 8 -16 2.00 4 -20
# -4.00 -8 -16 32 -4.00 -8 -16 64
# -------------------------------------------------
#
# a b Energy
# 2.0 3.5 0.25
# 2.5 3.5 0.25
# 2.5 3.0 0.5
# 2.0 3.0 1.0
# 3.0 3.0 1.0
# . . .
# . . .This code is associated with a research paper. To cite, please use
Chang, T. H., Lux, T. C. H. & Tipirneni, S. S. Quantum Inf Process (2019) 18: 374.
Available from Springer, Quantum Information Processing
Please create an issue for usage questions and bug reporting.