给定三个区间变量
a = mdl.interval_var(name='a',start=(0,10),end=(0,10),size=5) #have revenue of 10
b = mdl.interval_var(name='b',start=(0,10),end=(0,10),size=5) #have revenue of 5
c = mdl.interval_var(name='c',start=(0,10),end=(0,10),size=5) #have revenue of 4每一个代表一个生产a、b和c产品的过程。a、b、c分别为10、5、4创造了收入。我们有一个6的最后期限--这意味着,不管end>=6的产品是什么,都不会计算在总收入上。如果我们有
a (start=1, end=6, size=5, length=5)
b (start=0, end=5, size=5, length=5)
c (start=0, end=5, size=5, length=5)然后总收入是5+4=10 (因为产品a有end=6 (满足end>=6) )
下面是一个初始代码:
from docplex.cp.model import CpoModel
mdl = CpoModel()
a = mdl.interval_var(name='a',start=(0,10),end=(0,10),size=5) #have revenue of 10
b = mdl.interval_var(name='b',start=(0,10),end=(0,10),size=5) #have revenue of 5
c = mdl.interval_var(name='c',start=(0,10),end=(0,10),size=5) #have revenue of 4
mdl.add(mdl.maximize(...))#how to write this line
msol = mdl.solve(FailLimit=100000, TimeLimit=10)
msol.print_solution()我们如何才能完成我在mdl.add(mdl.maximize(...)) (或任何有用的)行中描述的内容?
发布于 2021-06-15 14:50:01
from docplex.cp.model import CpoModel
mdl = CpoModel()
deadline=5
a = mdl.interval_var(name='a',start=(0,10),end=(0,10),size=5) #have revenue of 10
b = mdl.interval_var(name='b',start=(0,10),end=(0,10),size=5) #have revenue of 5
c = mdl.interval_var(name='c',start=(0,10),end=(0,10),size=5) #have revenue of 4
mdl.add(mdl.start_of(a)==1)
mdl.add(mdl.maximize(mdl.presence_of(a)*(mdl.end_of(a)<=deadline)*10+
mdl.presence_of(b)*(mdl.end_of(b)<=deadline)*5+
mdl.presence_of(c)*(mdl.end_of(c)<=deadline)*4))
msol = mdl.solve(FailLimit=100000, TimeLimit=10)
msol.print_solution()给出自9=5+4以来的目标9
https://stackoverflow.com/questions/67987240
复制相似问题