简体   繁体   English

CPLEX CP 调度问题:区间变量中的浮点时间

[英]CPLEX CP Scheduling problems: Float Times in Interval Variables

I have been carrying out experiments with CPLEX ILOC CP Optimizer using **docplex for Python ** in the field of scheduling.我一直在使用 **docplex for Python ** 在调度领域使用 CPLEX ILOC CP Optimizer 进行实验。 However, as far as CPLEX doc states, interval variables must be defined by integer values (start, duration, end).但是,就 CPLEX 文档所述,区间变量必须由 integer 个值(开始、持续时间、结束)定义。

Thus, my question is about the possibility of introducing float values for times in docplex, since in my case activities average durations are defined by floating-point numbers.因此,我的问题是关于在 docplex 中为时间引入浮点值的可能性,因为在我的例子中,活动平均持续时间是由浮点数定义的。 As far as I know, I have not found any source that talks about how to work it around.据我所知,我还没有找到任何关于如何解决它的资源。

Thanks in advance.提前致谢。

with CPOptimizer you can use decimal decision variables as a workaround.使用 CPOptimizer,您可以使用十进制决策变量作为解决方法。

from docplex.cp.model import CpoModel

mdl = CpoModel(name='buses')

#now suppose we can book a % of buses not only complete buses

scale=100
scalenbbus40 = mdl.integer_var(0,1000,name='scalenbBus40')
scalenbbus30 = mdl.integer_var(0,1000,name='scalenbBus30')

nbbus40= scalenbbus40 / scale
nbbus30= scalenbbus30 / scale

 

mdl.add(nbbus40*40 + nbbus30*30 >= 310)
mdl.minimize(nbbus40*500 + nbbus30*400)

msol=mdl.solve()

print(msol[scalenbbus40]/scale," buses 40 seats")
print(msol[scalenbbus30]/scale," buses 30 seats")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM