使用Python Pulp在约束中使用MOD函数



我正在写一个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

最新更新