我有一个使用impactConfigurable的约束,但是SingleConstraintAssertion接口只支持测试约束是否奖励或惩罚。例如,我不能做以下工作:
constraintVerifier.verifyThat(myConstraint).given(obj1, obj2).impactsBy(1);或
constraintVerifier.verifyThat(myConstraint).given(obj1, obj2).impactsBy(-1);有办法绕道吗?
我使用的是OptaPlanner版本8.25.0.Final。
发布于 2022-10-13 11:05:34
那是故意的。不管你的约束是惩罚、奖励还是影响,最终的结果仍然是惩罚还是奖励。因此,在测试中,您需要指定预期的结果。例如,如果您预期会产生负面影响,那么实际上,您期待的是一种惩罚:
constraintVerifier.verifyThat(myConstraint).given(obj1, obj2).penalizesBy(1);顺便提一句:我们真的很好奇现实世界中的约束实际上需要使用impact()而不是penalize()或reward()。我们无法同时想到任何现实的限制,这将是积极的和消极的。
https://stackoverflow.com/questions/74053615
复制相似问题