2013-07-26 75 views
1

我在Java中使用Cplex並希望最小化來自兩個矩陣(具有相同索引的元素的乘積)的元素乘積的總和。Cplex java多維決策變量,最小化

X [N] [N]包含decisionvariables [0,1]

成本[N] [N]中包含的方式的成本從i到j

我希望儘量減少的總和成本x [i] [j] * j [i] [j]所有i..n; 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++ multidimensional decision variable),但由於我對C++不熟悉,我沒有從中得到任何解決方案。

回答

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);