ommx_openjij_adapter

目次

ommx_openjij_adapter#

Submodules#

Exceptions#

OpenJijPreparationError

Raised when explicit OpenJij preparation cannot produce an input.

Classes#

OMMXOpenJijSAAdapter

Sample an applicable Binary polynomial input with OpenJij simulated annealing.

OpenJijPreparation

A separate Adapter input together with source-state reevaluation.

OpenJijPreparationConfig

User-selected settings for one OpenJij preparation operation.

OpenJijPreparationFailure

One failure discovered while materializing an accepted source.

OpenJijPreparationReport

The Config used and four outcomes of one preparation attempt.

OpenJijPreparationSourceCheck

Structural membership evidence for a preparation source.

OpenJijPreparationStep

One OpenJij-specific operation recorded for preparation auditing.

Functions#

decode_to_samples(→ ommx.Samples)

Convert openjij.Response to Samples

Package Contents#

exception OpenJijPreparationError(report: OpenJijPreparationReport)#

Raised when explicit OpenJij preparation cannot produce an input.

report: OpenJijPreparationReport#
class OMMXOpenJijSAAdapter(ommx_instance: Instance, *, beta_min: float | None = None, beta_max: float | None = None, num_sweeps: int | None = None, num_reads: int | None = None, schedule: list | None = None, initial_state: list | dict | None = None, updater: str | None = None, sparse: bool | None = None, reinitialize_state: bool | None = None, seed: int | None = None)#

Sample an applicable Binary polynomial input with OpenJij simulated annealing.

The direct Adapter input must use only Binary decision variables, have no active regular or special constraints, and be a minimization problem. Arbitrary polynomial objective degree is supported through OpenJij's QUBO and Binary-HUBO paths.

Integer encoding, sense reversal, slack introduction, and finite constraint penalties are explicit preparation operations, not part of the declared input class. Pass OpenJijPreparation.input back to this Adapter as a separate ommx.Instance value.

classmethod check_applicability(ommx_instance: Instance) AdapterApplicabilityReport#

Inspect applicability without mutating or preparing ommx_instance.

Adapter-specific preconditions run only after at least one complete input-class clause contains the instance. The hook receives an isolated copy so it cannot mutate the caller's instance. Any explicitly transformed value is a different input and must be checked separately.

classmethod check_preparation(ommx_instance: Instance, *, config: ommx_openjij_adapter._preparation.OpenJijPreparationConfig | None = None) ommx_openjij_adapter._preparation.OpenJijPreparationReport#

Dry-run the complete explicit preparation without mutating the input.

This is intentionally separate from check_applicability(), which checks only the Binary, unconstrained minimization Adapter input. The 53-bit log-encoding limit describes availability of that preparation operation, not an OpenJij input-class condition and not an ommx.v2.Feature. A model proven infeasible while preparing integer slack raises InfeasibleDetected. Approximate integer slack is disabled unless the supplied OpenJijPreparationConfig enables it.

decode(data: openjij.Response) Solution#
decode_to_samples(data: openjij.Response) Samples#

Convert openjij.Response to Samples

There is a static method decode_to_samples() that does the same thing.

decode_to_sampleset(data: openjij.Response) SampleSet#
classmethod prepare(ommx_instance: Instance, *, config: ommx_openjij_adapter._preparation.OpenJijPreparationConfig | None = None) ommx_openjij_adapter._preparation.OpenJijPreparation#

Produce a separate Adapter input and an auditable preparation report.

Raises InfeasibleDetected when variable bounds prove an inequality infeasible. Other preparation failures raise OpenJijPreparationError. Approximate integer slack is used only when the supplied OpenJijPreparationConfig enables it.

classmethod require_applicable(ommx_instance: Instance) AdapterApplicabilityReport#

Return the report or raise AdapterNotApplicableError.

classmethod sample(ommx_instance: Instance, *, beta_min: float | None = None, beta_max: float | None = None, num_sweeps: int | None = None, num_reads: int | None = None, schedule: list | None = None, initial_state: list | dict | None = None, updater: str | None = None, sparse: bool | None = None, reinitialize_state: bool | None = None, seed: int | None = None, diagnostics: DiagnosticsSink | None = None) SampleSet#

