ommx-openjij-adapter 2.0.0rc2__tar.gz → 2.0.0rc4__tar.gz
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.
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/PKG-INFO +1 -1
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/ommx_openjij_adapter/__init__.py +71 -18
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/ommx_openjij_adapter.egg-info/PKG-INFO +1 -1
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/pyproject.toml +1 -1
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/README.md +0 -0
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/ommx_openjij_adapter.egg-info/SOURCES.txt +0 -0
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/ommx_openjij_adapter.egg-info/dependency_links.txt +0 -0
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/ommx_openjij_adapter.egg-info/requires.txt +0 -0
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/ommx_openjij_adapter.egg-info/top_level.txt +0 -0
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/setup.cfg +0 -0
- {ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/tests/test_sample.py +0 -0
{ommx_openjij_adapter-2.0.0rc2 → ommx_openjij_adapter-2.0.0rc4}/ommx_openjij_adapter/__init__.py
RENAMED
@@ -1,6 +1,14 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
from ommx.v1 import
|
3
|
+
from ommx.v1 import (
|
4
|
+
Instance,
|
5
|
+
State,
|
6
|
+
Samples,
|
7
|
+
SampleSet,
|
8
|
+
Solution,
|
9
|
+
DecisionVariable,
|
10
|
+
Constraint,
|
11
|
+
)
|
4
12
|
from ommx.adapter import SamplerAdapter
|
5
13
|
import openjij as oj
|
6
14
|
from typing_extensions import deprecated
|
@@ -57,6 +65,39 @@ class OMMXOpenJijSAAdapter(SamplerAdapter):
|
|
57
65
|
|
58
66
|
_instance_prepared: bool = False
|
59
67
|
|
68
|
+
def __init__(
|
69
|
+
self,
|
70
|
+
ommx_instance: Instance,
|
71
|
+
*,
|
72
|
+
beta_min: float | None = None,
|
73
|
+
beta_max: float | None = None,
|
74
|
+
num_sweeps: int | None = None,
|
75
|
+
num_reads: int | None = None,
|
76
|
+
schedule: list | None = None,
|
77
|
+
initial_state: list | dict | None = None,
|
78
|
+
updater: str | None = None,
|
79
|
+
sparse: bool | None = None,
|
80
|
+
reinitialize_state: bool | None = None,
|
81
|
+
seed: int | None = None,
|
82
|
+
uniform_penalty_weight: Optional[float] = None,
|
83
|
+
penalty_weights: dict[int, float] = {},
|
84
|
+
inequality_integer_slack_max_range: int = 32,
|
85
|
+
):
|
86
|
+
self.ommx_instance = copy.deepcopy(ommx_instance)
|
87
|
+
self.beta_min = beta_min
|
88
|
+
self.beta_max = beta_max
|
89
|
+
self.num_sweeps = num_sweeps
|
90
|
+
self.num_reads = num_reads
|
91
|
+
self.schedule = schedule
|
92
|
+
self.initial_state = initial_state
|
93
|
+
self.updater = updater
|
94
|
+
self.sparse = sparse
|
95
|
+
self.reinitialize_state = reinitialize_state
|
96
|
+
self.seed = seed
|
97
|
+
self.uniform_penalty_weight = uniform_penalty_weight
|
98
|
+
self.penalty_weights = penalty_weights
|
99
|
+
self.inequality_integer_slack_max_range = inequality_integer_slack_max_range
|
100
|
+
|
60
101
|
@classmethod
|
61
102
|
def sample(
|
62
103
|
cls,
|
@@ -95,8 +136,9 @@ class OMMXOpenJijSAAdapter(SamplerAdapter):
|
|
95
136
|
response = sampler._sample()
|
96
137
|
return sampler.decode_to_sampleset(response)
|
97
138
|
|
98
|
-
|
99
|
-
|
139
|
+
@classmethod
|
140
|
+
def solve(
|
141
|
+
cls,
|
100
142
|
ommx_instance: Instance,
|
101
143
|
*,
|
102
144
|
beta_min: float | None = None,
|
@@ -112,21 +154,24 @@ class OMMXOpenJijSAAdapter(SamplerAdapter):
|
|
112
154
|
uniform_penalty_weight: Optional[float] = None,
|
113
155
|
penalty_weights: dict[int, float] = {},
|
114
156
|
inequality_integer_slack_max_range: int = 32,
|
115
|
-
):
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
157
|
+
) -> Solution:
|
158
|
+
sample_set = cls.sample(
|
159
|
+
ommx_instance,
|
160
|
+
beta_min=beta_min,
|
161
|
+
beta_max=beta_max,
|
162
|
+
num_sweeps=num_sweeps,
|
163
|
+
num_reads=num_reads,
|
164
|
+
schedule=schedule,
|
165
|
+
initial_state=initial_state,
|
166
|
+
updater=updater,
|
167
|
+
sparse=sparse,
|
168
|
+
reinitialize_state=reinitialize_state,
|
169
|
+
seed=seed,
|
170
|
+
uniform_penalty_weight=uniform_penalty_weight,
|
171
|
+
penalty_weights=penalty_weights,
|
172
|
+
inequality_integer_slack_max_range=inequality_integer_slack_max_range,
|
173
|
+
)
|
174
|
+
return sample_set.best_feasible
|
130
175
|
|
131
176
|
def decode_to_sampleset(self, data: oj.Response) -> SampleSet:
|
132
177
|
samples = decode_to_samples(data)
|
@@ -148,6 +193,14 @@ class OMMXOpenJijSAAdapter(SamplerAdapter):
|
|
148
193
|
else:
|
149
194
|
return self._qubo
|
150
195
|
|
196
|
+
@property
|
197
|
+
def solver_input(self) -> dict[tuple[int, ...], float]:
|
198
|
+
return self.sampler_input
|
199
|
+
|
200
|
+
def decode(self, data: oj.Response) -> Solution:
|
201
|
+
sample_set = self.decode_to_sampleset(data)
|
202
|
+
return sample_set.best_feasible
|
203
|
+
|
151
204
|
def _sample(self) -> oj.Response:
|
152
205
|
sampler = oj.SASampler()
|
153
206
|
input = self.sampler_input
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|