在使用Python-Pulp的约束中使用mod函数

2024-09-27 23:25:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

你能给我一些写这个约束的想法吗。在

谢谢你!在


Tags: mod表达式代表varsint倍数roundlpsum
1条回答
网友
1楼 · 发布于 2024-09-27 23:25:32

一种相当简单的方法:

  • 引入一个整型变量I
  • 将约束构建为:probl += lpSum([vars[h] for h in varSKU if h[2] == b]) == I*100
  • (根据需要约束I:例如I >= 1I <= N

请记住:当有多个约束且100的倍数对约束不一定相同时,每个约束都需要一个辅助变量I_x!在

(并且:在pulp或任何其他LP建模系统(round、int、mod、ceil等)中,通常不能使用python的操作符!您必须接受这些建模系统允许的规则/形式:在本例中->;LpAffineExpression

相关问题 更多 >

    热门问题