Choco 4:每当布尔变量被赋值或未赋值时调用一个方法



我有一个关于Choco 4 CP求解器的技术问题。

每当在搜索过程中分配或取消分配模型中的一些布尔变量时,我想调用一个方法(让我们调用它f(((。f((的目的是更新传播方广泛使用的数据结构。

我的第一次尝试是实现一个自定义的IVariableMonitor,但只有当变量被分配给0/1而不是未分配时,才会调用onUpdate方法(变量v,IEventType IEventType(。

我也尝试过使用搜索监视器,但目前没有成功。

有办法完成这项任务吗?

谢谢!

我已经找到了解决这个问题的方法。

我实际需要的是一个支持自动撤消操作的数据结构。也就是说,在分配变量时进行修改,如果触发修改的相应变量未分配,则自动恢复。

幸运的是,choco提供了这样的可回溯数据结构(请参阅org.chocosolver.util.objects(。据我所知,可回溯数据结构的状态与决策级别有关。当解算器回溯时,将恢复当前决策级别以上的任何修改。

最新更新