我正在写一个lpproblem,我需要创建一个约束,其中某些变量的总和是100 ... 100、200、300 ...
的倍数我正在尝试使用mod(),round()和int()尝试下一个表达式,但由于它们不支持lpaffine表达而无效。
probl = lpsum(如果h [2] == b])%100 == 0
probl = lpsum([[2] == b])/100 == int(lpsum([vars [vars [vars [v vars [v vars [h] for varsku)如果h [2] = h [2] == b])/100)
probl = lpsum([[2] == b])/100 == round(lpsum(lpsum([vars [vars [v vars for h [vars [h] for varsku),如果h [2] = h [2] == b])/100)
您能给我一些写这一约束的想法。
谢谢!
一种相当简单的方法:
- 引入整数变量
I
- 构建您的约束为:
probl += lpSum([vars[h] for h in varSKU if h[2] == b]) == I*100
- (根据需要约束
I
:例如I >= 1
;I <= N
)
请记住:当拥有多个约束和100个倍数时,您的约束不一定是相同的,您将需要一个辅助变量I_x
对于每个约束!
(和:您不能在纸浆或任何其他LP模型系统中使用Python的操作员(圆,int,mod,ceil,...)!规则/表格这些模型系统允许:在这种情况下 -> LpAffineExpression
)