首页 > 解决方案 > 约束多个 IntVarArray

问题描述

我正在使用模型中的几个 IntVarArray-s,它们的元素之间存在交叉依赖关系。这是将它们用作 MakePhase 方法的参数的正确方法吗?

var nr = 10;
var fLoc = s.MakeIntVarArray(nr, 0, 1);
var gLoc = s.MakeIntVarArray(nr, 0, 1);
// ... create other arrays

// ... constrain the arrays

// collect them
var decisions = new IntVarVector();

decisions.AddRange(fLoc);
decisions.AddRange(gLoc
//... add other arrays to decisions

// call MakePhase
solver.MakePhase(decisions, ...);

标签: or-tools

解决方案


是的,这行得通。

请确保订单是正确的,或者选择动态的变量选择策略,例如 CHOOSE_MIN_SIZE_LOWEST_MIN。


推荐阅读