我正在尝试将this code中的班次调度问题改编为使用不同长度的班次,但是我没有成功。包含此功能的最佳方法是什么?
在代码中,我们在以下部分(第194行)中输入shitfs的类型:
shifts = ['OFF', 'MORNING', 'AFTERNOON', 'NIGHT']
告知需求的代码如下:
weekly_cover_demands = [
(2, 3, 1), # Monday
(2, 3, 1), # Tuesday
(2, 2, 2), # Wednesday
(2, 3, 1), # Thursday
(2, 2, 2), # Friday
(1, 2, 3), # Saturday
(1, 3, 1), # Sunday
]
只有在该轮班中需要一些员工时,此代码段才会收到,但是在我的问题中,我要求轮班时间不同(例如7和8个小时)。
我尝试了两种方法(到目前为止没有成功):
weekly_cover_demands = [
(2, 3, 1, 7), # Monday
(1, 0, 1, 8), # Monday
(2, 3, 1, 7), # Tuesday
(2, 0, 1, 8), # Tuesday
(2, 2, 2, 7), # Wednesday
(1, 1, 1, 8), # Wednesday
(3, 3, 3, 7), # Thursday
(2, 3, 1, 8), # Thursday
]
weekly_cover_demands = [
([2, 1], [3, 0], [1, 1]), # Monday
([2, 2], [3, 0], [1, 1]), # Tuesday
([2, 1], [2, 1], [2, 1]), # Wednesday
([3, 2], [3, 3], [3, 1]), # Thursday
]
但是它们都不是很好。
如何利用or-tools的优势来包含此功能?
答案 0 :(得分:0)
我相信您会误解(2,3,1)的语义。 这意味着2个早班,3个下午和1个晚上。
在后面加上一个数字将无济于事。