Python Cplex约束编程逻辑约束

Python Cplex Constraint Programming Logical Constraint

我正在Python学习Cplex CP,我有两个整数变量x和y。

我做了一些计算,找到了 x 的值,例如:

y = ..一些计算..

x = 3600 / y

我想这样做,如果x低于200(x的极限),x是3600 / y。但是,如果 x 大于 200,则 x 为 200。

我试过这些表达式:

1:

((x >= limit_x) == limit_x ) or ((x <= limit_x) == 3600 / y )

1.revised:

((x >= limit_x) == limit_x ) and ((x <= limit_x) == 3600 / y )

2:

x == 3600 / y
x <= limit_x

3:

(x <= limit_x) == 3600 / y

我找不到任何解决方案。我需要你的一点帮助。

此致,

让我mix

disjuntion and Constraint Programming

然后我得到

from docplex.cp.model import CpoModel

mdl = CpoModel(name='buses')
nbbus40 = mdl.integer_var(0,1000,name='nbBus40')
nbbus30 = mdl.integer_var(0,1000,name='nbBus30')
mdl.add(nbbus40*40 + nbbus30*30 >= 300)

mdl.add(1==mdl.logical_or(nbbus40>=7,nbbus40<=3))
mdl.minimize(nbbus40*500 + nbbus30*400)

msol=mdl.solve()

print(msol[nbbus40]," buses 40 seats")
print(msol[nbbus30]," buses 30 seats") 

这给了

3  buses 40 seats
6  buses 30 seats