给定的是任务(工作)和资源(人)。每个任务都有一个持续时间和一个位置。每个人都有一些时间可用于工作和起始位置。这是连续的,一个人可以在8-15之间没有任何中断。创建一种算法,用于将任务分配给资源,以便分配尽可能多的作业,并且总行程时间尽可能短。所有地点之间的旅行时间都是已知的工作和资源没有限制。
我可以使用哪种算法???
THX。
我找到的解决方案如下:
1 - 。抓住一个持续时间和locallización的任务。
。 2 - 将任务分配给同一位置的人员。
。 3 - 浏览所有任务,然后将任务分配给未分配任何匹配任务的人员 地点。
。 4 - 如果一个人没有分配任务,因为没有匹配其位置的工作 asiganará他的任务是在旅行时间最短的地方。
。 5 - 一旦所有人都分配了任务,就会收集任务并分配人员, 考虑到旅行时间最小化。
。 6 - 请记住,更多的家庭作业时间旅行时间不应超过7小时,因为 所有人的小时数从8到15。在分配任务时,您始终必须考虑此证据 一个人。
。 7 - 如果任务Z是指派一个人并且因为旅行时间很短或因为它是唯一的人 他有时间可用,Z超过可用的任务工作时间,通过其他人搜索一些 分配给(X)的任务加上分配给该人的最后一个任务的旅行时间 任务X的位置适合您可用的小时数和X适合的人员任务。
答案 0 :(得分:2)
嗯,这个问题肯定是NP-Hard,至少在一般情况下是这样。
请注意,即使您有1个人,并且您的工作位于不同的位置,并且您的人需要完成所有这些工作 - 这是Traveling Salesman Problem (TSP)。
正式减少是:
给定一个TSP实例,用一个资源(人)创建一个问题实例,所有需要花费0(或非常接近它)的时间,并且位置之间的距离保持不变。这个问题的解决方案是原始TSP问题的解决方案,反之亦然。
因此,问题是NP-Hard,没有已知的多项式解决方案,而且大多数人认为不存在。
一些可能的解决方案是启发式,例如Hill Climbing和Genetic Algorithms,或者如果您需要一个确切的解决方案 - 您将需要brute forc e - 检查所有可能性。
对于这个坏消息感到抱歉,但至少你不会寻找不存在的东西(或者至少对任何人都不了解)