我想知道是否可以使用混合整数非线性规划求解器(如APOPT求解器)添加一个整数约束,例如:变量应该是5的倍数。
发布于 2019-04-23 19:38:54
您可以通过使用integer变量引入比例因子来获得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)它会找到5的倍数且最接近17的y值。在这种情况下,它会发现15是最优的。
杨百翰大学的John Hedengren好心地给了我这个建议。
https://stackoverflow.com/questions/55810350
复制相似问题