OMMX adapter for Fixstars Amplify
This package provides an adapter for the Fixstars Amplify SDK from/to OMMX.
How to install
The ommx-fixstars-amplify-adapter can be installed from PyPI as follows:
pip install ommx-fixstars-amplify-adapter
Solve problems formulated in OMMX with Fixstars Amplify
The ommx-fixstars-amplify-adapter allows problems formulated in OMMX to be solved in Fixstars Amplify.
sequenceDiagram
participant U as User
participant A as Adapter
participant P as Fixstars Amplify
U->>A: ommx.v1.Instance
A->>U: amplify.Model
U->>P: amplify.Model and parameters for solvers;
P->>P: Solve with Fixstars Amplify
P->>U: amplify.Result
U->>A: amplify.Result and variable_map
A->>U: ommx:State
For example, the following problem formulated in OMMX can be solved using Fixstars Amplify.
from ommx.v1 import Instance, DecisionVariable
from ommx_fixstars_amplify_adapter import OMMXFixstarsAmplifyAdapter
q_0 = DecisionVariable.binary(id=0, name="q_0")
q_1 = DecisionVariable.binary(id=1, name="q_1")
ommx_instance = Instance.from_components(
decision_variables=[q_0, q_1],
objective=q_0 * q_1 + q_0 - q_1 + 1,
constraints=[q_0 + q_1 == 1],
sense=Instance.MAXIMIZE,
)
token = "***FIXSTARS AMPLIFY TOKEN***"
solution = OMMXFixstarsAmplifyAdapter.solve(ommx_instance, amplify_token=token)
print(solution.decision_variables_df)
Solve problems formulated in Fixstars Amplify SDK with other solvers
The ommx-fixstars-amplify-adapter allows problems formulated in Fixstars Amplify SDK to be solved in other solvers.
sequenceDiagram
participant U as User
participant A as Adapter
participant O as Other OMMX toolchain
U->>A: amplify.Model
A->>U: ommx.v1.Instance
U->>O: ommx.v1.Instance and parameters for other solver
O->>O: Solve the instance with other solver using other adapter
O->>U: ommx.v1.State
For example, the following mixed integer programming problem formulated in Fixstars Amplify SDK can be solved using PythonMIP.
import amplify
from ommx_fixstars_amplify_adapter import model_to_instance
from ommx_python_mip_adapter import OMMXPythonMIPAdapter
UPPER = float("inf")
LOWER = 0.0
gen = amplify.VariableGenerator()
x = gen.scalar("Integer", bounds=(LOWER, UPPER), name="x")
y = gen.scalar("Real", bounds=(LOWER, UPPER), name="y")
model = amplify.Model()
model += -10 * x - y
model += amplify.less_equal(x, 1)
model += amplify.less_equal(20 * x + y, 100)
ommx_instance = model_to_instance(model)
solution = OMMXPythoMIPAdapter.solve(ommx_instance)
print(solution.decision_variables_df)
[!NOTE] Currently, the
model_to_instancefunction does not support Ising variables. Therefore, if your model contains Ising variables, you must convert them to binary variables. The following function can be used for this conversion.import typing import amplify def ising_to_binary( model: amplify.Model ) -> typing.Tuple[amplify.Model, amplify.Result.ModelConversion.IntermediateMapping]: ising_to_binary_settings = { amplify.VariableType.Binary: amplify.Degree.HighOrder, amplify.VariableType.Ising: amplify.Degree.Zero, amplify.VariableType.Integer: amplify.Degree.HighOrder, amplify.VariableType.Real: amplify.Degree.HighOrder, } return model.to_intermediate_model( amplify.AcceptableDegrees( objective=ising_to_binary_settings, # type: ignore equality_constraints=ising_to_binary_settings, # type: ignore inequality_constraints=ising_to_binary_settings, # type: ignore ) )
For Developer
The packages required for development can be installed as follows:
uv sync --all-extras
Use the following commands to test, lint and format.
uv run pytest
uv run ruff check
uv run ruff format
Release files for ommx-fixstars-amplify-adapter 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ommx_fixstars_amplify_adapter-0.4.0.tar.gz | 103.4 kB | Details |
Release files / ommx_fixstars_amplify_adapter-0.4.0.tar.gz
| Download URL | ommx_fixstars_amplify_adapter-0.4.0.tar.gz |
|---|---|
| Size | 103.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d24c6edef0fab6957943043d9333a03a6f56a9d4c01e325f4cb6f404cdd0946
|
|
BLAKE2b-256 checksum How to use checksums |
e9adc5ed22b75b7ff863c5d1d4e605579d7dbeef7bd92d46649fca10037ff2f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 25, 2025.
Transparency log