我需要创建一些非常类似的护理名册的例子,在光学规划师。
规划所需资源如下:
我认为最好的建模方法是,一个班次有一个列表,每个任务都需要一组技能,而每个班次都有一个任务列表。
然后Optaplanner不仅会分配护士来轮班,还会把任务组合起来并分配给轮班。
那么,我的问题是:任务是否是一个规划实体、规划变量、规划价值?
我需要修改溶剂工厂吗?如果是的话,有什么最好的建议吗?
发布于 2015-02-05 14:11:59
听起来不像有一个移位粒度,您有更小的粒度,即一个任务粒度。
在这种情况下,我会考虑让Task成为计划实体(计划变量为Employee)。问题是添加一个约束,以确保一天中的几项任务加起来很好地加到1次轮班……这有点痛苦,不仅是为了编写约束,而且也是因为元启发式方法将从自定义的迁移到交换的过程中得到很大的好处,它总是在移动中移动所有相同移位的任务(这有点像柱交换移动(参见docs),但随后对相同转换的任务进行了过滤)。
您确定在分配轮班之前,不能简单地在班次中预先定义任务吗?
至于具有多项技能要求的转移:这很简单,并且已经是OptaPlanner中示例的一部分: ShiftTypeSkillRequirement是ShiftType和技能之间的many2many关系(您可能希望将其更改为在shift和skill之间)。
https://stackoverflow.com/questions/28296579
复制相似问题