作业车间调度:我应该考虑哪些解决方案?

时间:2012-05-13 14:17:28

标签: algorithm job-scheduling resource-scheduling

鉴于一家软件公司,开发人员在团队中工作 不同的项目。项目需要指定的特定技能 开发人员。出于我的目的,我想保持简单并将其限制为一个 技能,即编程语言。所以有些项目需要Java,其他需要 C等项目有固定的持续时间,每个项目应该有两个开发人员 分配给它。

在任何时候,一些项目正在进行中,新项目也会进行 并且需要在未来的某个时刻进行规划。我想计算一个开发人员应该在什么项目上工作的时间表。

我不是在寻找最佳解决方案(如果可能的话)。我很满意 人事经理可以创建一个时间表。

我读过有关资源约束调度问题的文章 和分配问题,但我没有正式的CS培训,我是 在这些问题的不同变化中经常会丢失所有细微差别。

我认为我的问题是作业车间调度的更简单变化 项目,开发人员是机器,所以工作需要多台机器 同一时间。在运行项目中只有一个先例约束 不能中止,所以必须先完成。

从我读过的所有可能的解决方案中,我倾向于使用 遗传算法,主要是因为我读过人们用得到的好结果 他们,因为我前一段时间用过另一个项目。 我也读过线性编程的好结果,但我知之甚少 关于那个。

遗传算法是否适用于此类问题?或者有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

创建一个二元图,一方面是开发人员,另一方是需要项目成员。通过“需要的项目成员”,我的意思是如果项目P需要3个开发人员,您将添加3个节点,可能名为P0P1P2

如果开发人员具有该项目所需的所有技能,则在开发人员和所需项目成员之间划出优势。然后,您的问题会缩小到在此图表中找到matching;您可以使用标准算法来执行此操作。

答案 1 :(得分:0)

使用遗传算法是一种可行的方法,但它非常雄心勃勃。

greedy algorithm开头。