Php 任务优化算法
我有一个资源优化任务如何组织几个用户在动态任务上的工作 以下是实体结构: 有几个项目Php 任务优化算法,php,optimization,task,Php,Optimization,Task,我有一个资源优化任务如何组织几个用户在动态任务上的工作 以下是实体结构: 有几个项目 项目{id,name} 每天都有几个任务包: Package{id、名称、项目id、到达日期、截止日期} Task{id,包id,内容,估计时间} 用户对每个项目有不同的技能水平和认可度: 用户{id,name} User2Projects{id,user\u id,project\u id,速度,优先级} UsersDayPlan{id,user\u id,日期,from\u time,to\u time}
项目{id,name}
每天都有几个任务包:Package{id、名称、项目id、到达日期、截止日期}
Task{id,包id,内容,估计时间}
用户对每个项目有不同的技能水平和认可度:用户{id,name}
User2Projects{id,user\u id,project\u id,速度,优先级}
UsersDayPlan{id,user\u id,日期,from\u time,to\u time}
目标是构建一个应用程序/算法来优化任务分配
所有用户,以便每个包都在截止日期前完成(或尽可能接近)
编辑:我在这里看到了几个约束规则:
1.任务应交给获得项目批准并具有最高技能水平的人员。
2.若程序包接近其截止日期,则应忽略规则1分配更多用户 所以我在寻找方向和工具 在我看来,这是一个“经典”的数学问题,对于这类任务应该有一些算法 任何图书馆或工具将不胜感激
结果应用程序可能是基于web的,使用PHP,因此首选相关技术 这实际上是一个非常常见的问题,也是一个关于。实际上,最佳解决方案是只执行部分任务,但当您没有该选项时,您可以采用一些贪婪策略。一种产生好结果的方法是从最短的任务开始,直到最长的任务。请这样看:
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.
因此,您希望重复使用最低值。因此,您可以从最小的任务开始,以确保所有其他任务的等待时间最短。这实际上是一个非常常见的问题,并且是一个不同的问题。实际上,最佳解决方案是只执行部分任务,但当您没有该选项时,您可以采用一些贪婪策略。一种产生好结果的方法是从最短的任务开始,直到最长的任务。请这样看:
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.
因此,您希望重复使用最低值。所以你从最小的开始,以确保所有其他任务的最小等待时间。我也在考虑背包问题。在这里,我们有许多同时工作的用户,每个任务/项目都有不同的技能水平。。因此,线性排序的变量变得很多。你是说有些人比其他人有更高的优先级?是的@Chris任务按项目分开,每个用户只对一些项目有批准权,每个项目的技能水平不同(一些用户在项目上完成单个任务的速度比其他用户快2倍)。参见
User2Project
EntityI正在考虑的背包问题。在这里,我们有许多同时工作的用户,每个任务/项目都有不同的技能水平。。因此,线性排序的变量变得很多。你是说有些人比其他人有更高的优先级?是的@Chris任务按项目分开,每个用户只对一些项目有批准权,每个项目的技能水平不同(一些用户在项目上完成单个任务的速度比其他用户快2倍)。请参见User2Project
实体