Java 如何在Choco中搜索时创建/发布和删除/取消发布约束
我在Choco solver中有一个项目,但我对搜索过程中的外部影响有一个问题 我有一张规划图,上面有(比方说)层层组织的布尔瓦和分配给各层的持续时间,这意味着有些动作开始,有些动作结束。变量选择从计划结束到计划开始是静态的(层中操作的选择是任意的) 我正在研究一种使用单纯形算法来帮助分配持续时间的解决方案,比如在动作a的开始和结束之间,我们需要一个等于N的持续时间。在这两者之间还有一些约束 附加约束是基于布尔值的实例化创建的,但是它们是在外部矩阵中组织的,因此当添加动作A的结束动作时,实际上会向矩阵中添加一个附加行,并重新设置当前约束。回溯时,我们希望以相反的方式修改矩阵,即删除行并取消约束Java 如何在Choco中搜索时创建/发布和删除/取消发布约束,java,constraints,planning,choco,Java,Constraints,Planning,Choco,我在Choco solver中有一个项目,但我对搜索过程中的外部影响有一个问题 我有一张规划图,上面有(比方说)层层组织的布尔瓦和分配给各层的持续时间,这意味着有些动作开始,有些动作结束。变量选择从计划结束到计划开始是静态的(层中操作的选择是任意的) 我正在研究一种使用单纯形算法来帮助分配持续时间的解决方案,比如在动作a的开始和结束之间,我们需要一个等于N的持续时间。在这两者之间还有一些约束 附加约束是基于布尔值的实例化创建的,但是它们是在外部矩阵中组织的,因此当添加动作A的结束动作时,实际上会
有没有办法在Choco中实现这种复杂行为?如果布尔值设置为true,您是否提前知道会触发什么约束?如果是,请使用具体化(在开始时创建约束,但将它们与布尔值关联,而不是发布它们)
有关Choco Solver的专业支持,您可以联系很遗憾,具体化无法解决此问题。我通过我的模型广泛地使用它,但这是不同的。它会在实例化时触发一个外部操作,并在回溯时触发一个反向操作。1)您应该能够使用solver.\u post(false,c)动态创建和发布约束,以便在回溯时将其删除(请参阅javadoc)。2) 您还可以使用IOOperation触发自定义操作(如将按钮涂成红色,并在回溯时将其恢复为绿色):-执行您必须执行的操作(例如将stuf涂成红色)-执行环境。保存(新IOOperation(参考中的颜色))。。。你可以用lamda。。。该代码将在回溯时调用,在您的情况下,您将添加/删除行而不是着色,我只是想表明您实际上可以做任何事情。我明白了吗?:-)