如何解决是bug吗? Optaplanner 无法删除 ConstraintMatch
我遇到了一个问题,与此链接上的问题一致。 -> Optaplanner unable to remove ConstraintMatch
例外:
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
成为规则中的最后一件事,因为我相信这是它首先进入约束匹配的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。