【发布时间】:2020-02-15 20:46:54
【问题描述】:
在我的带有约束流分数计算的 Optaplanner 项目中,用户可以定义约束的 penaltyScore,可以是负数或正数。
是否有penalize 的中性变体(据我所知,它只接受非负整数)还是必须始终拥有某事。丑陋的样子:
if(penaltyScore>0){
... penalize(...);
} else{
... reward(...);
}
【问题讨论】:
-
这很有趣。什么样的约束既会惩罚又会奖励?我们最近决定没有人愿意这样做(显然我们错了)并为此在 OptaPlanner 中引入了快速失败。如果你能解释使用约束,它会让我们理解这一点。
-
我在一个时间表应用程序上,用户应该能够以灵活的两步方式定义约束。首先,他定义了一个
MatchingCondition,然后定义了一个正或负的score,表示他是否希望满足MatchingCondition。我想到的真实世界用例是:教师 A 在时隙 1+2 上缺席,而教师 B 只在时隙 1 + 2 上可用。因此用户可以对两者使用相同的 MatchingCondition(教师计划在时隙 1 + 2 上)约束。 -
我想到的另一个软约束是主题 A + B 不应该在同一天(现实示例),而主题 C+D 应该在同一天(我不知道这是否有人想要非常现实定义第二个。)顺便说一句,非常感谢社区的大力支持!
-
感谢您的用例描述,您说服了我们。
@ConstraintWeight在那里无济于事,因为这适用于该约束的所有实例。您需要让matchWeight双向摆动。
标签: optaplanner