1

我在 Java 中使用 Cplex,并希望最小化两个矩阵中元素的乘积之和(具有相同索引的元素的乘积)。

x[n][n] 包含决策变量 [0, 1]

cost[n][n] 包含从 i 到 j 的路径的成本

我想最小化所有 i..n 的成本总和 x[i][j] * j[i][j]; j..n.

我创建了这样的变量:

[...]
static double   lb = 0.0;
static double   ub = 1.0;
static double   cost[][] = new double[n][n];

IloNumVar[][] x = new IloNumVar[n][n];
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                x[i][j] = cplex.numVar(lb, ub);
                }
        }

我的问题是我不知道如何创建最小化部分。

我发现一些似乎与我的问题(Cplex c++ 多维决策变量)非常相似的东西,但由于我对 c++ 不熟悉,因此我没有得到任何解决方案。

4

1 回答 1

2

这应该这样做:

IloLinearNumExpr obj = cplex.linearNumExpr();

for (int i = 0; i < n; i++) {
  for (int j = 0; j < n; j++) {
    obj.addTerm(cost[i][j], x[i][j]);
  }
}

cplex.addMinimize(obj);

于 2013-07-26T04:03:33.360 回答