2

我想知道是否可以使用混合整数非线性规划求解器(例如APOPT求解器)添加整数约束,例如:变量应该是 5 的倍数。

4

1 回答 1

3

您可以通过使用整数变量引入比例因子来获得 0、1、2 等以外的值。这涉及定义一个新变量 (y),例如:

from gekko import GEKKO
m = GEKKO()
x = m.Var(integer=True,lb=0,ub=10)
y = m.Intermediate(x*5)
m.Obj((y-17)**2)
m.options.SOLVER=1
m.solve()

print(y.value)

这会找到 y 的值,它是 5 的倍数并且最接近 17 的值。在这种情况下,它发现 15 是最优的。

BYU 的 John Hedengren 好心地给了我这个建议。

于 2019-04-23T11:38:53.770 回答