首先,对于我的分数计算,我使用Java EasyScoreCalculator接口并使用Java API创建我的求解器(因为我在Java OSGI Plugin内从xml或drl文件加载配置/约束时遇到了问题)
我的问题:
我想解决一个多技能工人任务调度问题。
我确实有一系列任务,每项任务都需要一项技能,只能由一名 具有所需技能的执行>(工人可以拥有多项技能)。此外,工人一次只能完成一项任务,所以一个接一个地完成任务。
任务开始和结束日期应计划 给定日期范围。
解决方案: 我想优化所有员工的总体工作量(分钟)。
目前我确实有三个计划变量:
由于我希望最大限度地减少工作量,因此可以使用任务的估计工作时间将开始和/或结束日期计算为阴影变量,因为它应该可以在一天中加班。 / p>
为此,我创建了一个影子变量 tasksToWork (Taks列表),当资源分配给计划变量分配的工作者时,将为其添加任务。
在我的Java Score类中,我遍历列表并根据可用时间计算每个任务(具有开始和结束日期 - 不为空)每天工作人员的工作时间。 工作时间少于可用时间是可以的,高于可用时间将导致softScore和hardScore中一天的最大工作时间。
在得分类中计算真的很烦人,因为计划变量可以为空,所以我必须首先检查计划变量是否为空并继续此步骤,否则它可以计算。
另外我认为没有time scheduling design pattern可以用于我的问题(如果你认为不同,请纠正我)
所以也许可以告诉我,
谢谢
答案 0 :(得分:0)
1)任何分数计算器必须能够计算半初始化解决方案的分数。否则CH将是盲目的,直到所有内容都被分配 - 因此基本上是随机初始化(=坏)。
2)& 3)我只是对角地阅读它,所以我不了解细节,但是看看2个例子:项目作业调度和任务分配。两者都使用链式时间模式。
4)是的,这是可能的。假设C依赖于A和B.如果A或B为空,则C为空。