繁体   English   中英

用于工作人员任务调度的Optaplanner规划和影子变量

[英]Optaplanner planning and shadow variables for worker task scheduling

首先,为了进行分数计算,我使用Java EasyScoreCalculator接口,并使用Java API创建求解器(因为我在从Java OSGI插件中的 xml或drl文件加载配置/约束时遇到了/遇到了问题)

我的问题:

我想解决一个多技能工人任务调度问题

我确实有一组任务,每个任务都需要一项技能,只有具有所需技能一个工人 (一个工人可以拥有多个技能)才能执行。 同样,工人一次只能完成一项任务,因此一项又一项。

应该 给定的日期范围内 计划任务的开始结束日期

解决方案:我想优化 所有工作人员总体工作量(分钟)

目前,我确实有三个计划变量:

  • 分配的工人
  • 开始日期
  • 结束日期

由于我想最大程度地减少工作量,因此无法使用任务的估计工作时间将开始和/或结束日期计算为影子变量,因为应该可以一天加班。

为此,我创建了一个影子变量taskToWork (任务列表),当将资源分配给计划变量分配的worker时,将为其添加任务。

在我的Java Score类中,我遍历该列表,并根据可用时间为每个任务(具有开始和结束日期-不为null)计算工人每天的工作时间。 工作时间少于可用时间就可以了,超过可用时间将导致softScore,超过一天的最大工作时间将导致hardScore。

在评分类中进行计算真的很烦人,因为计划变量可以为null,所以我必须先检查计划变量是否为null并继续此步骤,否则它可以进行计算。

我也认为没有时间表设计模式可以解决我的问题(如果您认为与众不同,请更正我)

所以也许有人可以告诉我,

  • 是否只有设置了所有计划变量后才可以计算分数?
  • 安排开始日期和结束日期是否更好?
  • 或计算工作时间并可能加班?
  • 只有设置了两个依赖的计划变量(任务的开始和结束日期)时,才可以计算影子变量(工人每天的工作时间)的方法?

谢谢

1)任何分数计算器都必须能够计算半初始化解决方案的分数。 否则,在分配完所有内容之前,CH将是盲目的-因此,这基本上是随机初始化(=不好)。

2)和3)我只是斜着看它,所以我不细说细节,但要看两个示例:项目作业计划和任务分配。 两者都使用链接的时间模式。

4)是的,这是可能的。 假设C依赖于A和B。如果A或B为空,则C为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM