首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务优化算法

任务优化算法
EN

Stack Overflow用户
提问于 2013-04-21 10:34:19
回答 1查看 733关注 0票数 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. 如果包接近其截止日期,则应该分配更多的用户忽略规则1。

所以我在找方向和工具。

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

任何图书馆或工具将不胜感激。

结果应用程序可能是基于web的使用PHP,所以相关的技术是首选。

EN

回答 1

Stack Overflow用户

发布于 2013-04-21 10:43:54

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

代码语言:javascript
复制
Task1 duration = 10
Task2 duration = 20
Task3 duration = 30

我们从Task1开始,这意味着Task1在10分钟内完成,所有其他任务都会被添加到其中。

代码语言:javascript
复制
Current Total time: Task1(10) + (10 + Task2) + (10 + Task2 + Task3)

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

代码语言:javascript
复制
TaskN = TaskN-1 + TaskN.

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16130242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档