OMMX Python SDK 1.5.0

OMMX Python SDK 1.5.0#

Static Badge

このノートブックでは新機能について説明します。詳細についてはGitHubのリリースノートを参照してください。

評価と部分評価#

OMMXの最初のリリースから、ommx.v1.Instanceevaluateメソッドをサポートしており、Solutionメッセージを生成します。

from ommx.v1 import Instance, DecisionVariable

# OMMX APIのインスタンスを作成
x = DecisionVariable.binary(1)
y = DecisionVariable.binary(2)

instance = Instance.from_components(
    decision_variables=[x, y],
    objective=x + y,
    constraints=[x + y <= 1],
    sense=Instance.MINIMIZE
)
solution = instance.evaluate({1: 1, 2: 0})
solution.decision_variables

Python SDK 1.5.0から、Functionとその基本クラスであるLinearQuadraticPolynomialevaluateメソッドをサポートします。

f = 2*x + 3*y
value, used_ids = f.evaluate({1: 1, 2: 0})
print(f"{value=}, {used_ids=}")

これにより、関数の評価値と使用された意思決定変数のIDが返されます。いくつかの意思決定変数が不足している場合、evaluateメソッドは例外を発生させます。

try:
    f.evaluate({3: 1})
except RuntimeError as e:
    print(e)

さらに、partial_evaluateメソッドもあります。

f2, used_ids = f.partial_evaluate({1: 1})
print(f"{f2=}, {used_ids=}")

これにより、x = 1を代入することで新しい関数が作成されます。partial_evaluateommx.v1.Instanceクラスにも追加されています。

new_instance = instance.partial_evaluate({1: 1})
new_instance.objective

このメソッドは、特定の決定変数を固定して ommx.v1.Instance を作成するのに役立ちます。