決定変数の種類

決定変数の種類#

jijmodelingは、決定変数としてバイナリ変数BinaryVarに加えて、整数変数IntegerVarおよび連続変数ContinuousVarをサポートしています。BinaryVarとは異なり、IntegerVarContinuousVarには下限と上限の設定が必要です。

import jijmodeling as jm

# 下限を0、上限を10とする整数変数
x = jm.IntegerVar("x", lower_bound=0, upper_bound=10)
# 下限を0、上限を2.5とする実数変数
y = jm.ContinuousVar("y", lower_bound=0.0, upper_bound=2.5)

また、jijmodelingは範囲内の値または\(0\)を取る半整数変数および半連続変数もサポートしています。

# 区間[3, 10]または0を取る整数変数
sx = jm.SemiIntegerVar("x", lower_bound=3, upper_bound=10)
# 区間[0.5, 2.0]または0を取る実数変数
sy = jm.SemiContinuousVar("y", lower_bound=0.5, upper_bound=2.0)

変数の下限と上限には決定変数を含まないPlaceholderまたは数値を設定することができます。

L = jm.Placeholder("Lower")
U = jm.Placeholder("Upper")
x = jm.IntegerVar("x", lower_bound=L, upper_bound=U)
y = jm.ContinuousVar("y", lower_bound=L/2, upper_bound=U*U)