我有一个资源优化任务,如何组织几个用户对动态任务的工作。
以下是实体结构:有几个项目
Projects{id,name}
每天都有几个任务包:
Package{id,name, project_id,arrival_date, deadline_date}
Task{id,package_id,content, estimated_time}
用户对每个项目都有不同的技能水平和批准:
User{id, name}
User2Projects{id, user_id, project_id, speed, priority}
UsersDayPlan{id, user_id, date, from_time, to_time}
目标是构建一个应用程序/算法来优化所有用户之间的任务分配,这样每个包都能在截止日期之前完成(或者接近于可实现的)。
编辑:
我在这里看到了几条约束规则:
所以我在找方向和工具。
在我看来,这是一个“经典”的数学问题,对于这类任务,应该有一些算法。
任何图书馆或工具将不胜感激。
结果应用程序可能是基于web的使用PHP,所以相关的技术是首选。
发布于 2013-04-21 10:43:54
这实际上是一个非常常见的问题,也是0/1背包问题上的一个变化。实际上,最优的解决方案是只做部分任务,但是当你没有这个选项时,你可以使用一些贪婪的策略。产生好结果的一种方法是从最短的任务开始,一直到最长的任务。这样看吧:
Task1 duration = 10
Task2 duration = 20
Task3 duration = 30我们从Task1开始,这意味着Task1在10分钟内完成,所有其他任务都会被添加到其中。
Current Total time: Task1(10) + (10 + Task2) + (10 + Task2 + Task3)如您所见,当您完成一项任务时,所有其他任务都必须等待所需的时间,或者:
TaskN = TaskN-1 + TaskN.然后,您希望有最低的值重复。因此,您从最小的开始,以确保所有其他任务的最小等待时间。
https://stackoverflow.com/questions/16130242
复制相似问题