【问题标题】:Optaplanner ConstraintsStream penalize with negative integerOptaplanner ConstraintsStream 用负整数惩罚
【发布时间】: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


【解决方案1】:

我们正在通过允许新方法的否定参数来解决此问题,请参阅并跟踪 https://issues.redhat.com/browse/PLANNER-1864

【讨论】:

  • 感谢您的快速修复!!!在测试它时,我遇到了我在 Jira 中描述的异常。
猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多