我正在寻找可以执行以下操作的算法(希望是.net实现): 我有以下数据:
给予一份新工作(具备所需技能),我应该检查是否有新工作并分配给任何技术人员(只要技能支持,以前的工作可能会在技术人员之间移动)。也不能超过服务时间窗口,因此1小时的工作不能安排在11:30
最初我想过做包装FFD变种我是预先加载垃圾箱(技术人员),当我找工作箱时,我也会检查技能匹配。作业列表将包含所有先前的作业和新的作业(按大小降序排序),并且代码停止,因为作业无法放入任何bin中,或者在所有作业都已安排完成后结束。
理论上它可以工作,但后来我想到了以下场景:
可能会发生一种情况,即J1被分配给T1,然后J2无法适应。
所以我考虑在作业列表中添加第二种类型:作业将按大小递减排序,然后按实际可以升序的资源数量排序。这将使J2首先安排,因为较少的技术人员可以做到这一点。
是否有解决此问题的特定算法或我的方法是否足够好?
由于
答案 0 :(得分:1)
看看Constraint Satisfaction Problems。您的问题属于该类别。
此外,要快速查看问题类和一些玩具示例,请查看here。
This是(公开发布的)章节,其中载有幻灯片。
您需要的约束或多或少以下(以非正式方式编写):
然后是关于技术人员和可用时间段的限制,最终是关于技术人员和位置的限制(问题应该解决的地方)。