0

我有一组约束,例如:

x1 >= x2 + x3 + x4;x2>= x3 + x4 + x7;x3 >= x4 + x5;等等。

对于每个变量,都有一个数组存储将在约束 RHS 中使用的变量列表。也就是说,对于变量 1,数组包含 array[1] = {2, 3, 4}。为了在 c++ 中实现这一点,我使用了 IloNumExpr,但它不起作用:

IloNumExpr Constraint(env);
for (int i = 0; i < 3; i++){
     for(int j = 0; j < array_size[i]; j++)
        {
            Constraint += x[array[i][j]];
        }
        model.add(x[i] >= Constraint);
} 

我在这里做错了什么?

谢谢

4

1 回答 1

0

当你说它不起作用时,你得到了什么?我猜你的问题是你只是在一个 IloNumExpr 中积累越来越多的东西。也许您应该将 IloNumExpr 声明放在您的外循环中?

我总是发现使用 cplex.exportModel() 将您的模型作为 LP 文件转储对于查看您实际构建的模型非常有用。

于 2015-05-13T05:56:38.000 回答