我正在写一个LpProblem,我需要创建一个约束,其中一些变量的和是100的倍数。。。100,200,300。。。在
我正在使用mod()、round()和int()尝试下一个表达式,但都不起作用,因为它们不支持LpAffineExpression。在
probl+=lpSum([vars[h]代表varSKU中的h,如果h[2]==b])%100==0
probl+=lpSum([vars[h]表示varSKU中的h,如果h[2]==b])/100==int(lpSum([vars[h]表示varSKU中的h,如果h[2]==b])/100)
probl+=lpSum([vars[h]表示varSKU中的h,如果h[2]==b])/100==round(lpSum([vars[h]表示varSKU中的h,如果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
!在(并且:在pulp或任何其他LP建模系统(round、int、mod、ceil等)中,通常不能使用python的操作符!您必须接受这些建模系统允许的规则/形式:在本例中->;
LpAffineExpression
)相关问题 更多 >
编程相关推荐