Concat optaplanner 约束流

时间:2021-05-18 08:28:48

标签: java optaplanner

是否可以连接两个具有相同基数和相同类型的约束流?

例如,我有一个包含所有计划团队的约束流:

BiConstraintStream <Team, Long> plannedTeams(ConstraintFactory constraintFactory) {
    return constraintFactory.from(Team.class)
        .ifExists(Planning.class, Joiners.equal(team -> team, Planning::getTeam))
        .groupBy(team -> team, Team::getCountPeople)
}

以及包含所有未计划团队的流。

BiConstraintStream <Team, Long> nonPlannedTeams(ConstraintFactory constraintFactory) {
    return constraintFactory.from(Team.class)
        .ifNotExists(Planning.class, Joiners.equal(team -> team, Planning::getTeam))
        .groupBy(team -> team, team -> team.getCountPeople()/2)
}

现在我想通过对计划团队和非计划团队的数量求和来设置总计数的约束,例如,

Constraint constraintOnCount(ConstraintFactory constraintFactory) {
    return plannedTeams(constraintFactory).concat(nonPlannedTeams(constraintFactory))
        .groupBy(sum((team, count)->count))
        .filter(count -> count > 5)
        .penalize("too many people", HardSoftScore.ONE_HARD, count -> count - 5)

}

有没有办法做到这一点?

0 个答案:

没有答案
相关问题