我一直在寻找解决问题的方法,这个问题显然比我最初想象的要罕见。 Optaplanner看起来很有前途,但是由于对Java相对缺乏经验,因此我想研究一下这是否完全不可能,然后再深入研究。
我正在尝试为n名工作人员安排任务。这里的主要区别是,目的是在任何给定时间使所有员工忙碌。完成任务所花费的时间在此非常次要。这就形成了具有以下变化的垃圾箱包装/维修店问题:
1维
任务之间的“相互关系”。例如一个任务可能在开始之前依赖于另一个完成,并且此任务可能归因于其他工作人员
每个任务只能归因于某些人
任何给定时间跨箱的最小值应最大化
因此,我认为您需要为一项任务输入的信息是“最早开始时间”,“最新完成时间”,“持续时间”,“与其他任务的链接”,“合适的工作人员”。然后,任务应该像每个俄罗斯方块一样落入每个员工的工作区中!
显然,这与我已阅读的调度示例有所不同。您认为这是可以实现的吗?您有没有建议您从中开始的现有示例(手册中没有一个完全匹配)?
任何朝着正确方向前进的人都会受到赞赏-对于这个问题的初学者性质的歉意。
最佳答案
“使所有成员尽可能忙”的约束听起来像是公平或负载平衡约束:有关如何实现该约束的信息,请参见this video。
起始/结束时间听起来像VRP的time windows。