如何实现 If Then 表达式以最终在 ILOG CP 优化器的约束中使用?

How do I implement an If Then Expression to eventually use in a constraint in the ILOG CP Optimizer?

问题的简要描述。 我有很多对象,我们称这个对象为 X。 每个 X 可以分配给多个容器 Y。 每个 Y,每个 X 需要两个。 每个 X 都有一个属性 L。 每个 Y 都有其 L 级别的最低规格,即分配给特定 Y 的两个 X 必须等于或超过 Y 的 L 规格。

        X is an array of structs with field L (single value) with values 0 to 5
        Y is an array of structs with field L (single value) with values 0 to 8
        CP cp = new CP();
        IIntVar[] dies = cp.IntVarArray(X.size(), 0, 10);
        IIntVar[] YvarL= cp.IntVarArray(Y.size(), 0, 10);
        for (int i = 1; i <= Y.Lenth; i++)
        {
            IIntExpr tempL = cp.IfThen(cp.Eq(dies[0], i), cp.Sum(YvarL[i], X[0].L));
            for (int j = 1; j < X.Length(); j++)
                cp.IfThen(cp.Eq(dies[j], i), cp.Sum(YvarL[i], X[j].L);
            cp.Add(cp.Ge(YvarL[i], Y[i].L)
        }

但我在第 5 行收到错误消息 参数 2:无法从 'ILOG.Concert.IIntExpr' 转换为 'ILOG.Constraint.IConstraint'

我想要完成的是,对于所有值为 'i' 的 'dies' 决策变量,它们对应的 X 变量的 'L' 属性字段的总和必须超过'L' Y[i]的字段属性(这里dies对应X)

Opl 是正确的:cp.Sum(YvarL[i], X[0].L) 是一个 整数 表达式,而 ifThen 构造需要一个约束参数。