是错误吗? Optaplanner 无法删除 ConstraintMatch
Is bug ? Optaplanner unable to remove ConstraintMatch
我遇到了一个问题,和这个link上的问题是一致的。
-> Optaplanner unable to remove ConstraintMatch
Exception:
org.optaplanner.core.api.score.constraint.ConstraintMatchTotal.removeConstraintMatch
调试了,hashCode和Equals都改写了,还是报错
规则:
rule "scheduleFullTimeLimit"
when
$shiftList: ArrayList() from collect (
StaffAssignment(
shiftType != null
)
)
then
scoreHolder.addSoftConstraintMatch(kcontext, -1);
end
我在我的规则中使用了收集。
这是一个错误吗?
求助
恐怕问题出在 ArrayList
上。 ArrayList 的 hashCode()
将随着集合的每次更改而更改。因此,您将得到您收到的确切消息 - OptaPlanner 正在尝试撤消不存在的内容。
你必须想办法在没有 ArrayList
的情况下如何做任何你正在做的事情。至少,不要让 ArrayList
成为规则中的最后一件事,因为我相信这是它首先进入约束匹配的原因。
我遇到了一个问题,和这个link上的问题是一致的。 -> Optaplanner unable to remove ConstraintMatch
Exception:
org.optaplanner.core.api.score.constraint.ConstraintMatchTotal.removeConstraintMatch
调试了,hashCode和Equals都改写了,还是报错
规则:
rule "scheduleFullTimeLimit"
when
$shiftList: ArrayList() from collect (
StaffAssignment(
shiftType != null
)
)
then
scoreHolder.addSoftConstraintMatch(kcontext, -1);
end
我在我的规则中使用了收集。
这是一个错误吗?
求助
恐怕问题出在 ArrayList
上。 ArrayList 的 hashCode()
将随着集合的每次更改而更改。因此,您将得到您收到的确切消息 - OptaPlanner 正在尝试撤消不存在的内容。
你必须想办法在没有 ArrayList
的情况下如何做任何你正在做的事情。至少,不要让 ArrayList
成为规则中的最后一件事,因为我相信这是它首先进入约束匹配的原因。