尝试使用 .penalizeLong 时 OptaPlanner 出现 UnsupportedOperationException

UnsupportedOperationException in OptaPlanner when trying to use .penalizeLong

我正在 java.lang.UnsupportedOperationException: Impossible state: passing long into an int impacter.

当尝试使用来自 ConstraintProvider class 的 .penalizeLong 函数时。

您有一个基于 int 的分数类型,例如 HardSoftScore。你不能用 long 匹配权重来惩罚它。

您有 2 个选择:

选项 A。如果您的匹配权重适合 int 字号,只需将 penalizeLong() 替换为 penalize()

选项B。否则,如果你需要用long匹配权重进行惩罚。在您的 @PlanningSolution 注释 class.

中将分数类型从 HardSoftScore 更改为 HardSoftLongScore