ommx-openjij-adapter 2.0.0rc3__tar.gz → 2.0.1__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommx_openjij_adapter
3
- Version: 2.0.0rc3
3
+ Version: 2.0.1
4
4
  Summary: OMMX Adapter for OpenJij.
5
5
  Author-email: "Jij Inc." <info@j-ij.com>
6
6
  Project-URL: Repository, https://github.com/Jij-Inc/ommx
@@ -1,6 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
- from ommx.v1 import Instance, State, Samples, SampleSet, DecisionVariable, Constraint
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
- def __init__(
99
- self,
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
- self.ommx_instance = copy.deepcopy(ommx_instance)
117
- self.beta_min = beta_min
118
- self.beta_max = beta_max
119
- self.num_sweeps = num_sweeps
120
- self.num_reads = num_reads
121
- self.schedule = schedule
122
- self.initial_state = initial_state
123
- self.updater = updater
124
- self.sparse = sparse
125
- self.reinitialize_state = reinitialize_state
126
- self.seed = seed
127
- self.uniform_penalty_weight = uniform_penalty_weight
128
- self.penalty_weights = penalty_weights
129
- self.inequality_integer_slack_max_range = inequality_integer_slack_max_range
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommx_openjij_adapter
3
- Version: 2.0.0rc3
3
+ Version: 2.0.1
4
4
  Summary: OMMX Adapter for OpenJij.
5
5
  Author-email: "Jij Inc." <info@j-ij.com>
6
6
  Project-URL: Repository, https://github.com/Jij-Inc/ommx
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ommx_openjij_adapter"
7
- version = "2.0.0rc3"
7
+ version = "2.0.1"
8
8
 
9
9
  description = "OMMX Adapter for OpenJij."
10
10
  authors = [{ name = "Jij Inc.", email = "info@j-ij.com" }]