我正在写一个LpProblem,我需要创建一个约束,其中一些变量的和是100的倍数……100,200,300...
我正在尝试使用mod()、round()和int()来执行下面的表达式,但都不起作用,因为它们不支持LpAffineExpression。
probl += lpSum([如果h2 == b,则varSKU中h的varsh为b]) % 100 == 0
probl += lpSum([ varSKU中h的varsh if h2 == b]) / 100 == int(lpSum([varsh for h in varSKU if h2 == b]) )/100
probl += lpSum([varsh for h if varSKU if h2 == b]) / 100 == round(lpSum([varsh for h if h2 == b]) / 100)
你能给我一些关于写这个约束的想法吗?
谢谢!
发布于 2017-12-22 00:43:37
一种相当简单的方法:
根据需要,
I <= N
):I
:I >= 1
;
请记住:当有多个约束且100的倍数不一定与约束相同时,每个约束都需要一个辅助变量I_x
!
(还有:您通常不能在mod或任何其他LP建模系统(round、int、mod、ceil等)中使用python操作符!)你必须接受建模系统允许的规则/形式:在本例中为-> LpAffineExpression
)
https://stackoverflow.com/questions/47929215
复制相似问题