为下一个作业具有不同产品宽度的作业添加软分数惩罚

问题描述 投票:0回答:1

我对 Java Streams 不太了解,我现在正在学习它,但如果有人有建议,我正在尝试解决这个问题:

假设我正在做作业调度,每个作业都有一个宽度X。当我们做一个不同宽度的新作业时,机器必须重新配置,所以我们更喜欢连续做所有宽度X的作业。如果队列中的下一个作业具有不同的宽度,我正在尝试设置软分数惩罚。

 private Constraint customConstraint(ConstraintFactory constraintFactory) {
    return constraintFactory.forEach(Job.class)
        //filter down to jobs whose next job has a different width
        .penalize(HardSoftScore.ONE_SOFT)
        .asConstraint("Width change");
}

或者,如果我们以 hello world 快速入门为例,当老师必须换房间时的惩罚。有人有建议吗?谢谢你。

java optaplanner timefold
1个回答
0
投票

我想说你应该调整你的域模型以使用 PlanningListVariable 将作业分配给机器。这将为您提供上一个/下一个元素参考,并允许在比较作业宽度的约束中编写过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.