我想添加一个规划实体列表的函数作为约束。更具体地说,每个计划实体都有一个贡献x,我想实现一个约束,如果所有x贡献的总和大于x,则添加一个HARD分数,例如…
Constraint ConstraintX(ConstraintFactory constraintFactory) {
return constraintFactory
.forEach(planningEntity.class)
.filter(planningEntity-> planningEntity.get_x())
.sum().penalize("Sum of xs bigger than X",
HardMediumSoftScore.ONE_HARD,
sum > X # what goes here???
);
}
参见OptaPlanner关于约束收集器的文档。具体来说,ConstraintCollectors.sum(...)
正是您所需要的。