我想知道是否可以使用混合整数非线性规划求解器(例如APOPT求解器)添加整数约束,例如:变量应该是 5 的倍数。
问问题
87 次
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 回答