amplify.IsingQuadraticModel¶

class
IsingQuadraticModel
¶ Is the quadratic model which represents the Ising model with real coefficients.
The class abstracts a “logical model” from multivariate polynomial, matrix, and constraints. The “logical model” is a formulation for inputting into the ising machines. This class generates a logical model by reducing the order of multivariate polynomial to quadratic and reallocating variable index.
The class converts to a logical model from the below objects.
Multivariate polynomial
Includes polynomial with the order greater than three.
Matrix
Constraint
Includes multiple constraints
Note
For more details of the conversion source, see
__init__()
and its examples.Through attributes of this class, you can get a raw input model, a converted logical model, and mapping from an input model to a logical model.
Note
 The following operators are defined for the class.
Addition:
a + b
(__add__()
,__radd__()
,__iadd__()
)

__init__
(*args, **kwargs)¶ Returns the Ising quadratic model initialized by input and constraints.
Overloads
 Parameters
poly (
IsingPoly
orIsingIntPoly
) –polynomial of the Ising model.
matrix (
IsingMatrix
orIsingIntMatrix
) –the Ising matrix of the Ising model
constant (
int
,float
, optional) –a constant term of the Ising model
constraints (
IsingConstraint
,IsingConstraints
,IsingIntConstraint
, orIsingIntConstraints
, optional) –constraints of the Ising model
Example
>>> from amplify import (gen_symbols, ... IsingQuadraticModel) >>> from amplify.constraint import equal_to >>> s = gen_symbols(IsingQuadraticModel, 3) >>> model = IsingQuadraticModel(s[0] + s[1] + s[2], equal_to(s[0], 1)) >>> model.input_poly s_0 + s_1 + s_2
>>> from amplify import (IsingMatrix, ... IsingQuadraticModel) >>> mat = IsingMatrix(3) >>> mat[0, 1] = 1 >>> mat[0, 2] = 2 >>> mat[1, 2] = 3 >>> model = IsingQuadraticModel(mat, 4) >>> model.input_matrix ([[0, 1, 2], [0, 0, 3], [0, 0, 0]], 4.0)
Methods
__init__
(*args, **kwargs)Returns the Ising quadratic model initialized by input and constraints.
Attributes
Returns the constraints of the Ising quadratic model.
Equivalents to
logical_matrix
.Returns the input
IsingPoly
.Returns the mapping from input varieties to logical varieties.
Returns the pair of
IsingMatrix
and the constant term of the Ising quadratic model.Is almost same as
logical_matrix
, but includes the constraint terms.Is almost same as
logical_poly
, but includes the constraint terms.Returns
IsingPoly
, which represents the Ising quadratic model.Returns the number of variables in the input Ising quadratic model.
Returns the number of variables in the converted Ising quadratic model.

property
input_constraints
¶ Returns the constraints of the Ising quadratic model.
Example
>>> from amplify import (gen_symbols, ... IsingPoly, ... IsingQuadraticModel) >>> from amplify.constraint import equal_to >>> s = gen_symbols(IsingPoly, 1) >>> model = IsingQuadraticModel(equal_to(s[0], 1)) >>> eq = model.input_constraints.pop() >>> eq.is_satisfied([1]) False >>> eq.is_satisfied([1]) True

property
input_matrix
¶ Equivalents to
logical_matrix
.

property
input_poly
¶ Returns the input
IsingPoly
.Example
>>> from amplify import (IsingPoly, ... IsingQuadraticModel) >>> poly = IsingPoly({(0, 1, 2) : 1}) >>> model = IsingQuadraticModel(poly) >>> model.input_poly s_0 s_1 s_2

property
logical_mapping
¶ Returns the mapping from input varieties to logical varieties.
Example
>>> from amplify import (IsingMatrix, ... IsingQuadraticModel) >>> mat = IsingMatrix(3) >>> model = IsingQuadraticModel(mat) >>> model.logical_mapping {2: 2, 0: 0, 1: 1}

property
logical_matrix
¶ Returns the pair of
IsingMatrix
and the constant term of the Ising quadratic model.Example
>>> from amplify import (IsingMatrix, ... IsingQuadraticModel) >>> mat = IsingMatrix(3) >>> mat[0, 1] = 1 >>> mat[0, 2] = 2 >>> mat[1, 2] = 3 >>> poly = mat.to_Poly() >>> poly += 4 >>> model = IsingQuadraticModel(poly) >>> model.logical_matrix ([[0, 1, 2], [0, 0, 3], [0, 0, 0]], 4.0)

property
logical_model_matrix
¶ Is almost same as
logical_matrix
, but includes the constraint terms.Example
>>> from amplify import (IsingMatrix, ... IsingQuadraticModel) >>> from amplify.constraint import equal_to >>> mat = IsingMatrix(3) >>> mat[0, 1] = 1 >>> mat[0, 2] = 2 >>> mat[1, 2] = 3 >>> poly = mat.to_Poly() >>> poly += 4 >>> model = IsingQuadraticModel(poly, equal_to(s[0], 1)) >>> model.logical_model_matrix ([[2, 1, 2], [0, 0, 3], [0, 0, 0]], 6.0)

property
logical_model_poly
¶ Is almost same as
logical_poly
, but includes the constraint terms.Example
>>> from amplify import (gen_symbols, ... IsingQuadraticModel) >>> from amplify.constraint import equal_to >>> s = gen_symbols(IsingQuadraticModel, 3) >>> model = IsingQuadraticModel(s[0] + s[1] + s[2], equal_to(s[0], 1)) >>> model.logical_model_poly s_0 + s_1  s_2 + 2.000000

property
logical_poly
¶ Returns
IsingPoly
, which represents the Ising quadratic model.Note
The
logical_poly
variables don’t always correspond to theinput_poly
variables, even ifinput_poly
is quadratic.Example
>>> from amplify import (IsingPoly, ... IsingQuadraticModel) >>> poly = IsingPoly({(0, 1, 2) : 1}) >>> model = IsingQuadraticModel(poly) >>> model.logical_poly s_0 s_1 + s_0 s_2  2.000000 s_0 s_3 + s_1 s_2  2.000000 s_1 s_3  2.000000 s_2 s_3 + s_0 + s_1 + s_2  2.000000 s_3 + 3.000000

property
num_input_vars
¶ Returns the number of variables in the input Ising quadratic model.
Example
>>> from amplify import (IsingPoly, ... IsingQuadraticModel) >>> poly = IsingPoly({(0, 1, 2) : 1}) >>> model = IsingQuadraticModel(poly) >>> model.num_input_vars 3

property
num_logical_vars
¶ Returns the number of variables in the converted Ising quadratic model.
Example
>>> from amplify import (IsingPoly, ... IsingQuadraticModel) >>> poly = IsingPoly({(0, 1, 2) : 1}) >>> model = IsingQuadraticModel(poly) >>> model.num_logical_vars 4