0

我有一个资源优化任务如何组织几个用户在动态任务上的工作。

这是实体结构:有几个项目
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}

目标是构建一个应用程序/算法来优化在所有用户之间分配的任务,以便每个包都在截止日期之前完成(或尽可能接近)。

编辑:
我在这里看到了几个约束规则:
1.任务应该交给获得项目批准并具有最高技能水平的人。
2. IF包快到截止日期了,应该分配更多的用户,忽略规则1。

所以我正在寻找方向和工具。

在我看来,它是一个“经典”数学问题,应该有一些算法来处理这类任务。

任何库或工具将不胜感激。

结果应用程序可能是使用 PHP 的基于 Web 的,因此首选相关技术。

4

1 回答 1

3

这实际上是一个非常常见的问题,是0/1 背包问题的变体。实际上,最佳的解决方案是只做部分任务,但是当你没有那个选项时,你可以采用一些贪婪的策略。产生良好结果的一种方法是从最短的任务开始,直到最长的任务。像这样看:

Task1 duration = 10
Task2 duration = 20
Task3 duration = 30

我们从 开始Task1,意思Task1是在 10 分钟内完成,所有其他任务都加了 10 个。

Current Total time: Task1(10) + (10 + Task2) + (10 + Task2 + Task3)

如您所见,当您完成一项任务时,所有其他任务必须等待所需的时间,或者:

TaskN = TaskN-1 + TaskN.

从那时起,您希望重复最低值。因此,您从最小的开始,以确保所有其他任务的等待时间最短。

于 2013-04-21T10:43:54.317 回答