eqc-models 0.9.8__py3-none-any.whl → 0.9.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/assignment/setpartition.py +8 -29
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/polyeval.c +123 -123
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/polyeval.cpython-310-darwin.so +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/polynomial.py +84 -1
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/sequence/tsp.py +38 -34
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/solvers/qciclient.py +46 -11
- {eqc_models-0.9.8.dist-info → eqc_models-0.9.9.dist-info}/METADATA +2 -2
- eqc_models-0.9.9.dist-info/RECORD +52 -0
- {eqc_models-0.9.8.dist-info → eqc_models-0.9.9.dist-info}/WHEEL +1 -1
- eqc_models-0.9.8.dist-info/RECORD +0 -52
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/compile_extensions.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/algorithms/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/algorithms/base.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/algorithms/penaltymultiplier.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/allocation/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/allocation/allocation.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/allocation/portbase.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/allocation/portmomentum.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/assignment/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/assignment/qap.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/base.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/constraints.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/operators.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/polyeval.pyx +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/base/quadratic.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/decoding.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/graph/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/graph/base.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/graph/hypergraph.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/graph/maxcut.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/graph/maxkcut.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/classifierbase.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/classifierqboost.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/classifierqsvm.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/clustering.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/clusteringbase.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/decomposition.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/forecast.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/forecastbase.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/regressor.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/regressorbase.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/ml/reservoir.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/sequence/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/solvers/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/utilities/__init__.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/utilities/fileio.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/utilities/polynomial.py +0 -0
- {eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/utilities/qplib.py +0 -0
- {eqc_models-0.9.8.dist-info → eqc_models-0.9.9.dist-info}/LICENSE.txt +0 -0
- {eqc_models-0.9.8.dist-info → eqc_models-0.9.9.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from typing import Tuple, Union, List
|
|
3
3
|
import numpy as np
|
|
4
4
|
from eqc_models.base.base import EqcModel
|
|
5
|
-
from eqc_models.base.operators import Polynomial
|
|
5
|
+
from eqc_models.base.operators import Polynomial, QUBO, OperatorNotAvailableError
|
|
6
6
|
from eqc_models.base.constraints import ConstraintsMixIn
|
|
7
7
|
|
|
8
8
|
class PolynomialMixin:
|
|
@@ -114,6 +114,89 @@ class PolynomialModel(PolynomialMixin, EqcModel):
|
|
|
114
114
|
def polynomial(self) -> Polynomial:
|
|
115
115
|
coefficients, indices = self.H
|
|
116
116
|
return Polynomial(coefficients=coefficients, indices=indices)
|
|
117
|
+
|
|
118
|
+
@property
|
|
119
|
+
def qubo(self) -> QUBO:
|
|
120
|
+
try:
|
|
121
|
+
if np.all([len(self.polynomial.indices[i]) == 2 for i in range(len(self.polynomial.indices))]):
|
|
122
|
+
bin_n = 0
|
|
123
|
+
bits = []
|
|
124
|
+
C, J = self._quadratic_polynomial_to_qubo_coefficients(self.polynomial.coefficients,
|
|
125
|
+
self.polynomial.indices, self.n)
|
|
126
|
+
# upper_bound is an array of the maximum values each variable can take
|
|
127
|
+
upper_bound = self.upper_bound
|
|
128
|
+
if np.sum(upper_bound) != upper_bound.shape[0]:
|
|
129
|
+
for i in range(upper_bound.shape[0]):
|
|
130
|
+
bits.append(1 + np.floor(np.log2(upper_bound[i])))
|
|
131
|
+
bin_n += bits[-1]
|
|
132
|
+
bin_n = int(bin_n)
|
|
133
|
+
Q = np.zeros((bin_n, bin_n), dtype=np.float32)
|
|
134
|
+
powers = [2 ** np.arange(bit_count) for bit_count in bits]
|
|
135
|
+
blocks = []
|
|
136
|
+
linear_blocks = []
|
|
137
|
+
for i in range(len(powers)):
|
|
138
|
+
# add the linear terms to the diagonal
|
|
139
|
+
linear_blocks.append(C[i] * powers[i])
|
|
140
|
+
row = []
|
|
141
|
+
for j in range(len(powers)):
|
|
142
|
+
mult = J[i, j]
|
|
143
|
+
block = np.outer(powers[i], powers[j])
|
|
144
|
+
block *= mult
|
|
145
|
+
row.append(block)
|
|
146
|
+
blocks.append(row)
|
|
147
|
+
Q[:, :] = np.block(blocks)
|
|
148
|
+
linear_operator = np.hstack(linear_blocks)
|
|
149
|
+
Q += np.diag(linear_operator)
|
|
150
|
+
else:
|
|
151
|
+
# in this case, the fomulation already has only binary variables
|
|
152
|
+
Q = np.zeros_like(J)
|
|
153
|
+
Q[:, :] = J
|
|
154
|
+
Q += np.diag(np.squeeze(C))
|
|
155
|
+
|
|
156
|
+
return QUBO(Q)
|
|
157
|
+
else:
|
|
158
|
+
raise OperatorNotAvailableError("QUBO operator not available")
|
|
159
|
+
except OperatorNotAvailableError as e:
|
|
160
|
+
print(e)
|
|
161
|
+
|
|
162
|
+
def _quadratic_polynomial_to_qubo_coefficients(self, coefficients, indices, num_variables):
|
|
163
|
+
"""
|
|
164
|
+
Transform polynomial into linear and quadratic qubo coefficient arrays.
|
|
165
|
+
|
|
166
|
+
Parameters
|
|
167
|
+
----------
|
|
168
|
+
coefficients : List[float]
|
|
169
|
+
Coefficients of the polynomial terms, sorted according to the assumed format.
|
|
170
|
+
indices : List[Tuple[int, int]]
|
|
171
|
+
Sorted list of variable indices for the polynomial terms.
|
|
172
|
+
num_variables : int
|
|
173
|
+
Total number of variables in the polynomial.
|
|
174
|
+
|
|
175
|
+
Returns
|
|
176
|
+
-------
|
|
177
|
+
linear_coefficients : np.ndarray
|
|
178
|
+
1D array of linear coefficients.
|
|
179
|
+
quadratic_coefficients : np.ndarray
|
|
180
|
+
2D array of quadratic coefficients.
|
|
181
|
+
"""
|
|
182
|
+
# Initialize arrays
|
|
183
|
+
linear_coefficients = np.zeros(num_variables, dtype=np.float32)
|
|
184
|
+
quadratic_coefficients = np.zeros((num_variables, num_variables), dtype=np.float32)
|
|
185
|
+
|
|
186
|
+
# Populate arrays
|
|
187
|
+
for coeff, index in zip(coefficients, indices):
|
|
188
|
+
if index[0] == 0: # Linear term
|
|
189
|
+
linear_coefficients[index[1] - 1] += coeff
|
|
190
|
+
else: # Quadratic term
|
|
191
|
+
i, j = index
|
|
192
|
+
if i == j:
|
|
193
|
+
quadratic_coefficients[i - 1, j - 1] += coeff
|
|
194
|
+
elif i != j: # Symmetric terms
|
|
195
|
+
quadratic_coefficients[i - 1, j - 1] += coeff / 2
|
|
196
|
+
quadratic_coefficients[j - 1, i - 1] += coeff / 2
|
|
197
|
+
|
|
198
|
+
return linear_coefficients, quadratic_coefficients
|
|
199
|
+
|
|
117
200
|
|
|
118
201
|
class ConstrainedPolynomialModel(ConstraintsMixIn, PolynomialModel):
|
|
119
202
|
"""
|
|
@@ -87,14 +87,22 @@ class MTZTSPModel(InequalitiesMixin, TSPModel):
|
|
|
87
87
|
1
|
|
88
88
|
>>> model.distance(3, 2)
|
|
89
89
|
3
|
|
90
|
-
>>> solution = np.array([1, 0, 0, 1, 1, 0, 1, 2, 3,
|
|
90
|
+
>>> solution = np.array([1, 0, 0, 1, 1, 0, 1, 2, 3, 2, 2, 2, 5])
|
|
91
91
|
>>> model.cost(solution)
|
|
92
92
|
6
|
|
93
93
|
>>> lhs, rhs = model.constraints
|
|
94
|
+
>>> lhs.shape
|
|
95
|
+
(10, 13)
|
|
96
|
+
>>> model.senses
|
|
97
|
+
['EQ', 'EQ', 'EQ', 'EQ', 'EQ', 'EQ', 'LE', 'LE', 'LE', 'LE']
|
|
98
|
+
>>> rhs.shape
|
|
99
|
+
(10,)
|
|
94
100
|
>>> (lhs@solution - rhs == 0).all()
|
|
95
101
|
True
|
|
102
|
+
>>> model.upper_bound
|
|
103
|
+
array([1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3])
|
|
96
104
|
>>> poly = model.polynomial
|
|
97
|
-
>>> poly.evaluate(solution) + model.
|
|
105
|
+
>>> poly.evaluate(solution) + model.penalty_multiplier * model.offset
|
|
98
106
|
6.0
|
|
99
107
|
>>> infeasible = np.array([0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 4, 2, 5])
|
|
100
108
|
>>> Pl, Pq = -2 * rhs.T@lhs, lhs.T@lhs
|
|
@@ -102,15 +110,15 @@ class MTZTSPModel(InequalitiesMixin, TSPModel):
|
|
|
102
110
|
0.0
|
|
103
111
|
>>> Pl.T@infeasible + infeasible.T@Pq@infeasible + model.offset > 0
|
|
104
112
|
True
|
|
105
|
-
>>> poly.evaluate(infeasible) + model.
|
|
113
|
+
>>> poly.evaluate(infeasible) + model.penalty_multiplier * model.offset > 0
|
|
106
114
|
True
|
|
107
|
-
>>> infeasible =
|
|
108
|
-
>>> poly.evaluate(infeasible) + model.
|
|
115
|
+
>>> infeasible = np.array([1, 1, 0, 1, 0, 0, 0, 1, 2, 2, 2, 0, 3])
|
|
116
|
+
>>> poly.evaluate(infeasible) + model.penalty_multiplier * model.offset > 6
|
|
109
117
|
True
|
|
110
|
-
>>> val1 = poly.evaluate(infeasible) + model.
|
|
118
|
+
>>> val1 = poly.evaluate(infeasible) + model.penalty_multiplier * model.offset
|
|
111
119
|
>>> model.penalty_multiplier *= 2
|
|
112
120
|
>>> poly2 = model.polynomial
|
|
113
|
-
>>> val2 = poly2.evaluate(infeasible) + model.
|
|
121
|
+
>>> val2 = poly2.evaluate(infeasible) + model.penalty_multiplier * model.offset
|
|
114
122
|
>>> val1 < val2
|
|
115
123
|
True
|
|
116
124
|
|
|
@@ -121,53 +129,54 @@ class MTZTSPModel(InequalitiesMixin, TSPModel):
|
|
|
121
129
|
self.variables = variables = []
|
|
122
130
|
coefficients = []
|
|
123
131
|
indices = []
|
|
132
|
+
# choose a depot node
|
|
133
|
+
self.depot = depot = list(self.nodes)[0]
|
|
134
|
+
self.var_ub = var_ub = []
|
|
124
135
|
for (u, v) in D.keys():
|
|
125
136
|
varname = f"x_{u}_{v}"
|
|
126
137
|
varidx = len(variables)
|
|
127
138
|
variables.append(varname)
|
|
139
|
+
var_ub.append(1)
|
|
128
140
|
indices.append((0, varidx+1))
|
|
129
141
|
coefficients.append(D[(u, v)])
|
|
130
142
|
for u in self.nodes:
|
|
131
143
|
variables.append(f"s_{u}")
|
|
144
|
+
var_ub.append(self.N - 1)
|
|
132
145
|
self.coefficients = coefficients
|
|
133
146
|
self.indices = indices
|
|
134
147
|
self.max_order = 2
|
|
148
|
+
# Build the constraints: Two constraints for every node, one for the
|
|
149
|
+
# edge chosen to enter and another for the edge chosen to leave.
|
|
150
|
+
# One constraint for every edge not leading to the depot.
|
|
135
151
|
|
|
136
|
-
@property
|
|
137
|
-
def constraints(self) -> Tuple[np.ndarray, np.ndarray]:
|
|
138
|
-
"""
|
|
139
|
-
Build the constraints: Two constraints for every node, one for the
|
|
140
|
-
edge chosen to enter and another for the edge chosen to leave.
|
|
141
|
-
One constraint for every edge not leading to the depot.
|
|
142
|
-
|
|
143
|
-
Returns: 2-Tuple of numpy arrays, one as lefthand side and the other
|
|
144
|
-
for the righthand side. $Ax = b$
|
|
145
|
-
|
|
146
|
-
"""
|
|
147
|
-
# choose a depot node
|
|
148
|
-
depot = list(self.nodes)[0]
|
|
149
152
|
depot_in = [uv for uv in self.edges if uv[-1] == depot]
|
|
150
153
|
m = 2*self.N+len(self.edges) - len(depot_in)
|
|
151
|
-
|
|
152
|
-
|
|
154
|
+
n = len(self.variables)
|
|
155
|
+
lhs = np.zeros((m, n), dtype=np.int64)
|
|
156
|
+
rhs = np.zeros((m,), dtype=np.int64)
|
|
153
157
|
senses = ["EQ" for i in range(m)]
|
|
158
|
+
N = self.N
|
|
159
|
+
M = int(np.sqrt(N)) # N // 2
|
|
160
|
+
# scaling these coefficients
|
|
154
161
|
for idx, node in enumerate(self.nodes):
|
|
155
|
-
rhs[idx] =
|
|
156
|
-
rhs[self.N + idx] =
|
|
162
|
+
rhs[idx] = M
|
|
163
|
+
rhs[self.N + idx] = M
|
|
157
164
|
for (u, v) in self.edges:
|
|
158
165
|
if v == node:
|
|
159
166
|
varname = f"x_{u}_{v}"
|
|
160
167
|
varidx = self.variables.index(varname)
|
|
161
|
-
lhs[idx, varidx] =
|
|
168
|
+
lhs[idx, varidx] = M
|
|
162
169
|
elif u == node:
|
|
163
170
|
varname = f"x_{u}_{v}"
|
|
164
171
|
varidx = self.variables.index(varname)
|
|
165
|
-
lhs[self.N+idx, varidx] =
|
|
172
|
+
lhs[self.N+idx, varidx] = M
|
|
166
173
|
# build these subtour elimination constraints
|
|
167
174
|
# s_i - s_j + N x_{ij} <= N - 1
|
|
168
175
|
idx = 0
|
|
169
176
|
for (u, v) in self.edges:
|
|
170
177
|
if v != depot:
|
|
178
|
+
varname = f"x_{u}_{v}"
|
|
179
|
+
varidx = self.variables.index(varname)
|
|
171
180
|
senses[2*self.N + idx] = "LE"
|
|
172
181
|
lhs[2*self.N + idx, varidx] = self.N - 1
|
|
173
182
|
vidx = self.variables.index(f"s_{v}")
|
|
@@ -180,8 +189,6 @@ class MTZTSPModel(InequalitiesMixin, TSPModel):
|
|
|
180
189
|
self.senses = senses
|
|
181
190
|
self.lhs = lhs
|
|
182
191
|
self.rhs = rhs
|
|
183
|
-
# let the superclass handle the rest
|
|
184
|
-
return super(MTZTSPModel, self).constraints
|
|
185
192
|
|
|
186
193
|
def cost(self, solution : np.ndarray) -> float:
|
|
187
194
|
"""
|
|
@@ -206,12 +213,9 @@ class MTZTSPModel(InequalitiesMixin, TSPModel):
|
|
|
206
213
|
def upper_bound(self) -> np.ndarray:
|
|
207
214
|
"""
|
|
208
215
|
For all route variables, the domain is {0, 1}. The sequence variables
|
|
209
|
-
can take on values in [0, 1, 2, ..., N].
|
|
216
|
+
can take on values in [0, 1, 2, ..., N-1].
|
|
210
217
|
|
|
211
218
|
"""
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
upper_bound = np.ones((len(self.variables),))
|
|
215
|
-
upper_bound[-self.N:] = self.N
|
|
216
|
-
return upper_bound
|
|
219
|
+
slacks = len([sense for sense in self.senses if sense != "EQ"])
|
|
220
|
+
return np.array(self.var_ub + [self.N for i in range(slacks)])
|
|
217
221
|
|
|
@@ -5,6 +5,7 @@ import datetime
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
from qci_client import QciClient
|
|
7
7
|
from eqc_models.base.base import ModelSolver, EqcModel
|
|
8
|
+
from eqc_models.base.operators import OperatorNotAvailableError
|
|
8
9
|
|
|
9
10
|
log = logging.getLogger(name=__name__)
|
|
10
11
|
|
|
@@ -69,6 +70,8 @@ class QciClientMixin:
|
|
|
69
70
|
|
|
70
71
|
class Dirac1Mixin:
|
|
71
72
|
sampler_type = "dirac-1"
|
|
73
|
+
requires_operator = "qubo"
|
|
74
|
+
max_upper_bound = 1
|
|
72
75
|
job_params_names = ["num_samples", "alpha", "atol"]
|
|
73
76
|
|
|
74
77
|
class QuboSolverMixin:
|
|
@@ -108,12 +111,15 @@ class Dirac3Mixin:
|
|
|
108
111
|
"""
|
|
109
112
|
|
|
110
113
|
sampler_type = "dirac-3"
|
|
114
|
+
requires_operator = "polynomial"
|
|
115
|
+
# this restriction is based on the physical limit of Dirac-3 S1
|
|
116
|
+
max_upper_bound = 10000
|
|
111
117
|
job_params_names = [
|
|
112
118
|
"num_samples",
|
|
113
119
|
"solution_precision",
|
|
114
120
|
"relaxation_schedule",
|
|
115
121
|
"mean_photon_number",
|
|
116
|
-
"
|
|
122
|
+
"quantum_fluctuation_coefficient",
|
|
117
123
|
]
|
|
118
124
|
|
|
119
125
|
def uploadJobFiles(self, client: QciClient, model: EqcModel):
|
|
@@ -262,6 +268,34 @@ class QciClientSolver(QciClientMixin, ModelSolver):
|
|
|
262
268
|
def uploadJobFiles(self, client: QciClient, model: EqcModel):
|
|
263
269
|
raise NotImplementedError("Subclass must override uploadJobFiles")
|
|
264
270
|
|
|
271
|
+
def checkModel(self, model):
|
|
272
|
+
"""
|
|
273
|
+
Parameters
|
|
274
|
+
-------------
|
|
275
|
+
|
|
276
|
+
model: EqcModel
|
|
277
|
+
Instance of a model to validate against the solver requirements
|
|
278
|
+
|
|
279
|
+
This method raises an exception if the model supplied does not meet the requirements for the solver.
|
|
280
|
+
One of the validations is that the model supplies the operator that the solver uses. This is the
|
|
281
|
+
`qubo` operator for Dirac-1 and `polynomial` operator for Dirac-3. If the model does not supply
|
|
282
|
+
the operator, then the solver cannot accept it and the method will fail with an explanation.
|
|
283
|
+
Another validation is for the allowed upper bound of a model. For instance, solvers which only
|
|
284
|
+
handle binary variables can only accept models with variabes having an upper bound of 1.
|
|
285
|
+
|
|
286
|
+
"""
|
|
287
|
+
try:
|
|
288
|
+
hasattr(model, self.requires_operator)
|
|
289
|
+
except OperatorNotAvailableError:
|
|
290
|
+
msg = (f"Class {model.__class__.__name__} does not provide a "
|
|
291
|
+
f"{self.requires_operator} operator")
|
|
292
|
+
raise ValueError(msg)
|
|
293
|
+
if np.max(model.upper_bound) > self.max_upper_bound:
|
|
294
|
+
msg = (f"Instance of {model.__class__.__name__} has greater "
|
|
295
|
+
f"upper bound on variables than {self.__class__.__name__} "
|
|
296
|
+
"supports")
|
|
297
|
+
raise ValueError(msg)
|
|
298
|
+
|
|
265
299
|
def solve(
|
|
266
300
|
self,
|
|
267
301
|
model: EqcModel,
|
|
@@ -306,6 +340,7 @@ class QciClientSolver(QciClientMixin, ModelSolver):
|
|
|
306
340
|
|
|
307
341
|
"""
|
|
308
342
|
|
|
343
|
+
self.checkModel(model)
|
|
309
344
|
job_config = {}
|
|
310
345
|
job_config.update(
|
|
311
346
|
{"num_samples": num_samples, "device_type": self.sampler_type}
|
|
@@ -439,7 +474,7 @@ class Dirac3CloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
439
474
|
num_samples: int = 1,
|
|
440
475
|
wait: bool = True,
|
|
441
476
|
mean_photon_number: float = None,
|
|
442
|
-
|
|
477
|
+
quantum_fluctuation_coefficient: int = None,
|
|
443
478
|
**job_kwargs,
|
|
444
479
|
):
|
|
445
480
|
"""
|
|
@@ -476,7 +511,7 @@ class Dirac3CloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
476
511
|
Modify this value to control the relaxation schedule more
|
|
477
512
|
precisely than the four presets given in schedules 1
|
|
478
513
|
through 4. Allowed values are decimals between 0.1 and 2.
|
|
479
|
-
|
|
514
|
+
quantum_fluctuation_coefficient: int
|
|
480
515
|
an integer value which Sets the amount of loss introduced
|
|
481
516
|
into the system for each loop during the measurement process.
|
|
482
517
|
Modify this value to control the relaxation schedule more
|
|
@@ -494,7 +529,7 @@ class Dirac3CloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
494
529
|
)
|
|
495
530
|
job_kwargs["relaxation_schedule"] = relaxation_schedule
|
|
496
531
|
job_kwargs["mean_photon_number"] = mean_photon_number
|
|
497
|
-
job_kwargs["
|
|
532
|
+
job_kwargs["quantum_fluctuation_coefficient"] = quantum_fluctuation_coefficient
|
|
498
533
|
job_kwargs["solution_precision"] = solution_precision
|
|
499
534
|
job_type = "sample-" + self.job_type
|
|
500
535
|
return super().solve(
|
|
@@ -509,7 +544,7 @@ class Dirac3CloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
509
544
|
|
|
510
545
|
else:
|
|
511
546
|
job_kwargs["mean_photon_number"] = mean_photon_number
|
|
512
|
-
job_kwargs["
|
|
547
|
+
job_kwargs["quantum_fluctuation_coefficient"] = quantum_fluctuation_coefficient
|
|
513
548
|
job_kwargs["relaxation_schedule"] = relaxation_schedule
|
|
514
549
|
job_kwargs["num_levels"] = ub = [val + 1 for val in model.upper_bound.tolist()]
|
|
515
550
|
job_type = "sample-" + self.job_type + "-integer"
|
|
@@ -551,7 +586,7 @@ class Dirac3IntegerCloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
551
586
|
num_samples: int = 1,
|
|
552
587
|
wait: bool = True,
|
|
553
588
|
mean_photon_number: float = None,
|
|
554
|
-
|
|
589
|
+
quantum_fluctuation_coefficient: int = None,
|
|
555
590
|
**job_kwargs,
|
|
556
591
|
):
|
|
557
592
|
"""
|
|
@@ -579,7 +614,7 @@ class Dirac3IntegerCloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
579
614
|
Modify this value to control the relaxation schedule more
|
|
580
615
|
precisely than the four presets given in schedules 1
|
|
581
616
|
through 4. Allowed values are decimals between 0.1 and 2.
|
|
582
|
-
|
|
617
|
+
quantum_fluctuation_coefficient: int
|
|
583
618
|
an integer value which Sets the amount of loss introduced
|
|
584
619
|
into the system for each loop during the measurement process.
|
|
585
620
|
Modify this value to control the relaxation schedule more
|
|
@@ -601,7 +636,7 @@ class Dirac3IntegerCloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
601
636
|
num_samples=num_samples,
|
|
602
637
|
wait=wait,
|
|
603
638
|
mean_photon_number=mean_photon_number,
|
|
604
|
-
|
|
639
|
+
quantum_fluctuation_coefficient=quantum_fluctuation_coefficient,
|
|
605
640
|
relaxation_schedule=relaxation_schedule,
|
|
606
641
|
num_levels=[val + 1 for val in model.upper_bound.tolist()],
|
|
607
642
|
**job_kwargs,
|
|
@@ -638,7 +673,7 @@ class Dirac3ContinuousCloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
638
673
|
num_samples: int = 1,
|
|
639
674
|
wait: bool = True,
|
|
640
675
|
mean_photon_number: float = None,
|
|
641
|
-
|
|
676
|
+
quantum_fluctuation_coefficient: int = None,
|
|
642
677
|
**job_kwargs,
|
|
643
678
|
):
|
|
644
679
|
"""
|
|
@@ -673,7 +708,7 @@ class Dirac3ContinuousCloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
673
708
|
Modify this value to control the relaxation schedule more
|
|
674
709
|
precisely than the four presets given in schedules 1
|
|
675
710
|
through 4. Allowed values are decimals between 0.1 and 2.
|
|
676
|
-
|
|
711
|
+
quantum_fluctuation_coefficient: int
|
|
677
712
|
an integer value which Sets the amount of loss introduced
|
|
678
713
|
into the system for each loop during the measurement process.
|
|
679
714
|
Modify this value to control the relaxation schedule more
|
|
@@ -701,7 +736,7 @@ class Dirac3ContinuousCloudSolver(Dirac3Mixin, QciClientSolver):
|
|
|
701
736
|
sum_constraint=sum_constraint,
|
|
702
737
|
relaxation_schedule=relaxation_schedule,
|
|
703
738
|
mean_photon_number=mean_photon_number,
|
|
704
|
-
|
|
739
|
+
quantum_fluctuation_coefficient=quantum_fluctuation_coefficient,
|
|
705
740
|
**job_kwargs,
|
|
706
741
|
)
|
|
707
742
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
eqc_models-0.9.9.data/platlib/compile_extensions.py,sha256=GNbNr9Pao2NwFUr29qEGrYSHvIlagnPcUqo3pgB5Trk,660
|
|
2
|
+
eqc_models-0.9.9.data/platlib/eqc_models/__init__.py,sha256=njh-tvfgnAIVBGw9FXFv6XQOAgwrnBG23dU9dipa1Jg,585
|
|
3
|
+
eqc_models-0.9.9.data/platlib/eqc_models/decoding.py,sha256=G3JgbIFzvZ3DIKW0kZ1JeTMIZmrc8hy9kzdbX2Xv5Og,637
|
|
4
|
+
eqc_models-0.9.9.data/platlib/eqc_models/algorithms/__init__.py,sha256=lzQoMMSs2QTqp5suEYNvcQaSEN16d0LwIsZ1mRstumU,135
|
|
5
|
+
eqc_models-0.9.9.data/platlib/eqc_models/algorithms/base.py,sha256=qfQQTwuVyewn7Qpg1_SVoD_7TsdA8vdwSKGqOeZSmNI,204
|
|
6
|
+
eqc_models-0.9.9.data/platlib/eqc_models/algorithms/penaltymultiplier.py,sha256=gV48irx3q9yvMsCRqv2fa8DGQEOUkgVNGbZdNzI-3Tc,7057
|
|
7
|
+
eqc_models-0.9.9.data/platlib/eqc_models/allocation/__init__.py,sha256=op_udrapTlWrakTuQId3M0ggo-Y1w4nGJLPcYKOQ-8I,239
|
|
8
|
+
eqc_models-0.9.9.data/platlib/eqc_models/allocation/allocation.py,sha256=PAQn4M75Zegeoy0i6r3hycWs4TKeRglHk05TvwZOoLk,15506
|
|
9
|
+
eqc_models-0.9.9.data/platlib/eqc_models/allocation/portbase.py,sha256=BTnYYduHydPbrE2yQr_Sgv3XJACH_GpIJstuMrfGqCU,3269
|
|
10
|
+
eqc_models-0.9.9.data/platlib/eqc_models/allocation/portmomentum.py,sha256=oMod63rNDC-01dLZjmhUb24SN3_GVgfc6CItgQL_obI,3756
|
|
11
|
+
eqc_models-0.9.9.data/platlib/eqc_models/assignment/__init__.py,sha256=CX_QYl8P1meajV8gcVs6hm07VhoLVe8uu436t7-1XQo,86
|
|
12
|
+
eqc_models-0.9.9.data/platlib/eqc_models/assignment/qap.py,sha256=WMiQQmTORsgi2w7kbmMA1xo-93dESLECWqYTF-zkmTs,2963
|
|
13
|
+
eqc_models-0.9.9.data/platlib/eqc_models/assignment/setpartition.py,sha256=-DJjPgsSMslEjfo3iDdXbKHQ9Lfc3cHlNc-9DtkJnW0,6202
|
|
14
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/__init__.py,sha256=RwZguuucmsuOSVqfPLBqj-wzinBOzcgO-2ifFU-DCqg,2885
|
|
15
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/base.py,sha256=kpnOb1dw0aaQyassIYKNlS6rIH1fNvZMI-NKPosAEMk,4856
|
|
16
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/constraints.py,sha256=KMPyCdt_8GMWLnVEdpzw1T1WqXm2f7Lh629ClUH7XDY,8271
|
|
17
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/operators.py,sha256=9nCeN6fRP-_YBfs-Gm57D-O_376qcOQiqGDuVlSlf00,7392
|
|
18
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/polyeval.c,sha256=pgQX0_7JsrLKEhFrjBN8wJb0hTGRh3BUL90NygNHgFk,438291
|
|
19
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/polyeval.cpython-310-darwin.so,sha256=QT8AOraG_it1u1LzIqeU4xuYtdmc7XyUcqIb4OqnutM,101136
|
|
20
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/polyeval.pyx,sha256=76Bf99Jt1_rLh5byrZxAjavE2F4_yCysirViqOBFIXw,2547
|
|
21
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/polynomial.py,sha256=dlWqL-PgSzV1UX-1S-MDwEL4sp3vs3h0vdRkv4JYfLo,12981
|
|
22
|
+
eqc_models-0.9.9.data/platlib/eqc_models/base/quadratic.py,sha256=BHZKniUvSq30pZgzguVasdO39BCEYue_wi5AIklPGS8,8062
|
|
23
|
+
eqc_models-0.9.9.data/platlib/eqc_models/graph/__init__.py,sha256=Cpo4jb630U57J0lS_iZddE_W3v9N4ijUb7xZRIYuguo,95
|
|
24
|
+
eqc_models-0.9.9.data/platlib/eqc_models/graph/base.py,sha256=nYZCSCzshnuJKuc25M2YXcOqOhIa1-0R9rRbtIXDr84,1888
|
|
25
|
+
eqc_models-0.9.9.data/platlib/eqc_models/graph/hypergraph.py,sha256=ABvutT0NOdIEpUF4TjUzboE4Y_J5iUZyj6-AzKr4R28,13268
|
|
26
|
+
eqc_models-0.9.9.data/platlib/eqc_models/graph/maxcut.py,sha256=o8xVsAwTa9jcpmsIoCQ5z7HSstVdraT8TENomdT519o,4132
|
|
27
|
+
eqc_models-0.9.9.data/platlib/eqc_models/graph/maxkcut.py,sha256=OFZwmC3wWpIJWVHOb9wkUeka0g0bOHrwf-mx0VZvt58,5807
|
|
28
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/__init__.py,sha256=CLfraacr0FrD5ynxlNB6cyNy0lpbavcQT45TvkDrNvY,369
|
|
29
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/classifierbase.py,sha256=1yXufiUGpaiBjI2evMiwfYn-Zr-SnWwCnvtREqprtJw,2184
|
|
30
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/classifierqboost.py,sha256=REfAVIWDTDbshObBGoH-9QdOHVnt-OCGjh-lRNwI2HU,12350
|
|
31
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/classifierqsvm.py,sha256=b6TdwlghR84UoQpfUThwMwNF_wmkABbCqOn6T1uY2dA,6636
|
|
32
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/clustering.py,sha256=yhh6jlgwZiQVn9h2pnYBlzVTCocK7rzsEurSQxCn5FQ,9486
|
|
33
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/clusteringbase.py,sha256=AvQbt6jeocBAGCuAmXHKyr3wLWqYUtBDq9PbsEOSlSc,2632
|
|
34
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/decomposition.py,sha256=Nsnq0GmINpbGOszndgCHXqKdECNpiNiampBrHPU_Gjg,8943
|
|
35
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/forecast.py,sha256=fFcBxQK9ZryfEuyvlr9HXicHoZRzLFybimYYttzhI9E,7403
|
|
36
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/forecastbase.py,sha256=s-6nUMvtYqG07r7MmmkFVj8_QqgeGkD-HVoEEDTE2bk,3654
|
|
37
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/regressor.py,sha256=LA1woXCnefG0wfoOxilX1kszgCUmfNcbQgs_WZ4Ai0o,5683
|
|
38
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/regressorbase.py,sha256=H5E8-8pUji1oH5JRdS37LJQoHuKt2JU8eXCZp-ZaEM4,2109
|
|
39
|
+
eqc_models-0.9.9.data/platlib/eqc_models/ml/reservoir.py,sha256=cPRvpCaWLYTBkui35jCssHcOPQgSQZallrG6Ac9djVI,2827
|
|
40
|
+
eqc_models-0.9.9.data/platlib/eqc_models/sequence/__init__.py,sha256=VXlYufO3GYFsM00oii9Cite2WsQEF8XTwRcjLPH_Zlg,92
|
|
41
|
+
eqc_models-0.9.9.data/platlib/eqc_models/sequence/tsp.py,sha256=YM641FTyK5NkgRGxHrU1QmMkEU0gf77nEmIElTqa6Qw,7680
|
|
42
|
+
eqc_models-0.9.9.data/platlib/eqc_models/solvers/__init__.py,sha256=hTjJI4F0FNDgQlK_oRHJxLIkg6of3I1-nEqU_3RL4Gk,542
|
|
43
|
+
eqc_models-0.9.9.data/platlib/eqc_models/solvers/qciclient.py,sha256=Vnfqa1N6JSzigb-mbqXj6g0r-1wOkeYzmEmctId1VCo,26975
|
|
44
|
+
eqc_models-0.9.9.data/platlib/eqc_models/utilities/__init__.py,sha256=SI2U7JKmPWSiq-F1WcSyfd7l9V6nbOZv_p8quMAZaT0,340
|
|
45
|
+
eqc_models-0.9.9.data/platlib/eqc_models/utilities/fileio.py,sha256=alWPTfjGFx6Iio9HZAAWtYcLmZsBBifg6S6_YbFMQhk,1088
|
|
46
|
+
eqc_models-0.9.9.data/platlib/eqc_models/utilities/polynomial.py,sha256=WoEBUAyiYBjwPvFWEjsynfmiBsbNqveKDZjXqiNQ6dk,4283
|
|
47
|
+
eqc_models-0.9.9.data/platlib/eqc_models/utilities/qplib.py,sha256=Do-MjmCFdI5HyDOAjfoz4_5lugySLMBlMAWDLUWx2OA,15796
|
|
48
|
+
eqc_models-0.9.9.dist-info/LICENSE.txt,sha256=8eh0oqsNNVR1Jk-13gkqRRSo2axtUU5kp2KzH4f9u3U,11354
|
|
49
|
+
eqc_models-0.9.9.dist-info/METADATA,sha256=5wKP-BI_1v8byksYXgQhrgD8KeB6we9P4SC6ereXb_8,7071
|
|
50
|
+
eqc_models-0.9.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
51
|
+
eqc_models-0.9.9.dist-info/top_level.txt,sha256=9ZfFeKNEvkRlKWoUnfcZ9TzmTdgdsuPEnTPy11Hqf4Q,30
|
|
52
|
+
eqc_models-0.9.9.dist-info/RECORD,,
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
eqc_models-0.9.8.data/platlib/compile_extensions.py,sha256=GNbNr9Pao2NwFUr29qEGrYSHvIlagnPcUqo3pgB5Trk,660
|
|
2
|
-
eqc_models-0.9.8.data/platlib/eqc_models/__init__.py,sha256=njh-tvfgnAIVBGw9FXFv6XQOAgwrnBG23dU9dipa1Jg,585
|
|
3
|
-
eqc_models-0.9.8.data/platlib/eqc_models/decoding.py,sha256=G3JgbIFzvZ3DIKW0kZ1JeTMIZmrc8hy9kzdbX2Xv5Og,637
|
|
4
|
-
eqc_models-0.9.8.data/platlib/eqc_models/algorithms/__init__.py,sha256=lzQoMMSs2QTqp5suEYNvcQaSEN16d0LwIsZ1mRstumU,135
|
|
5
|
-
eqc_models-0.9.8.data/platlib/eqc_models/algorithms/base.py,sha256=qfQQTwuVyewn7Qpg1_SVoD_7TsdA8vdwSKGqOeZSmNI,204
|
|
6
|
-
eqc_models-0.9.8.data/platlib/eqc_models/algorithms/penaltymultiplier.py,sha256=gV48irx3q9yvMsCRqv2fa8DGQEOUkgVNGbZdNzI-3Tc,7057
|
|
7
|
-
eqc_models-0.9.8.data/platlib/eqc_models/allocation/__init__.py,sha256=op_udrapTlWrakTuQId3M0ggo-Y1w4nGJLPcYKOQ-8I,239
|
|
8
|
-
eqc_models-0.9.8.data/platlib/eqc_models/allocation/allocation.py,sha256=PAQn4M75Zegeoy0i6r3hycWs4TKeRglHk05TvwZOoLk,15506
|
|
9
|
-
eqc_models-0.9.8.data/platlib/eqc_models/allocation/portbase.py,sha256=BTnYYduHydPbrE2yQr_Sgv3XJACH_GpIJstuMrfGqCU,3269
|
|
10
|
-
eqc_models-0.9.8.data/platlib/eqc_models/allocation/portmomentum.py,sha256=oMod63rNDC-01dLZjmhUb24SN3_GVgfc6CItgQL_obI,3756
|
|
11
|
-
eqc_models-0.9.8.data/platlib/eqc_models/assignment/__init__.py,sha256=CX_QYl8P1meajV8gcVs6hm07VhoLVe8uu436t7-1XQo,86
|
|
12
|
-
eqc_models-0.9.8.data/platlib/eqc_models/assignment/qap.py,sha256=WMiQQmTORsgi2w7kbmMA1xo-93dESLECWqYTF-zkmTs,2963
|
|
13
|
-
eqc_models-0.9.8.data/platlib/eqc_models/assignment/setpartition.py,sha256=pP61EFr-Vxk33ucMlyearjIqy8ktfy4hx1tL7JWrJeg,6792
|
|
14
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/__init__.py,sha256=RwZguuucmsuOSVqfPLBqj-wzinBOzcgO-2ifFU-DCqg,2885
|
|
15
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/base.py,sha256=kpnOb1dw0aaQyassIYKNlS6rIH1fNvZMI-NKPosAEMk,4856
|
|
16
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/constraints.py,sha256=KMPyCdt_8GMWLnVEdpzw1T1WqXm2f7Lh629ClUH7XDY,8271
|
|
17
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/operators.py,sha256=9nCeN6fRP-_YBfs-Gm57D-O_376qcOQiqGDuVlSlf00,7392
|
|
18
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/polyeval.c,sha256=ZcQAIL1Zfruop69C4HLjDJAq4TZp4OFkh83Kp8Bw5jk,438291
|
|
19
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/polyeval.cpython-310-darwin.so,sha256=M9cO90peu6w_cFqr5UYqPetgEu_huZH1H4UPpCidJE8,101136
|
|
20
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/polyeval.pyx,sha256=76Bf99Jt1_rLh5byrZxAjavE2F4_yCysirViqOBFIXw,2547
|
|
21
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/polynomial.py,sha256=gfEhkXAgFeRuml4Ufh3tDpgRvO9TwyKseqxHXjsxAGg,9246
|
|
22
|
-
eqc_models-0.9.8.data/platlib/eqc_models/base/quadratic.py,sha256=BHZKniUvSq30pZgzguVasdO39BCEYue_wi5AIklPGS8,8062
|
|
23
|
-
eqc_models-0.9.8.data/platlib/eqc_models/graph/__init__.py,sha256=Cpo4jb630U57J0lS_iZddE_W3v9N4ijUb7xZRIYuguo,95
|
|
24
|
-
eqc_models-0.9.8.data/platlib/eqc_models/graph/base.py,sha256=nYZCSCzshnuJKuc25M2YXcOqOhIa1-0R9rRbtIXDr84,1888
|
|
25
|
-
eqc_models-0.9.8.data/platlib/eqc_models/graph/hypergraph.py,sha256=ABvutT0NOdIEpUF4TjUzboE4Y_J5iUZyj6-AzKr4R28,13268
|
|
26
|
-
eqc_models-0.9.8.data/platlib/eqc_models/graph/maxcut.py,sha256=o8xVsAwTa9jcpmsIoCQ5z7HSstVdraT8TENomdT519o,4132
|
|
27
|
-
eqc_models-0.9.8.data/platlib/eqc_models/graph/maxkcut.py,sha256=OFZwmC3wWpIJWVHOb9wkUeka0g0bOHrwf-mx0VZvt58,5807
|
|
28
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/__init__.py,sha256=CLfraacr0FrD5ynxlNB6cyNy0lpbavcQT45TvkDrNvY,369
|
|
29
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/classifierbase.py,sha256=1yXufiUGpaiBjI2evMiwfYn-Zr-SnWwCnvtREqprtJw,2184
|
|
30
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/classifierqboost.py,sha256=REfAVIWDTDbshObBGoH-9QdOHVnt-OCGjh-lRNwI2HU,12350
|
|
31
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/classifierqsvm.py,sha256=b6TdwlghR84UoQpfUThwMwNF_wmkABbCqOn6T1uY2dA,6636
|
|
32
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/clustering.py,sha256=yhh6jlgwZiQVn9h2pnYBlzVTCocK7rzsEurSQxCn5FQ,9486
|
|
33
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/clusteringbase.py,sha256=AvQbt6jeocBAGCuAmXHKyr3wLWqYUtBDq9PbsEOSlSc,2632
|
|
34
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/decomposition.py,sha256=Nsnq0GmINpbGOszndgCHXqKdECNpiNiampBrHPU_Gjg,8943
|
|
35
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/forecast.py,sha256=fFcBxQK9ZryfEuyvlr9HXicHoZRzLFybimYYttzhI9E,7403
|
|
36
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/forecastbase.py,sha256=s-6nUMvtYqG07r7MmmkFVj8_QqgeGkD-HVoEEDTE2bk,3654
|
|
37
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/regressor.py,sha256=LA1woXCnefG0wfoOxilX1kszgCUmfNcbQgs_WZ4Ai0o,5683
|
|
38
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/regressorbase.py,sha256=H5E8-8pUji1oH5JRdS37LJQoHuKt2JU8eXCZp-ZaEM4,2109
|
|
39
|
-
eqc_models-0.9.8.data/platlib/eqc_models/ml/reservoir.py,sha256=cPRvpCaWLYTBkui35jCssHcOPQgSQZallrG6Ac9djVI,2827
|
|
40
|
-
eqc_models-0.9.8.data/platlib/eqc_models/sequence/__init__.py,sha256=VXlYufO3GYFsM00oii9Cite2WsQEF8XTwRcjLPH_Zlg,92
|
|
41
|
-
eqc_models-0.9.8.data/platlib/eqc_models/sequence/tsp.py,sha256=O3_gcPM-5XDvz9TZ4gJxZBDuSwq_agDTTf-7fCYx2_g,7533
|
|
42
|
-
eqc_models-0.9.8.data/platlib/eqc_models/solvers/__init__.py,sha256=hTjJI4F0FNDgQlK_oRHJxLIkg6of3I1-nEqU_3RL4Gk,542
|
|
43
|
-
eqc_models-0.9.8.data/platlib/eqc_models/solvers/qciclient.py,sha256=BElwvOgyequLIwjHhG-k-pWmPE5Ci1Gl2HJMszVIdMk,25154
|
|
44
|
-
eqc_models-0.9.8.data/platlib/eqc_models/utilities/__init__.py,sha256=SI2U7JKmPWSiq-F1WcSyfd7l9V6nbOZv_p8quMAZaT0,340
|
|
45
|
-
eqc_models-0.9.8.data/platlib/eqc_models/utilities/fileio.py,sha256=alWPTfjGFx6Iio9HZAAWtYcLmZsBBifg6S6_YbFMQhk,1088
|
|
46
|
-
eqc_models-0.9.8.data/platlib/eqc_models/utilities/polynomial.py,sha256=WoEBUAyiYBjwPvFWEjsynfmiBsbNqveKDZjXqiNQ6dk,4283
|
|
47
|
-
eqc_models-0.9.8.data/platlib/eqc_models/utilities/qplib.py,sha256=Do-MjmCFdI5HyDOAjfoz4_5lugySLMBlMAWDLUWx2OA,15796
|
|
48
|
-
eqc_models-0.9.8.dist-info/LICENSE.txt,sha256=8eh0oqsNNVR1Jk-13gkqRRSo2axtUU5kp2KzH4f9u3U,11354
|
|
49
|
-
eqc_models-0.9.8.dist-info/METADATA,sha256=q8NX9Ovrbqltb8VEQxJu_MFT8gLNfd8-2Kn_UxE9bss,7071
|
|
50
|
-
eqc_models-0.9.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
51
|
-
eqc_models-0.9.8.dist-info/top_level.txt,sha256=9ZfFeKNEvkRlKWoUnfcZ9TzmTdgdsuPEnTPy11Hqf4Q,30
|
|
52
|
-
eqc_models-0.9.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/algorithms/penaltymultiplier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{eqc_models-0.9.8.data → eqc_models-0.9.9.data}/platlib/eqc_models/allocation/portmomentum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|