【发布时间】:2012-05-13 14:17:27
【问题描述】:
给定一家软件公司,其中开发人员在多个团队中工作 的不同项目。项目需要分配的一定技能 开发商。出于我的目的,我想保持简单并将其限制为一个 技能,即编程语言。所以有些项目需要 Java,有些项目需要 C etc. 项目有固定的工期,每个项目应该有两个开发者 分配给它。
在任何时间点,一些项目正在进行中,新项目即将到来 并且需要在未来的某个时候进行计划。我想计算一个时间表,哪些开发人员应该在什么时间从事什么项目。
我不是在寻找最佳解决方案(如果可能的话)。我很满足 有一个人类经理可以创建的时间表。
我已阅读有关资源受限调度问题的文章 和作业问题,但我很少接受正式的 CS 培训,而且我 经常会迷失在这些问题的不同变体中的所有细微差别中。
我认为我的问题是作业车间调度的更简单变体 项目,开发人员是机器,所以工作需要多台机器 同时。只有一个先例约束,即运行项目 不能中止,所以必须先完成。
从我读过的所有可能的解决方案中,我倾向于使用 遗传算法,主要是因为我读过人们用 他们,因为我前一阵子用过另一个项目。 我也读过关于线性规划的好结果,但我知道的很少 关于那个。
对于这类问题,遗传算法是否可行?还是有更好的解决方案?
【问题讨论】:
-
任务是否相互依赖? (即任务 7 需要完成任务 2 才能开始)。任务是提前知道的吗?
-
您说的任务是指项目本身吗?项目不相互依赖。在创建进度表时,所有项目都是已知的。为清楚起见,项目中的单个任务在此问题中并不重要。与 SCRUM 项目一样,当预定的持续时间过去时,项目被认为已完成。
标签: algorithm job-scheduling resource-scheduling