我正在解决一个调度问题,我想为最少数量的员工分配一些任务。每个任务都有一个预定义的开始时间,因此我从当天最早的任务开始,将它们分配给员工,并更新该员工的可用时间。我重复这个循环,看看是否可以将任务分配给已经使用过的员工。如果可以,那么我计算一个成本&把它放在AP矩阵中。如果不能,我就会招来一名新员工。正如您所猜测的那样,每次迭代时,随着未分配任务的数量接近0,员工数量会增加。
启发式工作原理非常好,但需要一段时间。这是因为,例如,如果我有400个任务,其中5个不能在另一个任务之后来完成,那么第一轮有5个员工&分配给这5名员工的395项任务。为了解决这个问题,我填充矩阵,以便我的匈牙利算法有一个395x395矩阵用于输入。第二轮比较好,因为可能有25名员工和还剩375项任务......
我的问题是:如何安全地减少搜索空间?例如,当我有395个任务&只能选择5,我应该能够将搜索空间限制为最便宜的,比如10%的旅行。我的想法是通过每个员工和& “猜测”它将最终接收哪个任务(基于最低成本)。如果前一名员工已使用“猜测”,请为每个员工选择下一个最佳选项。我认为这可能有用,但我的数学并不好,所以我无法向自己证明这不会影响结果。当未分配的任务数量小于使用的员工数量时,我也不确定如何调整它。任何指导都会很棒!