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
我正在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