Sample the exact applicable ommx_instance passed to the Adapter.

classmethod solve(ommx_instance: Instance, *, beta_min: float | None = None, beta_max: float | None = None, num_sweeps: int | None = None, num_reads: int | None = None, schedule: list | None = None, initial_state: list | dict | None = None, updater: str | None = None, sparse: bool | None = None, reinitialize_state: bool | None = None, seed: int | None = None, diagnostics: DiagnosticsSink | None = None) Solution#

Return the best feasible sample from sample().

INPUT_CLASS: ClassVar[InstanceClass | None]#
MAX_OPENJIJ_VARIABLE_ID: ClassVar[int] = 9223372036854775807#
beta_max: float | None = None#

maximum value of inverse temperature

beta_min: float | None = None#

minimal value of inverse temperature

initial_state: list | dict | None = None#

initial state (parameter only used if problem is QUBO)

num_reads: int | None = None#

number of reads

num_sweeps: int | None = None#

number of sweeps

ommx_instance: Instance#

Isolated copy of the exact Adapter input used to evaluate returned samples.

reinitialize_state: bool | None = None#

if true reinitialize state for each run (parameter only used if problem is QUBO)

property sampler_input: dict[tuple[int, Ellipsis], float]#
schedule: list | None = None#

list of inverse temperature (parameter only used if problem is QUBO)

seed: int | None = None#

seed for Monte Carlo algorithm

property solver_input: dict[tuple[int, Ellipsis], float]#
sparse: bool | None = None#

use sparse matrix or not (parameter only used if problem is QUBO)

updater: str | None = None#

updater algorithm

class OpenJijPreparation#

A separate Adapter input together with source-state reevaluation.

Values are created by OMMXOpenJijSAAdapter.prepare(); callers cannot pair an arbitrary input with unrelated preparation evidence.

evaluate_source(sample_set: SampleSet) SampleSet#

Reevaluate input-side sample states against the source Instance.

sample_set must have been evaluated against this preparation's input, which populates irrelevant and dependent source variables.

property input: Instance#

Return an isolated copy of the Binary, unconstrained minimization input.

report: OpenJijPreparationReport#
class OpenJijPreparationConfig#

User-selected settings for one OpenJij preparation operation.

The two penalty modes are mutually exclusive. Every configured penalty weight must be finite and positive, every per-constraint key must be a valid unsigned 64-bit constraint ID, the integer slack range must fit a positive unsigned 64-bit integer, and the per-constraint mapping is snapshotted so that reports remain auditable after construction.

allow_approximate_integer_slack: bool = False#
inequality_integer_slack_max_range: int = 32#
penalty_weights: Mapping[int, float] | None = None#
uniform_penalty_weight: float | None = None#
class OpenJijPreparationFailure#

One failure discovered while materializing an accepted source.

constraint_refs: frozenset[ConstraintRef]#
description: str#
expected: PreparationDiagnosticValue = None#
observed: PreparationDiagnosticValue = None#
operation: str#
reason: str#
variable_ids: frozenset[int]#
class OpenJijPreparationReport#

The Config used and four outcomes of one preparation attempt.

config is the immutable settings audit. The outcome fields separately record the source check, applied steps, materialization failures, and produced-input applicability.

config: OpenJijPreparationConfig#
input_applicability: AdapterApplicabilityReport | None = None#
property is_successful: bool#
preparation_failures: tuple[OpenJijPreparationFailure, Ellipsis] = ()#
source_check: OpenJijPreparationSourceCheck#
steps: tuple[OpenJijPreparationStep, Ellipsis]#
class OpenJijPreparationSourceCheck#

Structural membership evidence for a preparation source.

property conditions_hold: bool#
source_membership: InstanceClassMembershipReport#
class OpenJijPreparationStep#

One OpenJij-specific operation recorded for preparation auditing.

This record is not a composed mathematical guarantee. The common guarantee and policy contracts are tracked separately in OMMX issue #1111.

constraint_refs: frozenset[ConstraintRef]#
description: str#
operation: str#
variable_ids: frozenset[int]#
decode_to_samples(response: openjij.Response) Samples#

Convert openjij.Response to Samples