You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Bavet约束流不可复现问题的技术咨询

Bavet约束流切换后的可复现性问题

我现有一套基于Drools约束流的可行解决方案,包含两类测试:

  • 约束测试:涵盖单个约束测试及使用ConstraintVerifier的组合测试
  • 集成式测试:通过求解器处理已知最优解的golden问题并断言结果

为确保环境完全可复现,我做了如下配置:

  • 采用基于步骤的终止策略
  • 设置随机种子为0
  • 局部搜索使用SA(模拟退火)
    在Drools约束流方案下,多次运行测试的结果及步骤数完全一致。

为优化性能,我尝试将约束流从Drools切换至Bavet,测试结果如下:

  • 约束测试仍全部通过,分数计算速度提升约20倍
  • 部分集成测试失败:无法找到最优解,且每次运行得到的非最优解均不同

请问Bavet实现中是否存在固有不可复现机制?例如是否使用独立的Random实例,或是依赖System.identityHashCode()这类非确定性逻辑?

我希望获得更快的分数计算速度,但可复现性是我更看重的需求。

补充说明:为适配Bavet,我用大量groupBy改写了原约束逻辑(原Drools中的map方式会抛出UnsupportedOperationException),会不会是groupBy与Bavet的组合导致了这个问题?


内容的提问来源于stack exchange,提问作者whiskeysierra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:27:21