截止日期最大化收入
Maximize revenue with deadline
给定三个区间变量说
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(...))
(或任何有用的东西)?
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()
给出 objective 9 因为 9=5+4
给定三个区间变量说
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(...))
(或任何有用的东西)?
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()
给出 objective 9 因为 9=5+4