Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 任务优化算法_Php_Optimization_Task - Fatal编程技术网

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
实体